架构师训练营作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
说实话,这个大概念很模糊,达到什么程度叫做大,因为不同量级的并发/流量,结合不同的应用,可能会需要用到完全不同的技术栈;比如做一个电商网站和做一个视频网站,以及做一个互联网 VOIP,都算大吧,但是用到的很多技术是完全不一样的,当然也有共通性。
从我的理解来看,一个互联网应用系统,至少包含下面几个部分,因为大,单点/单机系统肯定无法满足要求,因此需要用到下面分布式技术(随便一个分布式系统都可以单独写一组文章来描述)。
1 Web 前端应用系统
2 分布式数据库
3 负载均衡器(可以使用软的,比如 LVS;如果性能要求很高,可以用硬的,比如 F5)
4 分布式缓存
5 大数据技术(现在互联网都会有推荐系统,需要大量的数据收集,ETL,存储)
6 AI 算法分析系统(基于用户的喜好进行分析推荐,目的还是增加更多流量或者更多的商品销售)
7 CDN(如果是一个大型视频网站/门户网站),不可能都到大脑去处理,即使再扩容硬件,也会有带宽,响应时延等客户体验问题,因此需要分布式的 CDN 系统来缓解压力。
8 DevOps(一个大型系统需要完整规范的开发,上线,运维流程能力)
9 其他技术,里面有很多的方向性技术,但是也相当重要
网络技术-Linux 内核的网络处理能力非常弱,除非你把应用写到内核 ko,想单台服务器获得更高能力,就需要 DPDK 这种类似的网络技术,大幅提升单机能力
安全技术-一个系统做大,用到的组件越多,漏洞就越多,面临的风险就越大,需要针对性的对系统进行安全性的审视和安全处理。
评论