前面已经准备了源码环境
谈及Nacos,服务注册中心不可不提及
问题1: 服务注册流程(服务端处理逻辑)
问题2:客户端心跳机制及服务端的健康检测
注册成功后客户端默认每隔五秒发一次心跳,接口:InstanceController( /v1/ns/beat)
服务端在客户端注册过程中,会创建定时任务去检查lastHeartBeatTime,默认情况下,超15秒,将服务置为不健康,超30s,删除客户端服务
入口:nacos-naming模块提供api接口:(ister) /v1/ns/instance
getInstanceOperator().registerInstance(namespaceId, serviceName, instance);//方法内重要代码(下面一一说明)createIpPortClientIfAbsent(clientId);//code_1Service service = getService(namespaceId, serviceName, ephemeral);//isterInstance(service, instance, clientId);//code_3
Service singleton = Instance().getSingleton(service);//code_3.1client.addServiceInstance(singleton, instanceInfo);//code_3.2
code_3.1
先了解服务端如何保存客户端服务的(结构如下,图片引用)
相关代码:ServiceManager
//保存客户端服务容器private final ConcurrentHashMap<Service, Service> singletonRepository;//通过key做环境隔离 keyNamespace()private final ConcurrentHashMap<String, Set<Service>> namespaceSingletonMaps;
code_3.2
客户端保存发布者信息(客户端发送心跳请求,会使用到publishers )
IpPortBasedClient:ConcurrentHashMap<Service, InstancePublishInfo> publishers = new ConcurrentHashMap<>(16, 0.75f, 1);publishers.put(service, instancePublishInfo)
总结:nacos心跳机制及健康检查有了个初步的了解
仔细看了下NotifyCenter源码ify包,大概结构如下(发布–订阅模式)
简单聊聊这个设计模式,通俗来讲就是:“我放个屁股在这里,有瓜踢一下”,或者举个例子
我是一个销售人员,专门卖BYD电动汽车的,A,B,C三个用户找我买比亚迪汉,巧了暂时没有货,然后他们每人给了一个联系方式给我,等哪天有货了,我再去通知他们过来买车。
什么时候建立订阅关系
什么时候触发(发布者什么时候通知订阅者)
订阅者需要执行的动作
本文发布于:2024-02-03 23:24:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170697465251548.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |