1.什么是注册中央
随着微服务的流⾏与流量的激增, 机器规模徐徐变⼤, 并且机器会有频仍的上下线⾏为, 这种时候需要运维⼿动地去维护这个设置信息是 ⼀个很⿇烦的操作. 所以开发者们开始盼望有这么⼀个东西, 它能维护⼀个服务列表, 哪个机器上线了, 哪个机器宕机了, 这些信息都会⾃动更新到服务列表上, 客⼾端拿到这个列表, 直接进⾏服务调⽤即可. 这个就是注册中⼼. 注册中央主要有三种脚色 :
- 服务提供者:一次业务中,被其他微服务调用的服务,也就是提供接口给其他服务。
- 服务消费者:一次业务中,调用其他微服务的服务,也就是调用其他微服务提供的接口。
- 服务注册中央:用于生存server的注册信息,当server节点发生变更时,注册中央会同步变更,服务与注册中央使用一定机制通讯,如果注册中央与某服务长时间无法通讯,就会注销该实例。
他们之间的关系和工作内容可以用两个概念来形貌:
服务注册:服务提供者在启动时,向注册中央注册自身服务,并向注册中央定期发送心跳报告存活状态。
服务发现:服务消费者从注册中央查询服务提供者的地点,并通过该地点调用服务提供者的接口,服务发现的一个告急作用就是提供给服务消费者一个可用的服务列表。
2.CAP理论
CAP理论时分布式系统设计中最基础,最关键的理论。
同等性:CAP理论中的同等性是指强同等性,所有节点在同一时间具有相同的数据。
可用性:保证每个请求都有相应(相应效果可能不对)。
分区容错性:当出现网络分区后,系统仍可以大概对外提供服务。
就好比一个部门在全国各地都有岗位,总部下发一个关照,由于关照需要开会全部关照,当有客户咨询时:
所有成员对客户的回应是同等的(同等性)
客户咨询时,一定有回应(可用性)
当其中一个成员休假时,这个部门的其他成员也可以对客户提供咨询服务(分区容错性)
但是一个分布式系统不能同时满足这三个基本需求,最多满足两个,因为系统间网络不能一直保证健康,服务又必须对外保障服务,所以只能选择CP或者AP架构。
CP架构:为了保证分布式系统对外的数据同等性,于是选择不返回数据
AP架构:为了保证分布式系统的可用性,会有节点返回旧数据(即便这个数据不精确)
3.常见的注册中央
- Zookeeper: Zookeeper的官⽅并没有说它是⼀个注册中⼼, 但是国内Java体系, ⼤部门的集群环境都是依赖Zookeeper来完成注册中⼼的功能
- Eureka:Eureka是Netflix开发的基于REST的服务发现框架, 主要⽤于服务注册, 管理,负载均衡和服务故障转移
- Nacos: Nacos是Spring Cloud Alibaba架构中告急的组件, 除了服务注册, 服务发现功能之外, Nacos还⽀持设置管理, 流量管理, DNS, 动态DNS等多种特性
4.Eureka介绍
Eureka主要分为两个部门:
- Eureka Server:作为注册中央Server端,向微服务应用程序提供服务注册,发现,健康检查等本领
- Eureka Client:服务提供者,服务启动时,会向Eureka Server注册自己的信息,Eureka Server会存储这些信息。
搭建Eureka Server
引入eureka-server依赖
项目构建插件
完善启动类
设置文件
启动服务,访问注册中央
在我的这个简朴微服务系统中,有三个项目:
接下来就要把product-service跟order-service注册到eureka-server中了
服务注册
在product-service跟order-service中引入eureka-client依赖跟完善设置文件后就可以启动服务了。
可以看到这两个服务已经注册到eureka上了。
服务发现
接下来使用长途调用来使product-service返回的效果跟order-service的效果融合在一起返回给调用方。
访问接口可以发现,长途调用也成功了
5.Eureka 和Zookeeper区别
Eureka和Zookeeper都是⽤于服务注册和发现的⼯具,区别如下: 1. Eureka是Netflix开源的项⽬, ⽽Zookeeper是Apache开源的项⽬. 2. Eureka 基于AP原则, 保证⾼可⽤, Zookeeper基于CP原则, 保证数据⼀致性. 3. Eureka 每个节点 都是均等的, Zookeeper的节点区分Leader 和Follower 或 Observer, 也正因为这 个缘故原由, 如果Zookeeper的Leader发⽣故障时, 需要重新推选, 推选过程集群会有短临时间的不可⽤.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |