本周的课程内容是互联网应用架构的总览,也是架构师训练营真正进入到“架构”这一模块的开端,可以说是干货满满。周四的课程中,李智慧老师介绍了互联网应用所面临的问题,大致上来说,大型互联网应用需要满足高并发、高可用、高性能、可扩展、安全可靠等方面的要求。为了满足这些要求,以历史观的视角审视典型的互联网应用架构演进路线,可以说绝大部分大型的互联网应用都是遵循了以下演进路线。
首先是使用垂直扩展方案,直接升级服务器配置,但随着用户数量继续增长,以及对服务高可用的需求,于是开始通过水平扩展方案来增加更多的服务器,并引入负载均衡技术,以解决请求数量的暴涨。在这一过程中,不同服务的部署也逐渐分离到不同的服务器上,方便对其进行统一管理,避免不同服务之间相互影响。接下来,CDN和缓存技术的引入极大提升了应用响应的速度,减轻了读操作的压力,但这两种技术实际上都是返回的“过期”的数据,针对后端数据库的压力,则应当使用读写分离、主从复制的方案。当各种服务本身的瓶颈已无法满足性能的要求时,就需要引入各种分布式的服务和架构,包括分布式存储、分布式数据库、分布式缓存等等,NoSQL和搜索引擎的引入则进一步提升了海量数据查询的性能。当应用发展到相当规模,业务和架构都越来越复杂时,就需要考虑对业务进行重新的梳理、建模、拆分,通过微服务、中台等模式来重新设计业务架构。
周四的课程学下来我还觉得有点太简单了,只是一个概论和简介,毕竟这些概念稍微了解互联网应用架构的人都知道,但具体要怎么用呢?当我们面对实际的需求时如何正确运用这些技术,如何对其进行演进,如何避免踩坑呢?这些问题终于在周六的课程中得到了解答。
周六的课程里,李老师以维基百科、淘宝网、宅米、新浪微博四个不同规模的互联网应用为例,讲解了针对不同的规模、不同的业务需求、不同的发展阶段,如何综合运用前面讲到的技术来实现应用的架构,并且还分享了自己作为开发人员在淘宝网的经历,以及作为CTO在宅米的经历。在这个过程中,我学到的几个比较有意思的点包括:
-
互联网应用通常都是从简单架构的小应用开始发展的,因为互联网应用要以抢占市场、尝试商业模式为核心,如果一来就在架构上耗费巨大的时间和成本,指望一步到位,那很有可能应用还没开发出来就已经撑不下去了。
-
做架构的时候一定要清楚业务的具体形态和特点,针对业务特点分析真正的瓶颈和问题所在,才能对症下药找到正确的架构方案。
-
进入顶级技术团队跟不上节奏很正常,不要否定自己,这是很难得的提升机会。架构师的重要性很多时候需要问题发生并得到解决后才能体现出来。
网友评论