如今,分布式系统对于很多开发人员而言已不再是一个陌生概念。尤其是在互联网高速发展的场景下,每年春晚抢红包、京东和淘宝的618和双11大促活动所承受如此大流量和高并发的情况下,还能保证系统高可用性,这些无一离不开分布式架构的作用。
本文期望通过概括商城系统业务、技术的发展历史,来阐述分布式系统是如何进化而来的。
1、从电商首页看系统
互联网已经深刻改变了我们所处的世界,改变了我们对事物的认知,更是缩短了人与物、人与人之间的距离。可谓有“一机在手,天下我有”的快意江湖之感。
但这些方便了我们日常生活的背后,究竟有什么不为人知的奥秘呢?这个时候,我想起了一句很应景的话: **生活哪有那么多的岁月静好,不过是有人在替你负重前行! **
而这个负重前行的东西就是我们今天要讲的内容:分布式系统架构演进之路。
我们很多人应该经常会去网上购物,当你进入网站首页的时候,首先进入你视野的就是各式各样的功能。
以商城首页为例,我们自上而下来看一看这个小小的页面究竟隐藏着什么?
1)顶部主要偏服务类功能,主要涉及系统:订单系统、商城用户系统、客服系统。
2)搜索功能能让你快速定位到需要的商品,主要涉及系统:搜索系统、商品系统。
3)我的购物车主要是为了时刻提醒用户选择商品的情况,主要涉及系统:订单系统。
4)快速导航栏每个功能几乎都是属于独立系统:秒杀系统、优惠券系统、排名系统、商品系统、京东国际商品系统、京东云系统。
5)左侧这部分内容为商城常见的品类数据展示,主要涉及系统:类目系统和搜索系统。
6)中间该部分内容为商品广告区,主要涉及系统为:广告系统、商品系统。
7)除以上系统之外,还有一些隐藏系统:比如物流系统,履约系统、配送系统、售后系统等。
综上,整个网上商城首页所依赖核心系统大致如下:
我们可以看到,这一个小小的页面背后竟然有这么多核心系统在支撑,而且还有很多我们看不见的外围系统在背后默默地提供着服务。那如此复杂的分布式系统架构是如何演化而来的呢?
老王带着大家一步一步走进历史~~
2、商城单体系统
我们知道,任何一个网站,在初期的时候基本都处于摸索阶段,一般不会立刻拥有庞大的用户流量及海量的业务数据。期初的业务一版会聚焦某一个业务模块。例如,发展比较早的8848电子商务网站、阿里黄页。
这些平台期初业务不复杂,仅有一些商品的简单展示,页面会留有联系方式或者论坛平台,方便用户联系商家。有意向购买商品后,后续所有流程都在线下完成。
整个系统模式如下:
那支持这套线上流程背后的服务基本就是一个单机系统。对于刚起步的业务,而且即使出现系统宕机或者服务异常,对用户影响范围较小。我们往往会从企业或公司的成本角度考虑:将WEB服务器、文件服务器和数据库服务器部署在同一台物理机上。系统架构图大致如下:
随着业务和用户量的不断扩展,用户访问服务器的压力越来越大,这个时候系统可能会暴露出一些问题。此时,我们就需要开始考虑对现有架构做升级改造了。最简单粗暴的办法就是加机器,但是加机器带来了新的问题,如何做负载均衡,这也就引出了集群的概念。
3、商城集群系统
当越来越多的人知道可以从网上商城购物的时候,公司服务器的并发流量必然会猛增,此时为了给C端用户更好的系统使用体验,这时候就需要架构师们对单体系统做架构改造和升级了,以此来解决系统处理能力、分散系统负载压力,从而达到保障系统稳定性。当然,除了服务器无法支撑外,原来的客服人员、订单记录人员、配送人员也无法应对大量的用户和业务问题了。所以,此时也会开始考虑将线下业务线上化。
综上原因,最终商城集群系统就应运而生了。
通过反向代理方式暂时缓解各系统压力,这个时候整体服务运行相对平稳了,客户体验也有了很大改善。
但此时,引出了另外一个问题,研发维护压力越来越大了。为什么?
因为一个应用里面耦合了各种业务逻辑,包括商品、订单、客服的处理逻辑。如果商品逻辑有问题,修改的时候可能会影响其他业务逻辑,有种”牵一发而动全身“的感觉。
在研发和产品经历过各种煎熬之后,最终实在扛不住了,牙一咬心一横:重构。
但此时重构是否还能像之前一样,将所有业务逻辑耦合在一起?当然不能了,经历的痛苦不能再重复了。
那怎么办?参考看业界有没有什么新概念出现,幸运的是这时出现了:服务化治理-分布式概念。
4、商城服务化治理
服务化治理主要是针对原有业务耦合比较严重的系统进行垂直化改造,使整个系统拆分为各子系统,每个子系统负责独立的业务职责。这样便降低了业务逻辑耦合、提升应用的容错能力。最重要的是,对应研发而言,不同人员负责不同业务模块即可,职责分明,运维起来也轻松了不少。
当然,这种服务化治理前提是需要结合公司业务发展规模以及维护成本增加。如果目前公司现阶段没有这些物力和财力投入,那就需要考虑从代码层面做一些很好的隔离和优化。
至此,一个商城系统从单体系统到集群系统,再到分布式系统就过渡成功了,但这只是开始,需要我们不断的去完善和补充。后续出现的的微服务、分布式服务框架技术,只是为了能更好的服务于服务化治理。
最后,老王在后面架构道术篇也会解释各中间件在分布式系统中所存在的价值和意义。比如:Dubbo、RocketMQ、Zookeeper,Redis等。让我们一步一步揭秘分布式架构系统是如何承载亿级流量的。
敬请期待!
版权归原作者 老王随聊 所有, 如有侵权,请联系我们删除。