作者:刘超
在经济学领域,有个伦纳德·里德(Leonard E. Read)创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程,来讲述复杂的经济学理论。这里,我也用一个下单的过程,看看互联网世界的运行过程中,都使用了哪些网络协议。
我把这个过程分为十个阶段,从云平台中搭建一个电商开始,到BGP路由广播,再到DNS域名解析,从客户看商品图片,到最终下单的整个过程,每一步我都会详细讲解。这节我们先来看前三个阶段。
1. 部署一个高可用高并发的电商平台
首先,咱们要有个电商平台。假设我们已经有了一个特别大的电商平台,这个平台应该部署在哪里呢?假设我们用公有云,一般公有云会有多个位置,比如在华东、华北、华南都有。毕竟咱们的电商是要服务全国的,当然到处都要部署了。我们把主站点放在华东。

为了每个点都能“雨露均沾”,也为了高可用性,往往需要有多个机房,形成多个可用区(Available Zone)。由于咱们的应用是分布在两个可用区的,所以假如任何一个可用区挂了,都不会受影响。
我们来回想数据中心那一节《数据中心:我是开发商,自己拿地盖别墅》,每个可用区里有一片一片的机柜,每个机柜上有一排一排的服务器,每个机柜都有一个接入交换机,有一个汇聚交换机将多个机柜连在一起。
这些服务器里面部署的都是计算节点,每台上面都有Open vSwitch创建的虚拟交换机,将来在这台机器上创建的虚拟机,都会连到Open vSwitch上。

接下来,你在云计算的界面上创建一个VPC(Virtual Private Cloud,虚拟私有网络),指定一个IP段,这样以后你部署的所有应用都会在这个虚拟网络里,使用你分配的这个IP段。为了不同的VPC相互隔离,每个VPC都会被分配一个VXLAN的ID。尽管不同用户的虚拟机有可能在同一个物理机上,但是不同的VPC二层压根儿是不通的。
由于有两个可用区,在这个VPC里面,要为每一个可用区分配一个Subnet,也就是在大的网段里分配两个小的网段。当两个可用区里面网段不同的时候,就可以配置路由策略,访问另外一个可用区,走某一条路由了。
接下来,应该创建数据库持久化层。大部分云平台都会提供PaaS服务,也就是说,不需要你自己搭建数据库,而是采用直接提供数据库的服务,并且单机房的主备切换都是默认做好的,数据库也是部署在虚拟机里面的,只不过从界面上,你看不到数据库所在的虚拟机而已。
云平台会给每个Subnet的数据库实例分配一个域名。创建数据库实例的时候,需要你指定可用区和Subnet,这样创建出来的数据库实例可以通过这个Subnet的私网IP进行访问。
为了分库分表实现高并发的读写,在创建的多个数据库实例之上,会创建一个分布式数据库的实例,也需要指定可用区和Subnet,还会为分布式数据库分配一个私网IP和域名。
对于数据库这种高可用性比较高的,需要进行跨机房高可用,因而两个可用区都要部署一套,但是只有一个是主,另外一个是备,云平台往往会提供数据库同步工具,将应用写入主的数据同步给备数据库集群。
接下来是创建缓存集群。云平台也会提供PaaS服务,也需要每个可用区和Subnet创建一套,缓存的数据在内存中,由于读写性能要求高,一般不要求跨可用区读写。
再往上层就是部署咱们自己写的程序了。基础服务层、组合服务层、Controller层,以及Nginx层、API网关等等,这些都是部署在虚拟机里面的。它们之间通过RPC相互调用,需要到注册中心进行注册。
