“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情”
夏天,我最喜欢的就是去烧烤摊撸串了。搬个马扎一坐,服务员就来了:“哥,吃点什么?”。点完菜之后交给服务员,过几分钟,菜就陆续上来了。胡吃海塞一顿,结账走人,美滋滋!
整个撸串的过程,我只需要点菜、撸串和结账,全程只和服务员交流就可以了。对于我来说,烧烤店是一个黑盒的整体,我不用关心其内部是怎么工作的,我只需要关心点哪些好吃的,跟服务员对接好,吃完结账就 OK 了。
而对于烧烤店就不一样了,它们内部可能需要:
- 采购人员提前采购需要的原材料;
- 烧烤小哥提前穿串和生火;
- 服务员招揽顾客、下单,并将订单交给烧烤小哥;
- 烧烤小哥烤串,并将成品交给服务员;
- 服务员上菜;
- 最后收银员收银。
经过采购员、烧烤小哥、服务员和收银员的协同工作,完成了一次美滋滋的撸串体验。
采购员、烧烤小哥、服务员和收银员就好比是一个个专有功能的服务,有负责采购的,有负责烤串的,有负责招揽客户上菜的,还有负责收银的。通过这些专有功能的服务的相互协作,共同组成了这个烧烤摊分布式系统。
本文将开宗明义,阐述什么是分布式系统,以及什么是大型分布式系统。
什么是分布式系统
所谓分布式系统,是分布在不同的网络计算机上的软硬件组件,且组件之间通过消息传递进行通信和协调所组成的系统。
从分布式系统的定义上可以看出,分布式系统有两个特征,一是它由分布在多个服务器上的组件组成;二是组件之间可以相互通讯和协调。
拿烧烤店举例,烧烤店本身就可以看作是一个分布式系统,它由采购员、烧烤小哥、服务员和收银员等组件构成,这些组件通过相互沟通和协调,就组成了这个可以撸串的烧烤店分布式系统。
分布式 VS 集群
比较容易让人混淆的是分布式和集群的概念。
所谓分布式,就是多个系统(人)各司其职,协同完成一件大事。比如烧烤店这个分布式系统,就是由采购员、烧烤小哥、服务员和收银员等子系统相互协同,做成的一件烧烤的大事。
所谓集群,就是多个系统(人)同时做相同的一件事,其目的是提升这件事的完成效率、稳定性等。比如一个烧烤小哥是一个系统,如果撸串的多了,就需要增加烧烤小哥,同时烤串。就这样多个烧烤小哥就组成了一个烧烤小哥集群,烧烤小哥的数量多了,烧烤的效率自然就高了,如果有烧烤小哥上厕所,还有其他烧烤小哥替代,烧烤的服务质量也更稳定了(不至于点了串没人烤)。
如果顾客越来越多,烧烤店发展越来越大,就会需要更多的岗位,如洗菜工、清洁工等,每个岗位再多配置几个人,那么这个烧烤店分布式系统里就衍生出了更多的子系统(或集群)。长此以往,子系统(或集群)越来越多,这个烧烤店分布式系统还是这个烧烤店分布式系统,但它会随着业务量的增大发展的越来越大。
分布式架构 VS 微服务架构
还有一个比较容易让人混淆的是分布式架构和微服务架构的区别。
所谓分布式架构,它是一种部署架构,即部署在不同的服务器上,相互协同完成某件大事,就可称为分布式。如一个由应用服务器、数据库服务和文件服务器组成的简单网站,也可以称为分布式系统。
所谓微服务架构,它是一种架构设计方式,偏向于根据业务来设计的服务架构。微服务架构通过对业务的拆解,将系统拆分为功能单一的小服务,即形成了微服务架构。例如,一个电商网站拆分成了交易、用户、支付、商品、店铺等微服务,那么这个电商网站就是一个微服务架构。
从范围上看,分布式架构是微服务架构的超集,分布式架构不一定是微服务架构,而微服务架构一定是分布式架构。比如一个由应用服务器、数据库服务器和文件服务器组成的单体应用,是分布式系统,而不是微服务;一个由交易、用户、支付、商品和店铺等微服务组成的电商网站,是微服务架构,同时也是分布式架构。
什么是大型分布式系统
前面介绍了什么是分布式系统,那么什么是大型分布式系统呢?其关键点在一个 “大” 字上。
业务复杂度大
大型分布式系统的第一个“大”,是业务复杂度大。拿一个典型的电商网站举例,可能包括交易、营销、支付、秒杀活动、退款等业务,且每个业务中的复杂度都比较大。
系统数量大
大型分布式系统的第二个“大”,是系统数量大。一个典型的电商网站,内部包含很多业务线,而系统的设计往往会根据业务线来设计。比如有交易和支付两条业务线,交易业务线又包括店铺、商品、营销、订单等子业务,支付包括收银台、路由、账务、会员、渠道等子业务,每个子业务又可以拆分成多个子系统。这样拆分后,一个大型分布式系统里的子系统的数量会非常庞大(几百个以上)。
用户数量大
大型分布式系统的第三个“大”,是用户数量大。To C的互联网平台(如电商、团购、外卖、短视频等)天然具有用户量大的特点,只有用户量大了,才能引发临界点效应,充分发挥平台效应,降低新用户的边际成本,从而赚到钱。
并发量大
大型分布式系统的第四个“大”,是用户的并发量大。在 To C的互联网平台上,往往聚集了非常多的用户,这些用户随时随地都在访问平台,因此,用户的并发访问量非常大。尤其是在一些秒杀活动、新闻热点的时候,并发量更是尤其的大。
综上所述,本文将大型分布式系统定义为:业务复杂、系统数量多、用户数量大、并发访问量大的分布式系统。
总结
本文介绍了什么是分布式系统,所谓分布式系统,就是分布在不同的网络计算机上的软硬件组件,且组件之间通过消息传递进行通信和协调所组成的系统。
本文还定义了什么是大型分布式系统,所谓大型分布式系统,就是业务复杂、系统数量多、用户数量大、并发访问量大的分布式系统。
正所谓 “没有最好的,只有最适合的”,在业务发展过程中,系统架构往往会随着业务的发展而选用最合适的系统架构,系统架构也随之发展。所以,大型分布式系统不是生来就是大型分布式系统的,而是随着业务发展而来的,下一章就看看大型分布式系统的演进过程。
写在最后
好了,既然已经读到了这里,那么你点击下一篇文章的动作,就是我们的握手礼了:“很高兴认识你,我是渔樵,让我们共同揭秘大型分布式系统的技术架构和解决方案吧!”