分布式架构的前世今生 - 小白人话版

半兽人 发表于: 2019-07-29   最后更新时间: 2021-10-09 23:54:28  
{{totalSubscript}} 订阅, 2,631 游览

这几天,收到用户的留言,想了解一下分布式架构。分布式架构网上说的非常好了,那我这边用现实的场景来总结一下吧。

分布式的核心是:能通过增加机器来解决系统瓶颈的,就是分布式架构。

请大家谨记这句话。

单体架构

5年前,orchome网站创立之时,为了节约成本,就在阿里买了一台服务器(年费2000),为了省钱,orchome的代码我都写在一个java程序里,这台机器上也安了数据库。而此种架构就是单体架构
screenshot

垂直水平架构

1年后,随着网站的流量越来越大,网站响应速度也随之下降,这个时候我又买了2台机器(费用涨到了6000,肉疼)。

这不行啊,得节约成本那。

接着分析了下orchome的java程序中,一共有3个业务模块,文章用户交易。用户模块只有登录需要,交易呢是打赏才会用的,其实压力都在文章模块中,大量的展示、变更,那么真正需要扩展的只有文章业务模块。

我就把orchome按3个业务模块抽离了出来,分出了3个java程序,这样,文章模块独占2台机器,交易和用户只部署在同1台,而且没有压力,就把这台配置调小,这种,就是垂直架构(费用4500,节约了1500)。

这种也叫垂直水平拆分。各个业务模块都部署上多台服务器来均衡这些数据量,每台服务器承担一部分的用户访问量,每台上的系统是一样的。压力上去了,我只扩展有压力的业务,就可以了,这是就是水平扩展

分布式架构

现在很多小公司根本不优化代码了,直接通过扩机器来解决瓶颈问题,就不花人力成本去优化架构了。

那么一个系统的瓶颈在那?

数据库

所有的java程序都要访问数据库进行存储,程序可以水平扩展,但数据库只有1个,它的瓶颈就是你整个系统的瓶颈。那数据库也是个程序,同样,数据库需要将你存储的数据分片解决瓶颈,所以后来就有了分布式数据库。

说到这里,我想大家已经清楚分布式的核心意思了。

无论是mysql,kafka,redis,或者其他任何程序,如果能通过增加机器来解决系统瓶颈的,就是分布式架构。

更新于 2021-10-09

查看java更多相关的文章或提一个关于java的问题,也可以与我们一起分享文章