什么事水平拆分,什么事垂直拆分?系统架构的发展趋势是怎么样子的?

 

单体架构:

  假设我们有一个系统,点餐系统,刚开始只有一家店子在用,用户量就那么10几人到几十人,实现这样一个系统,我们可以在这个系统里面写上我们的全部业务逻辑,关于用户的,订单的,商品的都写到一起,并且我们用一台电脑作为服务器就可以支持整个系统的运行。

 

 

水平拓展:

  后来这个店子店子越来越大,在本市区周边的市区都开了了几家分店,高峰时期同时在线几百人。总店的那个一台电脑跑着的单体架构的点餐系统就优点顶不住了,在业务高峰总是很慢很卡,点餐体验变差,所以这时候我们考虑用2台机子来跑这个程序,两台机子都跑的那个单体架构的程序,然后前面有个负载均衡程序入口。这两台机子做的是一模一样的事情,没有任何区别,用的也是同样的一份数据库,只是多一台机子来分担压力而已。

  

  水平拓展并不一定需要系统的拆分,加机子,跑一样的程序就行了。水平拓展解决了,用户量增加带来的系统压力。水平拓展里面如果重头到位都是水平的,相当于多个并行系统,他们直接甚至可以毫无关系,所以分布式事务在水平拓展中不是必须的。

 

  多节点协同工作,但是他们做的是一模一样的事情,那么他们就只是集群。

 

 

垂直拓展:

  这个餐饮店的系统很好用,周围的餐饮老板都觉得好,然后就向他租用这个系统,餐饮店老板感觉靠点餐系统收费,比自己开店舒服多了,就把把店子关了,改成机房一心做点餐系统,但是租用系统的人原来越多,每家都有各自自定义需求,点餐系统功能越来越多,虽然水平拓展可以解决客户的拓展,但是系统功能越来越多,单机跑一个完整系统的功能已经很吃力了,所以这时候老板只能垂直拆分,用多个机子来提供一个完整的系统功能,比如3台机子分别跑着用户相关的逻辑,订单相关的逻辑,商品相关的逻辑。这样单系统的单机瓶颈也解决了。

 

  垂直拓展,需要系统的垂直拆分,可以决绝系统太多,业务台复杂,单机的单机瓶颈问题。垂直系统

 

  明显垂直拓展一般都会使用到水平拓展,当然,如果这个是系统不是为大量用户提供,自是业务逻辑非常庞大,涉及到的流程特别多,只需要垂直拆分也是可以的。

  

  垂直拆分的节点之间,相互协同工作,并且他们做的事情各不相同,这就是分布式系统,分布式系统,如果重视数据的一致性,需要考虑分布式事务。

 

  垂直拆分一般是和水平拆分一起用的,水平拆分代价低,拓展成本低,是优先考虑的拓展方式。我们说的分布式架构的系统一般指的是分布式集群架构的系统。

 

 

 

我们来看看区别,水平架构,每个节点跑的都是样的系统,出现瓶颈的时候可能是IO,内存,CPU,我们水平拓展,只能全都加,可控力度小,资源浪费。

分布式额垂直+水平拆分,我们可以把 IO 先关的业务机子IO 硬件搞好点,CPU 瓶颈的机子CPU搞好点,商品用户浏览的最多,我们多启动几个节点,这样控制力度就很细,资源就会节省。

指的一提的是,如果每台机子都很小,系统量有不大,拆太细,很多很大比例的资源都被JVM 或者 框架吃了,也是很不合理的事情。

 

水平加拓展的拓展的架构,默认启动多少节点是我们定的,不是童泰分配的,上午有商品活动,用户关注商品,商品服务压力大,下午有个热点,大家都在评论,评论服务的压力就大,这时候可以动态分配不同类型节点的数量,使老解决用户使用的业务偏向问题,毕竟人就那么多,但是人的行为有偏向。