内容简介:首先,有人可能对Martian-cloud不了解,甚至是第一次听说,所以有兴趣的朋友可以先看下详细的原理 https://www.bilibili.com/read/cv8314554 好了下面切入主题,本次升级,所解决的问题正如标题所说,通过丢弃心跳...
首先,有人可能对Martian-cloud不了解,甚至是第一次听说,所以有兴趣的朋友可以先看下详细的原理
https://www.bilibili.com/read/cv8314554
好了下面切入主题,本次升级,所解决的问题正如标题所说,通过丢弃心跳机制,来解决网络压力
心跳机制丢弃后如何实现下线通知
1. 首先是自私机制
所谓的自私机制,就是每个服务只顾自己,不管别人,每个服务如果发现自己本地缓存的接口连接不上,那就会从本地把他下掉,至于别人,他是不管的。
2. 投票机制
这是每个服务的内部投票,跟外面无关,如果一个服务发现他本地缓存的某个接口连接不上,那么他就会给这个接口指向的服务投一票,让它从本机下线,当调通后会把票数清0,当票数积累到一定程度时,这个服务的所有接口都会被从当前服务上清理掉。【每个服务都有一套这样的机制,来维护自己的本地接口缓存】
3. 如果(下线某个服务的决定)是误判怎么办
有一个补偿机制,就是每个服务在下掉别的服务的时候,都会给被下掉的那个服务发一个通知,让他把自己从已广播列表中移除(比如A服务调不通B服务的接口,当票数累积到一定程度后,A会把B的接口全部清理掉,清理后A会给B发一个通知,让B把A从已广播列表移除,这样如果B服务没挂,那么B在下一次轮询时 会把接口重新广播给A)
如果B服务明明没挂,但是A服务连续调不通,而且连下线通知都无法通知到B服务,那我只能说B服务活该了,即使是误判也比留着报错影响性能好吧。
4. 调不通的情况有很多,不一定是服务挂了,那么什么样的情况会给服务投下线票
很简单,当调用接口时,出现了以下三种异常,就会投票
ConnectException ,连接不上,这不是404之类的,而是根本连不上这个ip:port
UnknownHostException,无法解析地址,提供的 ip:port 无法被解析识别
SocketTimeoutException,连接超时,不是read time out,而是 connect time out
5. 然后是垃圾回收机制
垃圾回收很简单,就是定时去本地缓存中扫描出被下线的服务的接口,然后删除掉。
上面这这一套机制,可以保证当服务宕机以后,接口会自动从其他的服上下线
官方网站
http://mars-framework.com/index.html
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 丢弃掉那些 BeanUtils 工具类吧,MapStruct 真香
- zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)
- Chrome 72 丢弃 HPKP,不再支持TLS1.0和TLS1.1!
- Golang 心跳的实现
- Golang 心跳的实现
- Flink 心跳机制分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ActionScript 3.0 Cookbook中文版
Joey Lott、Adobe Dev Library / 陈建勋 / 电子工业 / 2007-11-01 / 78.00元
本书讨论了在Flash Player里执行的ActionScript3.0语言,采用问题—解法—讨论的形式讲解开发过程中常见问题的实际解法,例如:检测用户的 Flash Player 版本或操作系统;格式化日期和货币类型;接受用户输入及操作文字字符串;在运行时绘制各种形状;访问音频和视频;使用 Flash Remoting 进行远程过程调用;加载、发送和检索 XML 数据等。 全书涵盖客户端......一起来看看 《ActionScript 3.0 Cookbook中文版》 这本书的介绍吧!