Martian-cloud 4.0.2,丢弃心跳机制,解决网络压力问题

栏目: 软件资讯 · 发布时间: 3年前

内容简介:首先,有人可能对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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ActionScript 3.0 Cookbook中文版

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中文版》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换