![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微服务
文章平均质量分 86
空白Q
这个作者很懒,什么都没留下…
展开
-
微服务学习-SpringCloud -Nacos (集群及CP架构相关学习)
当Nacos在集群模式下,需要对客户端的机器检查心跳,维护心跳,那么需要集群中的每台机器都去检查心跳吗?所以再看上面的代码,当有服务进行健康检查时,执行到这个方法,取模以后发现负责心跳检查的服务并不是当前服务,那么直接退出。这块就相当于,一个写请求进来,发现这个节点不是leader节点,那么它就会把这个请求进行转发,转发给leader节点。之后就是刚刚的后续操作,拿到后遍历查看票数,如果大于半数,设置自己为leader。再往下是两个任务,第一个是主节点的选举,第二个是心跳任务。我们从这个方法开始看起,原创 2023-04-18 23:13:41 · 654 阅读 · 0 评论 -
微服务学习-SpringCloud -Nacos (心跳机制及健康检查源码学习)
微服务在启动注册Nacos时,会创建一个定时任务,定时向服务端发生自己的心跳。发送到服务端后,服务端会更新此实例的心跳时间为当前时间。Nacos服务端在创建注册表时,会同时创建一个定时任务,定时检查服务心跳,如果服务超过15秒没有心跳,会将它的状态设置为false,当超过30秒没有心跳时,会删除实例。删除实例时,会发送DELETE请求进行删除,删除完成后,会向客户端推送最新的注册表,如果推送失败,那么客户端也可以通过定时拉取获得最新列表。原创 2023-04-12 23:03:15 · 1709 阅读 · 0 评论 -
微服务学习-SpringCloud -Nacos (服务发现源码学习)
第二种主动推送的方式是使用了UPD的方式,是不可靠的,有可能发生丢包。所以通过第一种定时拉取方式来进行兜底,即使主动推送失败了,也可以通过定时拉取的方式完成更新。我们进入 this.scheduleUpdateIfAbsent(serviceName, clusters)方法。它里面又会去调用queryList方法查询最新的列表,然后更新到本地。Spring的事件发布,发布了这样一个数据变化的事件。通过UPD的方式发送给客户端完成更新。然后调用updateIPs方法,原创 2023-04-09 21:50:51 · 753 阅读 · 0 评论 -
微服务学习-SpringCloud -Nacos (服务注册源码学习)
ephemeral前面我们了解过,是否是临时实例,默认传true,所以一般返回 buildEphemeralInstanceListKey(namespaceId, serviceName)这个结果,所以这里主要是区分nacos是AP还是CP架构的地方。将service数据写入serviceMap后,创建临时实例的方法就结束了,现在我们代码回到创建临时实例createEmptyService处继续向下走,然后再判断一次注册表中是否有service,此次没有的话就会抛出异常。后面会重点讲一下AP和CP架构。原创 2023-04-08 21:33:43 · 856 阅读 · 0 评论 -
微服务学习-SpringCloud -Nacos (单机部署)
因为此时调用需要使用LoadBalanced进行负载均衡,因为实际使用中机器不止一台,需要根据策略进行负载,所以需要加LoadBalanced。使用了nacos注册中心后,修改为对应的服务名即可,调用方不感知被调用服务的ip:端口。此时调用时会报UnknownHostException错误。RestTemplate加@LoadBalanced注解。打印如上内容时,说明服务已注册成功。没有使用注册中心时,请求需要加对应的IP:端口。原创 2023-04-01 21:50:21 · 445 阅读 · 0 评论