单体架构 浅谈

单体架构

单体架构是最常见的架构方式,将所有功能、业务逻辑都放在一个web容器中,成为一个应用。这就是我们常说的单体架构。

例如,我们有一个小型商城系统,那么如下图所示:

小型商城

在这里,我们将所有的功能都放在一个web容器中,例如订单管理、商品管理、支付功能、通知功能、购物车管理、物流相关等。

单体架构下,我们发现性能跟不上了,怎么办?

我们可以通过LoadBalance扩容,也就是找台机器,将web目录拷过去,把web服务器启动,然后挂在我们的LVS下即可。

单体架构扩容

但是,很明显,单体架构下只能线性、水平的扩展,不能做到某些功能更常用就扩展某些功能。
例如,我们在上面的例子中,发现购物车的访问量比 物流、支付 功能的访问量大了十倍。这个情况下,单体架构也只能将整个应用都部署到其他机器上。

单体架构的优缺点

优点:

易于开发:在项目初期、小型项目的情况下,逻辑不复杂,功能也比较单一,开发起来很直观也很方便。
易于部署:直接找一台机器,把目录/war包 拷过去启动web服务就可以用。
易于水平扩容:直接找一台机器,把目录/war包 拷过去启动web服务,然后挂在LVS下即可。

缺点:

过载的web容器:所有的功能都在一个war包中。
难以持续集成:每次打包就得花半天
功能扩展困难:牵一发动全身,改一个,测全部
技术栈单一且易过时:其实我们做技术的人,都会有一定的技术追求,都希望用最酷的技术来做最酷的事情。但现在流行的技术,5年之后就已经老掉牙了,但你想对已有的单体架构做技术升级,代价大、困难大。最终只能将错就错的维护,或者是花费很大代价重构。

对单体架构的介绍就到这里,下一篇文章,将会带来 微服务思想 的介绍