单体架构存在的不足:

1、业务越来越复杂,单体应用的代码量越来越大,代码的可读性、可维护性和可扩展性

下降,新人接手代码所需的时间成倍增加,业务扩展带来的代价越来越大。

2、随着用户越来越多,程序承受的并发越来越高,单体应用的并发能力有限。

3、测试的难度越来越大,单体应用的业务都在同一个程序中,随着业务的扩张、复杂度

的增加,单体应用修改业务或者增加业务或许会给其他业务带来一定的影响,导致测

试难度增加。

单体架构使用服务器集群及存在的不足:

随着业务的发展,大多数公司会将单体应用进行集群部署,井增加负载均衡服务器(例如Nginx 等〉。另外,还需要增加集群部署的缓存服务器和文件服务器,并将数据库读写分离,以应对用户量的增加而带来的高并发访问量。

 

用负载均衡服务器分发高并发的网络请求,用户的访问被分派到不同的应用服务器,应用服务器的负载不再成为瓶颈,用户量增加时,添加应用服务器即可。通过添加缓存服务器来缓解数据库的数据以及数据库读取数据的压力。大多数的读取操作是由缓存完成的,但是仍然有少数读操作是从数据库读取的,例如缓存失效、实时数据等。当有大量的读写操作时,将数据库进行读写分离是一个不错的选择,例如MySQL 的主从热备份,通过相关配置可以将主数据库服务器的数据同步到从数据库服务器, 实现数据库的读写分离, 读写分离能够改善数据库的负载能力。

 

这种架构有一定的处理高并发的能力, 也能应对一定复杂的业务需求,改善了系统的性能, 但是依然没有改变系统为单体架构的事实。

此时存在的不足之处如下

  1. 系统仍然为单体应用, 大量的业务必然会有大量的代码,代码的可读性和可维护性依然很差。
  2. 面对海量的用户,数据库将会成为瓶颈,解决方案将使用分布式数据库,也就是将数据库进行分库分表。
  3. 持续交付能力差,业务越复杂,代码越多,修改代码和添加代码所需的时间越长。新人熟悉代码的时间长、成本高。