架构师训练营第 1 期第 4 周作业
作业:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
新浪微博架构演化
将发布/订阅简化成insert/select的数据库处理问题。大V发微博时,给粉丝insert一条记录,粉丝上线时,看自己的表内容即可。
典型LAMP架构,MySQL,单库单表,MyISAM,多端口,单服务器。
业务拆分
第二代采用了NoSQL的方式,key-value存储,加速访问,方便伸缩。将数据、功能、部署拆分。提前容量规划。
异步处理
采用了消息队列,MemCache Queue的方式,增加了stat queue,适合大规模运维。
动静分离
静态内容使用CDN进行加速。图片等数据放在CDN的图片池。
平台化
将常用服务平台化,其他服务依赖于平台服务,以尽可能避免重复造轮子。按正交分解法,水平方向最上面是API层。中间是平台服务和应用服务,主要针对业务,比如用户、关系、微博等。最下层是基础服务,主要针对资源,比如数据库,消息队列等。
快速网络包处理架构
随着网络的发展,包处理也越来越重要。以下是常见的包处理架构。
水平方向,最上层是Kubernetes的POD,每个POD可以运行多个container,在内部可以运行多种服务,多个进程。中间的的VPP层是用于包处理,是思科的vector packet processing的开源版本,其中vector指的是向量处理,相比标量处理,可以并行处理多个网络包,也就是在多个core,并行处理不同的网络包。再下层是DPDK,快速包处理框架,有poll mode driver,运行在CPU的用户空间,用于循环轮询网卡,在数据包达到C10M时,可以避免减少中断的额外开销,快速响应,及时处理包。
垂直方向,每个Kubernetes的Node,里面的POD分为在container内部的,以及在host network的,基于host network的还是用linux的网络协议栈通信。Kubernetes的master,负责管理kubernetes,与Contiv VPP的agent连接。可以把统计数据发给Prometheus,展示给外部,包括收到的,发出去的,以及丢包情况。
最核心的VPP用于快速包处理。
最上层是Plugins,支持ACL,还有SNAT,以及针对每个包的流控。下层是VNET,虚拟网络,支持L2, L3, L4的处理。以及控制面的消息。再下层是VLIB,提供资源,比如buffer管理,节点管理,tracing,线程,CLI命令等,最下层是VPP INFRA,比如memory管理,向量vector,ring管理,hash,定时器。
评论