微服务与传统垂直架构和SOA比较
传统垂直架构
传统垂直架构一般是在业务量非常小,业务系统非常简单的系统架构中使用,
在这个阶段一般采用SSH,SSM或者spring+mybatis)框架作为项目的关键技术,Struts负责web层逻辑控制、Spring负责业务层管理Bean、Hibernate/mybatis负责数据库操作进行封装,持久化数据。
如果公司进一步的做大,垂直子系统会变的越来越多,系统和系统之间的调用关系呈指数上升的趋势。
在这样的背景下,很多公司都会考虑服务的SOA化。
SOA
软件即服务,将单个业务软件系统作为接口提供服务。
SOA代表面向服务的架构,将应用程序根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA缺点;
微服务
微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。
与SOA相比,有以下区别:
- 微服务架构强调业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外提供服务微服务。
- 不再强调传统SOA架构里面比较重的ESB企业服务总线
- 微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。
- 微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用HTTP Rest API的方式来进行微服务的切分粒度会更小。
微服务优点:
- 通过分解巨大单体应用为多个服务方法解决了复杂性问题。
- 微服务架构模式使得每个微服务独立部署,开发者不再需要协调其它服务部署对本服务的影响。
- 微服务架构模式使得每个服务可独立扩展。
- 微服务可有效的拆分应用,实现敏捷开发和部署。
不足:
为什么选择spring cloud
- Spring Cloud来源于Spring,质量、稳定性、持续性都可以得到保证。
- Spirng Cloud天然支持Spring Boot,更加便于业务落地。
- Spring Cloud发展非常的快,从16年开始接触的时候相关组件版本为1.x,到现在已经发布了2.1.3系列
- Spring Cloud是Java领域最适合做微服务的框架。相比于其它框架,Spring Cloud对微服务周边环境的支持力度最大。对于中小企业来讲,使用门槛较低。Spring Cloud 是微服务架构的最佳落地方案