基于计算机底层基础设计一个高性能的单机管理主机的心跳服务

大家耐心看下去,你会发现原来计算机基础知识的用处,相信我,你会感触很深刻。


案例需求

====

后台通常是由多台服务器对外提供服务的,也就是所谓的集群。

如果集群中的某一台主机宕机了,我们必须要感知到这台主机宕机了,这样才做容灾处理,比如该宕机的主机的业务迁移到另外一台主机等等。

那如何感知呢?那就需要心跳服务了。

要求每台主机都要向一台主机上报心跳包,这样我们就能在这台主机上看到每台主机的在线情况了。

心跳服务主要做两件事情:

  • 发现宕机的主机

  • 发现上线的主机

看上去感觉很简单,但是当集群达到十万,甚至百万台的时候,要实现一个可以能管理 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 这样规模的集群的心跳服务进程,没点底层知识是无法做到的。

接下来,将从三个维度来设计这个心跳服务:

  • 宕机判断算法的设计

  • 高并发架构的设计

  • 传输层协议的选择

宕机判断算法的设计

=========

这个心跳服务最关键是判断宕机的算法。

如果采用暴力遍历所有主机的方式来找到超时的主机,在面对只有几百台主机的场景是没问题,但是这个算法会随着主机越多,算法复杂度也会上升,程序的性能也就会急剧下降。

所以,我们应该设计一个可以应对超大集群规模的宕机判断算法。

我们先来思考下,心跳包应该有什么数据结构来管理?

心跳包里的内容是有主机上报的时间信息的,也就是有时间关系的,那么可以用「双向链表」构成先入先出的队列,这样就保存了心跳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值