• 系统架构 垂直拓展 水平拓展的区别


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

    单体架构:

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

    水平拓展:

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

      

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

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

     

    垂直拓展:

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

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

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

      

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

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

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

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

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

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

  • 相关阅读:
    优化输出质数
    springboot嵌入式Servlet容器自动配置原理
    springboot中配置servlet三大组件
    springboot中springmvc的自定义配置
    springboot实现自定义国际化
    springboot错误处理机制及自定义错误处理
    SpringBoot对静态资源的映射规则
    docker中启动mysql容器
    Java函数式编程(一)
    java并发编程之美——高级篇(三)
  • 原文地址:https://www.cnblogs.com/cxygg/p/16414129.html
Copyright © 2020-2023  润新知