什么是微服务的注册中心
理解注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护
心跳机制:商品服务A、B、C三个节点,每隔60s就会向注册中心发一个心跳包
比如某一天C机器挂掉,就开始维护,保证每一个服务都可用。
服务提供这provider:启动的时候向注册中心上报自己的网络信息
服务消费者consumer:启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息
为什么要用注册中心?
微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对 于动态新增机器,维护带来很大问题
主流的注册中心:zookeeper、Eureka、consul、etcd等
Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry(服务注册表)和Service Discovery(服务发现)实现。也是Spring Cloud体系中最重要最核心的组件之一。
用大白话讲,Eureka就是一个服务中心,将所有的可以提供的服务都注册到它这里来管理,其它各调用者需要的时候去注册中心获取,然后再进行调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等
服务注册(register)
服务同步(replicate)
服务续约(renew)
获取服务(get register)
服务调用(invoke server)
服务下线(cancel)
失效剔除(evict)
微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心
为社么使用Eureka
1)完全开源:经过Netflix公司的生存环境的考验,以及这么年时间的不断迭代,在功能和性能上都非常稳定,可以放心使用。
2)无缝对接:Eureka是Spring Cloud的首选推荐的服务注册与发现组件,能够达到无缝对接。
3)相互配合:Eureka 和其他组件,比如负载均衡组件 Ribbon、熔断器组件Hystrix、熔断器监控组件Hystrix Dashboard 组件、熔断器聚合监控Turbine 组件,以及网关 Zuul 组件相 配合,能够很容易实现服务注册、负载均衡、熔断和智能路由等功能。
为什么使用Eureka而不使用Zookeepre?
首先从两者适应场景说起
ZK的设计原则是CP,强一致性和分区容错性,他保证数据强一致性,但舍弃了可用性,如果出现网络问题可能会影响ZK选举,导致ZK注册中心不可用
Eureka的设计原则是AP,即可用性和分区容错性,保证了注册中心可用性,但舍弃了数据一致性,各个节点上的数据可能出现不一致问题(最终会一致)
Eureka和Zookeeper都可以提供服务注册与发现功能,两者区别
1.ZooKeeper保证的是CP,Eureka保证的是AP
ZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的
Eureka各个节点是平等关系,只要有一台Eureka就可以保证服务可用,而查询到的数据并不是最新的
自我保护机制会导致
Eureka不再从注册列表移除因长时间没收到心跳而应该过期的服务
Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(高可用)
当网络稳定时,当前实例新的注册信息会被同步到其他节点中(最终一致性)
Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像ZooKeeper一样使得整个注册系统瘫痪
2.ZooKeeper有Leader和Follower角色,Eureka各个节点平等
3.ZooKeeper采用过半数存活原则,Eureka采用自我保护机制解决分区问题
4.Eureka本质上是一个工程,而ZooKeeper只是一个进程
Eureka基本架构
1)Register Service :服务注册中心,它是一个 Eureka Server ,提供服务注册和发现的功能。
2)Provider Service :服务提供者,它是 Eureka Client ,提供服务
rver ,提供服务注册和发现的功能。
2)Provider Service :服务提供者,它是 Eureka Client ,提供服务
3)Consumer Service :服务消费者,它是 Eureka Cient ,消费服务