heartbeat

心跳,证明自己还活着。对,Keep-Alive !

梗儿

最近在做的一个后台服务又涉及到了心跳协议,一时兴起,想记录下这些设计的初衷。

长连

移动互联网时代,社交APP(如微信、友加、陌陌等)上的与好友畅快的调侃,映客某主播间里礼物狂轰乱炸。场景的真实体验,稳定的长连功不可没。在这背后,有一个幕后英雄——心跳(也称“Heartbeat”)。

一探究竟

小红打开某社交APP,作为用户的你就借助手机跨越层层阻隔(路由网关)与某个旮旯的IDC中的一台服务器建立了连接。碰巧他的铁杆粉丝小明看到她的头像从他的好友列表中亮了起来,还调皮的闪烁了两下。

A<->H

A:小红,在吗?

H:(5分钟后)在,什么事儿….

A:晚上一起吃饭,有空吗?

H:(十分钟后…)没空儿

A:(十五分钟后)哦,没事了。

看似一段简单又伤感的聊天,却前前后后半个多小时,客户端弟弟为了和客户端哥哥保持连接,在后台默默的给服务器哥哥发送了10几个心跳包。过程中,小红的头像时而灰时而亮。

发生了什么

此段非技术人,看后不知所云没关系,因为你不是程序员。

小红的手机与某旮旯的服务器建立长连接后,服务器哥哥收到小明要发送给她的消息,这时服务器哥哥看了下小红的连接还在,然后把消息推到了小红的APP上。小红看到消息后,没啥兴趣,把手机就撂倒了面前的桌子上。

1分钟过去了,手机上的APP(客户端弟弟)坐不住了,赶紧向服务器哥哥发了讯息:服务器哥哥,我还活着

服务器哥哥:哦

又一分钟过去了,客户端弟弟又坐不住了,又向服务器哥哥发了讯息:服务器哥哥,我还活着

服务器哥哥懒洋洋的回复:哦

就这样过了好久好久,小红实在无聊,低头看见小明的消息,就怯怯的回了下:在,什么事…

客户端弟弟赶紧屁颠屁颠的把这个消息告诉了服务器,服务器一看小明还在,就立马推到了小明的APP上。小明哪个激动啊,赶紧回复:晚上一起吃饭,有空吗?

又是一个漫长的过程,小红手机上的APP(客户端弟弟)和服务器哥哥来来回回说了十几次`我还活着`,把服务器哥哥郁闷的一个劲的吹风扇。但是就是没舍得断开小红的连接…

我还活着,心跳就这么简单。通讯链路保活必杀技

后记

物联网加速发展的今天,每个停留在你身边的“智能”设备都在无时无刻地向服务器证明着我还活着。举个栗子:今年火热的摩拜单车。

mobike_nearby