微服务架构与面向服务架构

1.微服务架构

微服务架构是SOA架构的进一步优化,去除了ESB企业服务总线,是去中心化的分布式架构。将大型单体应用拆分成一组微小的服务,同时保持总体功能不变。每个微服务负责单一的业务功能、独立开发、独立配置、独立部署,降低了微服务之间的耦合程度,不同的微服务采用不同的技术,服务独立,数据源唯一,应用极易扩展和维护,同时降低了系统复杂性。

微服务带来的挑战:

  1. 并非所有的系统都能转成微服务。

  2. 每个微服务需要单独部署,从而增加了部署的复杂度,容器技术能解决这一问题。

  3. 微服务之间只能通过标准接口进行通信,可能产生延迟或调用出错。

  4. 作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。

面向服务架构

面向服务架构(SOA)是一个组件模型,将系统整体拆分为多个粗粒度、松耦合、独立 的功能模块,称之为服务,服务之间通过简单、精确定义的接口进行通信。SOA架构以企业服务总线连接各个子系统,是集中式的技术架构。应用服务间相互依赖导致部署复杂,应用间交互使用远程通信,降低了响应速度。

ESB的定义:ESB是由中间件技术实现的支持SOA架构的基础软件平台,主要支持异构系统集成,支持异构环境中的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量QoS和可管理性。

ESB的主要功能

  1. 服务注册和发现

  2. 服务位置透明性

  3. 消息路由和寻址服务

  4. 消息传递

  5. 传输协议

  6. 数据格式转换

  7. 日志和监控

微服务和SOA比较

|------------------|------------------|
| 微服务 | SOA |
| 细粒度 | 粗粒度 |
| 去中心化 | 集中式 |
| 每个服务专注于单一功能,功能单一 | 是整体的,服务能放一起的都放一起 |
| 轻量级的通信机制,HTTP | 企业服务总线ESB |
| 独立部署 | 整体部署 |
| 纵向业务划分 | 水平多层 |
| 组件小 | 存在较复杂的组件 |
| 业务逻辑存在于每一个服务中 | 业务逻辑横跨多个业务领域 |
| 一个系统被拆分成多个服务 | 服务由多个子系统组成 |
| 去中心化,松散的服务架构 | 企业服务总线,集中式的服务架构 |
| HTTP、REST、JSON | ESB、SOAP |
| 服务能独立部署 | 服务相互依赖,部署复杂 |

相关推荐
mghio7 小时前
Dubbo 中的集群容错
java·微服务·dubbo
uhakadotcom9 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
沉登c12 小时前
第 3 章 事务处理
架构
阿里云云原生12 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生12 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
数据智能老司机14 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机15 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
云上艺旅15 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
c无序15 小时前
【Docker-7】Docker是什么+Docker版本+Docker架构+Docker生态
docker·容器·架构
数据智能老司机15 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构