Nacos推导&源码分析
2021-06-22 17:17:10 0 举报
Nacos推导过程
作者其他创作
大纲/内容
服务stop
1.订单服务启动时调用注册接口,就是执行insert
service_name
2
会员服务
service-member
服务提供者 ProviderNacos Client
Nacos Server
http远程调用
order_service
订单服务192.168.0.170:50070
ip
up
1
3.根据第2步获取的订单服务列表选择一个服务进行远程调用
注册表信息(server-register)
id
服务注册
1.会员服务启动时调用注册接口,就是执行insert
如何搞
服务获取接口
50070
订单服务192.168.0.171:50070
注销服务接口
service-user
取消接口
心跳接口
定时发送心跳
192.168.0.171
注册中心(Mysql存储)
String url = \"http://locahost:8080/order/findOrderByUserId\
存在问题:(运维想打人)成百上千的微服务 nginx配置文件会变得非常复杂,运维人员内心是崩溃的。。。
注册接口
TimeTask
订单服务
service-orderlocalhost:8080
status
会员服务192.168.0.168:8080
Nginx
port
缓存订单服务列表
3
service-order
service-orderlocalhost:8081
nginx维护订单服务列表(upStream)
{localhost:8002}
简单设计一个1.服务注册2.服务取消3.获取服务列表
http
服务调用者ConsumerNacos Client
在微服务架构中,如果生产者有多个,采用普通的方式调用生产者服务
存在问题:订单服务ip:port变更,服务迁移
2. 每次调用订单服务前,都去从注册中心获取订单服务列表,就是执行select
注册表service-orderlocalhost:8080localhost:8011
存在问题:订单服务扩容了怎么办?某个订单服务宕机了?
定时拉取服务列表
Nacos架构https://nacos.io/zh-cn/docs/architecture.html
心跳:服务续约: 客户端向服务端定时发心跳,服务端接收到心跳后修改服务的续约时间lastregistrytime: 9:00 15s 9:15服务端服务剔除: currenttime-lastregistrytime>15s 修改存活状态 downcurrenttime-lastregistrytime>30s delete阈值保护 down/ all < 阈值
手动维护一个注册表
Ribbon
从注册表拉取订单服务列表,选择一个订单调用
核心功能:服务注册:Nacos Client 会通过发送 REST 请求的方式向 Nacos Server 注册自己的服务,提供自身的元数据,比如 ip 地址、端口等信息。Nacos Server 接收到注册请求后,就会把这些元数据信息存储在一个双层的内存 Map 中。服务心跳:在服务注册后,Nacos Client 会维护一个定时心跳来持续通知 Nacos Server,说明服务一直处于可用状态,防止被剔除。默认 5s 发送一次心跳。服务同步:Nacos Server 集群之间会互相同步服务实例,用来保证服务信息的一致性。服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个 REST 请求给 Nacos Server,获取上面注册的服务清单,并且缓存在 Nacos Client 本地,同时会在 Nacos Client 本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。服务健康检查:Nacos Server 会开启一个定时任务用来检查注册服务实例的健康情况,对于超过 15s 没有收到客户端心跳的实例会将它的 healthy 属性置为 false(客户端服务发现时不会发现),如果某个实例超过 30 秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)。
负载均衡
Nacos注册中心架构
Nacos注册中心
问题:1.每次都去调用注册中心,注册中心挂了怎么办2.如果拉取的订单服务对应的机器挂了怎么办?(服务不会消失)
注册表中维护服务的信息192.168.0.170:50070192.168.0.171:50070
收藏
收藏
0 条评论
下一页