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的结果融合在一起返回给调用方。
访问接口可以发现,远程调用也成功了