架构师训练营第 1 期第 4 周作业

用户头像
好吃不贵
关注
发布于: 2020 年 10 月 08 日
架构师训练营第 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,定时器。



用户头像

好吃不贵

关注

还未添加个人签名 2018.11.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 1 期第 4 周作业