一、单体架构

单体架构就是把所有的业务模板编写在一个项目中,最终会打包成一个war包,然后进行部署运行。单体服务架构如下:

微服务架构与docker 微服务架构与单体架构_java


单体架构的优点:

1、部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可

2、技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。

3、用人成本低:单个程序员可以完成业务接口到数据库的整个流程。

单体架构的缺点;

1、系统启动慢,一个进程包含了所有的业务逻辑,涉及到的启动模块多,导致系统的启动,重启周期长;

2、系统的错误隔离性差,可用性差,任何一个模块的错误可能导致整个系统的宕机;

3、可伸缩性差,系统的扩容只能对整个应用扩容,不能做到对整个功能点进行扩容;

二、微服务架构

微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己进程中。

Spring Cloud并不是一个项目,他是一套项目的组合,Spring Cloud中存在很多子项目,每个子项目都是针对微服务系统架构存在的问题给出的一种解决方案。Spring Cloud是基于Spring Boot实现的。

微服务架构图如下:

微服务架构与docker 微服务架构与单体架构_spring_02


微服务的优点:

1、易于开发和维护:一个服务只关注一个特定的业务功能,所以业务清晰,代码量少。

2、单个服务启动快:单个服务代码量少,所以启动快;

3、局部修改易部署:单个应用只要有修改,就得重新部署整个应用,微服务解决了这个问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;

4、技术栈不受限:在微服务架构中,可以结合业务和团队的特点,合理选用技术栈。例如有些服务可以使用关系型数据库Mysql,有的服务可以使用非关系型数据库redis。甚至可根据需求,部分服务使用JAVA开发,部分微服务使用Node.js开发;

5、按需收缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合微服务的特点,增加内存,升级CPU或增加节点。

微服务的缺点:

运维要求高:更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的运行即可,在微服务架构中,需要保证几十个甚至几百个服务器正常运行和协作,这给运维带来了巨大的挑战;