Spring Cloud 作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面。
本次分享主要解答这两个问题:
- Spring Cloud 在微服务的架构中都做了哪些事情?
- Spring Cloud 提供的这些功能对微服务的架构提供了怎样的便利?
我们先来简单回顾一下,我们以往互联网架构的发展情况:
传统架构发展史
单体架构
单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个 Web 容器就可以跑起来,比如我们开发的开源软件云收藏,就是标准的单体架构。
在两种情况下可能会选择单体架构:
- 在企业发展的初期,为了保证快速上线,采用此种方案较为简单灵活。
- 传统企业中垂直度较高,访问压力较小的业务。在这种模式下对技术要求较低,方便各层次开发人员接手,也能满足客户需求。
下面是单体架构的架构图:
在单体架构中,技术选型非常灵活,优先满足快速上线的要求,也便于快速跟进市场。
垂直架构
在单体架构发展一段时间后,公司的业务模式得到了认可,交易量也慢慢的大起来,这时候有些企业为了应对更大的流量,就会对原有的业务进行拆分,比如说:后台系统、前端系统、交易系统等。
在这一阶段往往会将系统分为不同的层级,每个层级有对应的职责,UI 层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和上层进行数据交换和存储。
下面是垂直架构的架构图:
在这个阶段 SSM(Spring + SpringMVC + MyBatis)是项目的关键技术,SpringMVC 负责 Web 层逻辑控制,Spring 负责业务层管理 Bean,MyBatis 负责对数据库操作进行封装,持久化数据。
服务化架构
如果公司进一步的做大,垂直子系统会变的越来越多,系统和系统之间的调用关系呈指数上升的趋势。
在这样的背景下,很多公司都会考虑服务的 SOA 化。SOA (Service-Oriented Architecture) 代表面向服务的架构,将应用程序按照不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。
这样将整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA 服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务层是 SOA 的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。<