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

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

相关推荐
π大星星️3 小时前
基于LNMP架构的个人博客系统部署
服务器·架构
程序员曼布3 小时前
主从架构:技术原理与实现
redis·mysql·架构
张青贤4 小时前
K8s中的containerPort与port、targetPort、nodePort的关系:
云原生·容器·kubernetes
Chase_Mos6 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
zhojiew11 小时前
istio in action之服务网格和istio组件
云原生·istio
小小工匠11 小时前
架构思维:通用架构模式_系统监控的设计
架构·系统监控
佩奇的技术笔记11 小时前
Java学习手册:微服务设计原则
java·微服务
敢敢のwings13 小时前
Dense 与 MoE 系列模型架构的全面对比与应用策略
架构
代码的奴隶(艾伦·耶格尔)13 小时前
微服务!!
微服务·云原生·架构
码农飞哥15 小时前
互联网大厂Java面试实战:Spring Boot到微服务的技术问答解析
java·数据库·spring boot·缓存·微服务·消息队列·面试技巧