我们拿双十一举例,利用一个过程,详细的串起来整个流程

我们将整个过程分为十个过程,搭建一个电商开始,到BGP的路由广播,到DNS的域名解析.到客户端的访问,到最后下单

首先是搭建一个高可用的高并发的电商平台

我们首先搭建一个电商凭条,假设使用公有云吧,为了高可用和访问速度,将部署多个可用区,然后将主站点放在华东

图片

为了让每个节点都能雨露均沾,为了高可用,我们需要多个机房,形成多个可用区,这样,即使可用区出现了问题,也不会影响别的可用区

然后每个可用区,都是内部包含大量的服务器机柜,每个机柜上有一排排的服务器,每个机柜都有一个接入交换机,有一个汇聚交换机将多个机柜连接在一起

服务器里面部署都是计算节点,每台上都有Open vSwitch创建的虚拟机交换

将来在这个机器上创建的虚拟机,都会连到Open vSwitch上

图片

这个架构想起来了之后

如果我们在云计算的界面上创建一个 VPC,虚拟私有网络,指定一个IP端,以后部署的所有应用都会在这个虚拟网络里面,使用这个分配的IP端,为了让不同的VPC相互隔离,每个VPC会分配一个VXLAN的ID,尽管不同的用户的虚拟机可能同一个虚拟机上,但是大二层不通的

由于存在着两个可用区,在这个VPC中,要为每个可用区分配为一个subnet,也就是在大的网段里面分配两个小的网段,网段不同,自然静态路由策略不同

自然可以分配选择走哪个可用区

接下来,创建数据库的持久化层

大部分的云平台提供了Paas服务,也就是说,不需要自己搭建数据库,而是采用云数据库,数据库部署在虚拟机上,云平台给每个Subnet的数据库实例分配一个域名,创建数据库实例的时候,需要你指定可用区和Subnet的数据库实例分配,然后在内网中可以直接利用私网IP进行访问

为了分库分表实现高并发的读写,在创建的多个数据库的实例上,会创建一个分布式数据库的实例,分配一个私网IP和域名

对于数据库这种高可用高的,需要跨机房进行高可用,因此两个可用区都需要部署一套,但是一个是主,一个是备,云平台往往会提供数据库同步工具,将应用写入主的数据库中

然后是创建缓存集群,云平台也会提供Paas服务,需要每个可用区和Subnet创建一套,缓存的数据在内存中

然后部署自己的程序,包含基础服务层,组合服务层,Controller层,Nginx层,API网关,都是在虚拟机里面的,通过RPC调用,需要到注册中心注册

还需要进行彼此间的通信,对于虚拟机之间的,如果是同一个物理机,则物理机上的OVS就能转发过去,如果是不同的物理机,这台物理机的OVS和另一台的物理机的OVS之间有一个VXLAN的隧道,将请求转发过去

然后是负载均衡,负载均衡是云平台提供的Paas服务,属于某个VPC,部署在虚拟机里面,但是需要对外提供服务,负载均衡必然有一个外网的出口,可以将外网的IP NAT成私网IP地址,通过这些私网ip地址访问虚拟机上的负载均衡的节点,然后通过负载均衡的节点转发到API网关的节点

API网关上还有一个虚拟网关的转发模块,将私网IP地址放在VXLAN里面,转发到虚拟机上,从而实现外网和虚拟机网络之间的互通

网关节点的外网网口,通过OVS,将私网IP地址放在VXLAN中,转发到虚拟机上,从而实现私网和虚拟机网络的互通

不同的可用区之间的互联,通过核心交换机连接

在华北,华东,华南部署了多套系统,创建了多个VPC,这就需要一种机制将VPC连接到一起,云平台一般会提供硬件的VPC互联,就是通过光缆,但是也提供了软件互联的手段,走VPN的网关,通过IPsec VPN将不同的地区的不同VPC通过VPN互联

对于不同的地区,不同的运营商的用户,我们希望可以更快的响应,于是使用平台提供的服务DNS

对于一些静态的资源,可以保持在对象存储中,通过CDN下发到边缘节点,这样客户端就能尽快的加载出来

进行网站的广播

将如何访问到这个电商网站广播给全网

图片

通过BGP协议

每个可用区都有自己的汇聚交换机,如果机器的数目比较多,可以用核心交换机,每个Region都有自己的核心交换区域

在核心交换机外面是安全设备,然后是边界路由器,边界路由器会和多个运营商连接,让每个运营商都能得到这个网址,边界路由器通过BGP协议进行广播,访问这些外网的IP,来我这里

然后,假设我是一个手机端,进行访问

图片

客户的手机开机后,在附近寻找基站eNodeB,发送请求,申请上网,基站前面收到了请求,发送给了MME,然后MME对手机进行认证和鉴权,然后请求HSS看有没有钱

然后通过认证后,建立隧道,建立的数据通路分为,从eNodeB到SGW,从SGW到PGW,在PGW之外,就是互联网

PGW为手机分配一个IP地址,手机上网就是带着这个IP地址的

打开一个手机的APP,就是解析这个网站的域名

手机运营商所在的互联网区域,有一个本地的DNS,手机会向着DNS解析DNS,这个DNS本地有缓存,直接返回,没有缓存,递归的从根DNS服务器,查到.com的顶级域名服务器,直到查到权威的DNS服务器

使用公有云,会在权威的DNS服务器中,配置一个CNAME,起一个别名,例如,vip.yourcomany.com,然后告诉本地DNS服务器,请求GSLB解析这个域名的过程中,通过自己的策略实现负载均衡

GSLB通过查看请求它本地的DNS服务器所在运营商的地址,知道运营商的地址,然后将理用户比较近的Region里面,三个负载均衡SLB的公网IP地址,返回给本地DNS服务器,本地DNS解析器将结果缓存后,返回给客户端

对于手机APP来说,可以绕开刚才的传统DNS解析器,通过HTTPDNS服务,直接得到三个SLB的公网地址

发表评论

邮箱地址不会被公开。 必填项已用*标注