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

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 |
| 服务能独立部署 | 服务相互依赖,部署复杂 |

相关推荐
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
Java程序之猿6 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
Karoku0668 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
Yvemil78 小时前
《开启微服务之旅:Spring Boot Web开发举例》(一)
前端·spring boot·微服务
小蜗牛慢慢爬行9 小时前
Hibernate、JPA、Spring DATA JPA、Hibernate 代理和架构
java·架构·hibernate
思忖小下10 小时前
梳理你的思路(从OOP到架构设计)_简介设计模式
设计模式·架构·eit
Yvemil712 小时前
《开启微服务之旅:Spring Boot Web开发》(二)
前端·spring boot·微服务
维李设论12 小时前
Node.js的Web服务在Nacos中的实践
前端·spring cloud·微服务·eureka·nacos·node.js·express
探索云原生13 小时前
在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
ai·云原生·kubernetes·go·gpu