架构师训练营 第四周 学习总结

用户头像
RZC
关注
发布于: 2020 年 07 月 01 日

本期老师主要带我们了解了互联网项目的发展历程,是一个从0到1的过程。项目架构并不是一开始就按照顶级高性能高并发的历程来建设的,是一步一步建设起来的,经历了渐进式的发展。

当今互联网公司面临的问题跟十几二十年前碰到的问题已经完全不一样了。互联网系统在当今面临着更大的挑战,现在互联网系统面临着高并发用户,大流量访问。高并发是系统的客观存在,高可用高性能是系统追求的目标,并且互联网系统必须支持7*24小时不间断的服务。好的互联网产品都是慢慢运营出来的,不是一开始就开发好的。

互联网系统一开始很有可能是单一的系统部署在小型机器上面,之后系统碰到瓶颈采用垂直伸缩,而不是马上就考虑水平伸缩把系统立刻做成分布式的系统。这样做必须要引入队列、分布式事务、系统间通信的可靠性反而增加了系统的复杂性。我之前参与的一个创业项目在初始阶段就采用了服务化的架构,但由于当时人力有限,团队技术积累不足,因此在实际项目开发过程中,发现无法驾驭如此复杂的架构,也出现了问题难以定位、系统整体性能下降等多方面的问题,甚至连系统宕机了都很难追查到根本原因,最后不得不把服务做整合,回归到简单的单体架构中。

系统设计满足业务需求和流量现状,选择最熟悉的技术体系。脱离业务单纯的去研究搞技术,那么这些系统的命运一定是灭亡。

当系统的业务增长量预计会达到单体应用的瓶颈的时候,我便可以开始考虑系统的拆分。水平伸缩可以节约公司的成本,可以克服垂直伸缩带来的单位计算成本随计算能力增加而增加的问题,水平伸缩可以突破单台服务器的瓶颈。大致的架构演化可以分为以下几个阶段:



阶段一:应用数据分离;把系统大致拆分成应用服务器、文件服务器、数据库服务器。

阶段二:使用缓存改善系统的性能;互联网系统用户的读操作非常多,增加相应的缓存服务器来缓解数据库的压力,从而服务更多的用户。

阶段三:水平增加应用服务器机器。增加服务器来适应更高的吞吐量。

阶段四:数据库读写分离。用户的读请求都放到读数据库上面来分摊数据库的读写压力。

阶段五:使用反向代理和CDN加速网站响应。CDN服务器是跟近距离当地的用户提供的服务器,系统的静态资源都放在了运营商就近的CDN服务器上面,从而提升用户访问静态资源的速度。

阶段六:使用分布式文件系统和分布式数据库,分布式数据库来缓解单一主库写的压力。

阶段七:使用Nosql和搜索引擎。把非事务性的查询放到Nosql和搜索引擎中来进行查询,从而缓解数据库的压力。

阶段八:业务拆分。业务拆分后方便大规模技术人员的开发维护。

阶段九:微服务中台化。微服务化解决了服务之间的jar包依赖,这样就解决了服务之间jar包版本一致性的问题。

阶段十:大数据和智能化。



大型的互联网项目基本上都经历了这些阶段,高并发系统演进是一个渐进的过程,并非一蹴而就的。



用户头像

RZC

关注

还未添加个人签名 2019.07.25 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 第四周 学习总结