一、SpringCloud 如何实现服务的注册?
- 首先创建一个maven主工程。
- 创建2个model工程:一个model工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client。
- 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加
- eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。
- eureka server 是有界面的,启动工程,打开浏览器访问
- 创建一个服务提供者 (eureka client)通过注解@EnableEurekaClient 表明自己是一个eurekaclient。要在配置文件中注明自己的服务注册中心的地址需要指明spring.application.name在以后的服务与服务之间相互调用一般都是根据这个name
- 启动工程,打开eureka server 的网址
二、Eureka是什么?
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
三、注册中心的页面都有哪些信息展示?
- 系统状态
- eureka集群
- 注册到eureka的服务
- JVM的信息
- 当前服务的信息
四、什么是 Spring Cloud ?
Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置。使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都能工作得非常好,小到笔记本电脑, 大到数据中心和云平台。
Spring Cloud官网的定义比较抽象,我们可以从简单的东西开始。Spring Cloud是基于Spring Boot的, 最适合用于管理Spring Boot创建的各个微服务应用。要管理分布式环境下的各个Spring Boot微服务,必然存在服务的注册问题。所以我们先从服务的注册谈起。既然是注册,必然有个管理注册中心的服务器,各个在Spring Cloud管理下的Spring Boot应用就是需要注册的client
Spring Cloud使用erureka server, 然后所有需要访问配置文件的应用都作为一个erureka client注册上去。eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。
五、Spring Cloud的核心组件有哪些?
- Eureka(nacos类似)
- Feign(OpenFeign类似)
- Ribbon
- Hystrix
- zull
六、SpringCloud和 Dubbo 的区别?
- dubbo由于是二进制的传输,占用带宽会更少
- springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大
- dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决
- springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级
- dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心用eureka或者自研(选择较少)
七、SpringBoot和SpringCloud 的关系?
- Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring Cloud是多个Spring boot微服务的集合
- Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;
- spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。
- Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。