什么是SOA

SOA服务治理

为什么会出现SOA

系统架构演变

随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此也不断的演进、升级、迭代。
从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构。让我们来看一下它们各自的特点:

集中式架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。
image
存在的问题

· 代码耦合,开发维护困难
· 无法针对不同模块进行针对性优化
· 无法水平扩展
· 单点容错率低,并发能力差

垂直拆分

当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分:
image
优点:

· 系统拆分实现了流量分担,解决了并发问题
· 可以针对不同模块进行优化
· 方便水平扩展,负载均衡,容错率提高

缺点:

· 系统间相互独立,会有很多重复开发工作,影响开发效率

分布式服务

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,
使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式调用是关键。
image

优点:

· 将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率

缺点:

· 系统间耦合度变高,调用关系错综复杂,难以维护

SOA

由上文,我们可以得知现如今的开发大都不采用集中架构, 垂直架构, 例如ssm开发的项目,多为分层的,controller层/service层/mapper层等, springBoot的开发将这些层级分成了模块, 但如果将每个服务, 分成模块就会产生很多的模块.
当服务越来越多, 容量的评估, 小服务资源的浪费便逐渐显现.所以,一个调度中心于多服务的系统而言显得十分有必要.
基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键
image
解决了什么问题

  1. 服务越来越多, 需要管理每个服务的地址
  2. 调用关系复杂, soa方便理清依赖关系
  3. 服务过多, 服务状态难以管理, 无法根据服务情况动态管理

服务治理要做什么

  1. 服务注册中心, 实现服务的自动注册和发现, 无需人为记录服务地址
  2. 服务自动订阅, 服务列表自动推送, 服务调用透明化, 无需关心依赖关系
  3. 动态监控服务状态, 人为控制服务状态

缺点

  1. 服务间会有依赖关系, 一旦某个环节出错, 会影响较大
  2. 服务关系复杂 , 运维/测试/部署困难, 不符合DevOps(开发部署等一体化)思想
posted @ 2022-08-09 08:47  DevourZuan  阅读(319)  评论(0编辑  收藏  举报