Eureka
Eureka是什么?
Eureka是Netflix开发的服务发现框架,是一个基于REST(一种软件架构风格,一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性)的服务。主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka本身有哪些组件
Eureka Server 和Eureka Client
服务端提供服务注册,当客户端服务启动的时候,会主动向服务端进行注册,服务端会存储所有已经注册服务节点信息。服务端会管理这些节点信息,并且会将异常的节点移除服务列表。
客户端会每隔30秒发送心跳给服务端,告诉服务端自己时可用的。如果一个服务长时间没有发送心跳,大约90秒内会被移除服务器列表。另外客户端有缓存功能,所以即便Eureka集群中所有节点都失效,或者发生网络分割故障导致客户端不能访问任何一台Eureka服务器;Eureka服务的消费者仍然可以通过Eureka客户端缓存来获取现有的服务注册信息。
无论是服务端还时客户端,都支持集群模式,注册信息和更新信息会在整个eureka集群的节点进行复制。
Eureka的优势
比较流行的服务治理框架还有zookeeper,那与之相比较,为什么偏向于选择eureka。如果用分布式架构的CAP定理(C-数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个))来说的话,eureka是偏向于AP,而zookeeper是偏向于CP。一般开发中,大多追求是高可用,那么eureka就更有优势。另外eureka集群中,如果某个服务器不可用,它不会有类似于ZooKeeper的选举leader的过程;客户端请求会自动切换到新的Eureka节点;当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中,重新同步新的服务注册即可;
注册中心
管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。有了服务中心后,任何一个服务都不能直接去相互调用,必须通过注册中心来调用:
这样一来,服务之间的相互调用就不用去维护对方的地址信息,而是由注册中心来统一管理,不容易出错,易于维护,方便集群,监控每个服务。
Eureka作为SpringCloud的注册中心
将eureka引入<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
客户端和服务端都需要,这里Springboot的版本是1.5.9.RELEASE。服务端启动类,加入@EnableEurekaServer,客户端启动类加入@EnableEurekaClient,消费客户端启动类加入@EnableFeignClients和@EnableDiscoveryClient。其他就是配置文件中的其他配置项。
由于Eureka服务集群之间会自动复制注册信息,因此在provider(客户端即服务提供端)中只需要配置一个服务器信息即可。
eureka搭配Ribbon实现客户端负载均衡,默认是采用轮询机制
https://www.jianshu.com/p/452d0374faf6
https://blog.csdn.net/yyz335258/article/details/77863145。