啊,中国的朋友们大家好,我是来自HHS的XGN。最近冠状病毒爆发,各地都在出台政策防治。笔者刚从老家回来,路上受到了各种检查和测温。假设我们将每一台车上的人看作一个服务器,每一组检查站看成一个客户端。那么,检查站想要连续、精确的获取到车上的人的体温,有什么有效的方法吗?笔者想了几种进行对比:

This article is not for foreigners and those who know nothing about programming. 本文章面向不了解网络开发但是有最基本的基础的读者。

Approach 1 假设在一条高速公路上,我们可以每隔1km设立一个检查站,来一辆车测一辆,多么爽快直接?!先不要说这个方法太naive,先想想你自己上网的时候,也会有这种行为。比如说,再看你关注的某个动态数据(比如说股票、球赛比分),你会不会不停的刷新看有没有新数据?这种方式获得的数据非常具有时效性,非常的准确到位,但是缺点十分明显,就是资源开销大,不仅浪费时间而且会显得政府很有钱。这种做法一般称为轮询(polling)

Approach 2 我们可以只在关键地点测体温。比如在上高速和下高速的时候,进出机场的时候这几个时间点测。这样可以节约大量时间和人力。对应的,在程序设计时,我们有的时候只在关键区域检查权限,比如说,我们只会在付款、充值VIP的时候索取你的密码,你有见过看个新闻都要银行密码的APP吗?这种方式获得的数据就不太具有时效性,但是也可以基本上代表整个局势。这也是大家通常见到的方式。

Approach 3 我们可以测一次体温给一个人发一张“健康证明”,证明上写了你的身份证号和开具的时间。有这张证明,30分钟(或一段时间)内都可以免测。这种方式绝对省人省力,因为对于每个人每天测量的最大次数是固定的。问题就来了,如果有人伪造证明呢?我们可以通过盖章、加密、签名等方式作证,但这不在我们研究范围内。这种方式一般称为Comet-长轮询

Approach 4 最诡异的方法:在每个人身上装一个温度传感器。每个检察人员想看到谁的体温就可以看到谁的体温,同时温度传感器也会自动上传数据,看到可疑情况立即枪毙上报。非常适合梵蒂冈这样的国家。这种方式一般称为Websocket

你还有什么更好的方法? 但是无论怎样,这里所讲述的还是一台车对检查站的情况。无论怎样,每个检查站每天都要通过上百辆车。所以,让我们为现在站在岗位上的医务人员和疾病防治人员的付出致敬!