servant
这里的服务者,具体指的是服务调用方,服务提供方. 一般来说俩者是 成对出现的.
Service Discovery principle
目标:
服务消费者感知到服务提供者地址的变化:
可以看作 MySql . 每次有服务启动的话,则在MySql中添加一条记录.
通过MySql,可以获取到所有的服务的信息.
比如:服务名字,IP地址,端口号,状态信息等
1. 服务调用方缓存 服务发现组件 提供的 服务提供方的地址
2. 每次服务提供方向服务发现组件发送心跳,发送自己的信息
Nacox
Outline
nacos 是一个服务发现组件,也是一个服务配置服务器. 解决了以下问题:
1. 服务调用方 找到 服务提供方 的问题
2. 管理微服务的配置
Introduced nacos
引入nacos之后的架构:
Build nacos
1. 点击 spring-cloud-alibaba-dependencies ,进入 spring-cloud-alibaba-dependencies.pom
2. 查看 nacos 依赖的版本
3. 在官网下载对应的nacos 版本
4. 双击 startup.cmd
5. 访问: localhost:8848/nacos
6. 输入账号密码: nacos nacos
Registration Service
注册服务到 nacos:
1. 添加依赖
2. 添加注解: @EnableDiscoveryClient: 此处不需要写注解
3. 书写配置
总的来说,引入依赖,写配置即可
server-addr: 不要加协议,即:http://
start up
报了个警告:
在 yml中的配置增加配置项:
application:
# 服务名称尽量使用-,而不是_ ;使用中划线,而不是下划线
name: user-service
注册成功:
DiscoveryClient
DiscoveryClient 是SpringCLoud提供的API, 无论是eureka,zuul,还是consul都可以使用.
DiscoveryClient 是SpringCloud 提供的接口. 根据服务名字获得所有的服务实例
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/getInstances")
public List<ServiceInstance> getInstances(){
List<ServiceInstance> instances = discoveryClient.getInstances("x");
return instances;
}
总结:
1. 添加 springcloud 版本管理 和cloudAlibaba 版本管理
2. 添加 nacos的依赖
3. 编写配置信息
4. 启动服务
5. DiscoveryClient: SpringCloud 提供的接口,获得所有的服务实例
5.1 其他的注册中心,诸如: consul/eureka/zookeeper 也可以使用该组件
6. 服务调用方 可以感知到 服务提供方 的实例变化:实力增减,等信息