单体架构、SOA、微服务架构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/88652590

1. 单体架构的问题

  在Java Web开发中,web工程一般会被打包为war包部署在Servlet容器中,如Tomcat。比较简单,开发和调试部署都很方便。
  但是当用户量大时,并发量高时,一台机器是无法满足系统的负载的,我们会考虑水平拓展,比如增加服务器的数量,通过负载均衡器(如Nginx)很容易实现应用的水平拓展。但是时间推移,还是会产生很多问题:

  1. 应用复杂度增加,更新、维护困难
  2. 影响开发效率
  3. 应用可靠性降低,这么大一个应用比如出现一个Bug,整个崩溃。

2. SOA

  针对传统的单体架构问题。大部分企业通过SOA(Service-Oriented Architecture,面向服务的架构)来解决。SOA的思路是把应用中相近的功能聚合到一起,以服务的形式提供出去,可以理解为一批服务的组合。
  SOA将原来的单体架构按照功能细分为不同的子系统,然后再由各个子系统依赖服务中间件来调用所需服务。
  使用SOA将系统切分为多个组件服务,这种通过多个组件服务来完成请求的方式有很多好处,比如不同团队的可以负责不同的子项目;模块拆分,使用通讯接口,降低了模块之间的耦合度等等。


微服务架构

  微服务架构是一种架构风格和架构思想,它倡导文明在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API(一般使用REST API),可以独立承担对外服务的职责。
  微服务架构和SOA区别

微服务架构 SOA
一个系统被拆分为多个服务,粒度小 服务由多个子系统组成,粗粒度
团队级,自底向上开展实施 企业级,自顶向下开展实施
无集中式总线,松散的服务架构 企业服务总线,集中式的服务架构
集成方式简单(HTTP./REST/JSON) 集成方式复杂(ESB/WS/SOAP)
服务能独立部署 服务相互依赖,无法独立部署

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/88652590