只有程序员才能读懂的西游记

这是一个有关计算机网络协议的故事。

一、我佛造经传极乐

 

话说我佛如来为度化天下苍生,有三藏真经,可劝人为善。

就如图中所示,真经所藏之处,在于云端。佛祖所管辖之下,有四个区域Region,称为四大部洲, 一是东胜神洲,二是南赡部洲,三是西牛贺洲,四是北俱卢洲。

我佛所在西牛贺洲,是主站点。


在每个区域Region,为保证真经永固,设置多个藏经楼,称为可用区(Available Zone)。

每个藏经楼里面是一排一排的柜子,称为机柜,里面有一排一排的格子,称为服务器,经文就摆放在格子中。

 

 

 

在藏经楼中,柜子根据经文分门别类的组织起来,由不同的神仙进行管理,管理一个柜子的经文的神仙,访问这里面经文的钥匙就在他手里,称为接入层神仙(接入层交换机)。

多个接入层神仙被一组汇聚层神仙(汇聚层交换机)管着,多个汇聚层的神仙被一组核心层神仙(核心交换机)管着。

神仙体系组织严格,层次分明,不同的接入层神仙交换经文,要通过汇聚层神仙同意,不同的汇聚层神仙交换经文,需要核心层神仙同意。

经文的看守要万无一失,因而每一层都是分组看护,互相监督,互相备份,称为堆叠。

虽说每个柜子里面放满了经文,为了防止经文被偷听偷看,经文的内容是被仙术封装在一个虚拟的私密空间里面,虽然有人可能会偷到物质的经文,但是没有仙术打开这个私密空间,看到的经文如同空白的一样。这个虚拟的私密空间称为VPC。

要解读经文,需要使用每一格中一个不起眼的法宝,就是称为Openvswitch的虚拟交换机,顾名思义就是起到经文在虚拟私密空间和物理空间之间的转换作用。

Openvswitch如何转换呢?使用的是一种称为VXLAN的封装技术,但是必须要事先知道芝麻开门的ID,也即VXLAN ID,才能看到经文的真正内容。

在虚拟的空间中,放着真正可以解读的真经。

 

 

真经有法一藏,谈天;论一藏,说地;经一藏,度鬼;三藏共计三十五部,该一万五千一百四十四卷,乃是修真之径,正善之门。

看来已经前中后台分离,分为基础服务层,组合服务层,Controller层,共三十五个模块,一万五千多个服务,真是微服务架构啊。

如何能够不要迷失在这个一万五千卷经文中,也是很有挑战的事情,需要一个索引和指南,这就是常说的RPC框架和服务注册与发现中心。

为了方便诸多僧侣前来取经,灵山脚下会有一个统一的入口地址,这里有一个神仙,称为金顶大仙,专门来接应取经人的。

 

由于前来取经的人很多,同时经文也很多,所以金顶大仙多起到负载均衡的作用,将不同的取经人引领到不同的藏经楼,访问不同的经文。

金顶大仙所在的灵山脚下,是一个世界知名的地址,称为外网IP地址,这个地址是全球可定位的,所有的取经人都先到这个地方,金顶大仙通过NAT规则,将外网IP地址,变成藏经楼的私有IP地址,例如2号藏经楼三楼,4号藏经楼五楼等。在灵山藏经楼里面,是通过私有IP地址定位的。

真经已经准备好,就差东土取经人了。

二、观音奉旨上长安

可是佛祖愁啊,是这样说的:我待要送上东土,叵耐那方众生愚蠢,毁谤真言,不识我法门之要旨,怠慢了瑜迦之正宗。怎么得一个有法力的,去东土寻一个善信.教他苦历千山,远经万水,到我处求取真经,永传东土,劝他众生,却乃是个山大的福缘,海深的善庆、谁肯去走一遭来?

真经就在灵山,可以东土之人愚钝,不知道灵山咋办呢?要一个法力无边的人告诉他们呀。而且最好能够告诉全世界,灵山这里有真经。

好在有观音菩萨,道:“弟子不才,愿上东土寻一个取经人来也。”,观音菩萨有什么法力呢?当然是BGP协议了。

刚才那张图画的是一个可用区的情况,对于多个可用区的情况,我们可以隐去计算节点的情况,将外网访问区域放大。

 


外网IP是放在虚拟网关的外网网口上的,这个IP如何让全世界知道呢?在核心交换外面是安全设备,然后就是边界路由器。边界路由器会和多个运营商连接,从而每个运营商都能够访问到这个网站。边界路由器可以通过BGP协议,将自己数据中心里面的外网IP向外广播,也就是告诉全世界,如果要访问这些外网IP,都来我这里。

每个运营商也有很多的路由器、很多的点,于是就可以将如何到达这些IP地址的路由信息,广播到全国乃至全世界。

厉害吧,这是我佛如来告诉观音菩萨的:“这一去。要踏看路道,不许在霄汉中行,须是要半云半雾;目过山水,谨记程途远近之数,叮咛那取经人。“

就是说你去东土的路上,经过了哪些道路,要记住路径,要记住远近,才能告诉取经人这一路应该怎么走。

三、玄奘秉诚建大会

当观音菩萨来到东土大唐,正看到玄奘法师正坐在高台上,带领众人诵经,念一会《受生度亡经》,谈一会《安邦天宝篆》,又宣一会《劝修功卷》。

菩萨近前来,叫道:“那和尚,你只会谈小乘教法,可会谈大乘么?”玄奘闻言,心中大喜,翻身跳下台来,对菩萨起手道:“老师父,弟子失瞻,多罪。见前的盖众僧人,都讲的是小乘教法,却不知大乘教法如何。”菩萨道:“你这小乘教法,度不得亡者超升,只可浑俗和光而已。我有大乘佛法三藏,能超亡者升天,能度难人脱苦,能修无量寿身,能作无来无去。”

 

 

 

你看,在西方极乐净土,我佛已经有了更牛的佛经,遥远的东方,还在读本土的僧人早期从西方传过来的经。

这种模式,称为CDN。

 


我们部署应用的时候,一般会把静态资源保存在两个地方,一个是nginx后面的varnish缓存里面,一般是静态页面;对于比较大的、不经常更新的静态图片,会保存在对象存储里面。这两个地方的静态资源都会配置CDN,将资源下发到边缘节点。

最初佛祖传经,都是口口相传,经文都会记在高僧大德的心里,随着高僧云游天下,随着庙宇遍布天下,佛经从而遍布天下。这就相当于将佛经缓存在边缘节点。

配置了CDN之后,权威DNS服务器上,会为静态资源设置一个CNAME别名,指向另外一个域名cdn.com,返回给本地DNS服务器。

当本地DNS服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的时候就不是原来的权威DNS服务器了,而是 cdn.com 的权威DNS服务器。这是CDN自己的权威DNS服务器。

在这个服务器上,还是会设置一个CNAME,指向另外一个域名,也即CDN网络的全局负载均衡器。

本地DNS服务器去请求CDN的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,将IP返回给客户端,客户端去访问这个边缘节点,下载资源。缓存服务器响应用户请求,将用户所需内容传送到用户终端。

如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器,将内容拉到本地。

CDN的全局负载均衡策略,就相当于当僧人们想读佛经的时候,不必要都去西天,而是可以就近去问,周围有没有庙宇,然后向庙宇的师傅去请教佛经。

然而缓存的佛经当然是比不上西天取到的经文更新,所以东土由于离西天较远,缓存的还是小乘佛教,要读大乘佛教,就要去西天取经,称为回源。

四、观音显像化金蝉

观音菩萨打算度化玄奘法师,回源去西天取经。

可是怎么去呢,地址在哪里呢?玄奘法师只听说西天,不知道具体的地址,这就要问观音菩萨了。