微服务和SOA:结合起来更完美

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: 本文讲的是微服务和SOA:结合起来更完美【编者的话】本文分析了企业内多种架构并存及整合的现实性和合理性,并分别简单分析了微服务和 SOA 架构的特点,指出二者可以形成完美的互补,以提高企业效率,减少 IT 成本。
本文讲的是微服务和SOA:结合起来更完美【编者的话】本文分析了企业内多种架构并存及整合的现实性和合理性,并分别简单分析了微服务和 SOA 架构的特点,指出二者可以形成完美的互补,以提高企业效率,减少 IT 成本。

尽管微服务不会替代面向服务的架构(SOA),但是二者在企业环境中可以互相补充。

整合是必要的

没有一个企业可以只用一种技术或一个系统就能满足所有计算需求。所有企业都需要由多种编程语言,多个供应商应用,多个合作系统,以及遗留应用来构成。

仅仅一种架构风格不能满足IT需求,因为我们通常需要处理遗留的各种离散技术,异构技术,不同的供应商系统,等等等等。最重要的是,每个系统都拥有不同的架构能力。

当一个新项目加入进来时,多数解决方案都会牵涉到评估系统中已存在的投入,服务种类,以及员工已具备的技能和经验集合。使用已存在的系统来设计方案是唯一可行的应用整合方式。

应用整合,用穆勒的话说,就是:

“企业内不同应用间的进程和数据共享。不论对大企业还是小企业,它已成为一个关键任务,去连接各种应用,评估跨企业的应用协作,以提升总体商业效率,增强可扩展性,以及减少IT成本。”
应用整合可以在三个层面进行:
  1. 用户接口整合(门户网站),尽管某些人可能会说这是个过期的整合风格,综合考虑应该推迟。
  2. 系统或服务整合
  3. 数据整合

软件架构

专家承认,没有一种架构是能满足所有企业的IT需求的。它依赖于你设计什么系统,以及它将在哪里使用。

一些著名的架构风格如下:
  • 层次架构
  • 事件驱动架构
  • 面向服务架构
  • 微服务架构
  • 基于服务的架构
  • 微内核架构

微服务和SOA

尽管了解所有架构模式很重要,但微服务架构在如今的分布式应用中引领潮流。

微服务对应用开发来说确实是一个考虑周密的架构模式,进一步的服务是通过 RESTful 接口暴露的。

ms.png

图1. 微服务架构图

微服务的部分特点是,它们不共享东西,有限界上下文(bounded context),使用 RESTful 服务接口,采用直接调用和 API 层调用,相比维护旧代码更偏好重写,以及独立部署。

这些特点中的一部分可理解成原子服务,没有分布式事务,无状态(因为它们通过 REST 暴露),不太确定的是微服务的合适大小,以及幂等性。

SOA 不止是 ESB 或者一个成熟的产品。SOA 是企业层面的架构风格,带来各种服务和系统的可视化,包括REST服务,SOAP服务,以及通过服务层的遗留应用等。

soa.png

图2. SOA 结构图

SOA 的特点是,它包含系统的互操作性,提供本地支持以整合、补充微服务和云,促进 IT 资产的重用,以及包含服务分类。

SOA 不会规定如何实现一个服务。这是留给每个服务设计者的事。因为 SOA 主要解决应用整合问题,所以它为大部分的整合需求而工作,如基于文件的整合,基于数据的整合,以及基于 web service(WS)的整合。这些在 SOA 中都可以通过 JCA,适配器等做到。

以下是摘自 Lucas Jellema 的 SOA 手册的涉及 SOA 的服务的一些本质特征:
  • 只要可能,服务都应该支持原子操作。
  • 服务应该无状态以使遗留足迹尽可能得小。
  • 服务应该保持幂等以允许重试而不产生副作用。
  • 服务应该大小适中。

现在,如果你稍微往回看一下,你会发现微服务的特点完美得匹配了 SOA 服务的服务定义。

SOA 架构下任意分类的服务都能被微服务具体化。或许那就是为什么每个人都说:"微服务即 SOA 使用得当!"那些做预算和项目支出的,难道你不同意企业级的任何服务都是可重用的吗?

总结一下,微服务不会替代 SOA,但是它们可以在大企业内和 SOA 形成非常完美的互补。

原文发布时间为:2016-12-28

本文作者:池剑锋

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:微服务和SOA:结合起来更完美

相关文章
|
3月前
|
架构师 中间件 API
微服务和 SOA 的 6 大核心区别,你都知道吗?
本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务和 SOA 的 6 大核心区别,你都知道吗?
|
3月前
|
微服务
微服务与SOA区别
微服务与SOA区别
40 0
微服务与SOA区别
|
6月前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
162 6
|
7月前
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
592 0
|
9月前
|
敏捷开发 中间件 测试技术
微服务和SOA的区别是什么?
SOA的服务粒度相对较粗。在SOA中,一个服务可能是一个相对较大的功能模块,如“员工管理系统”。 微服务的服务粒度更细。在微服务架构中,同样的“员工管理系统”可能会被拆分为“员工信息管理”、“员工考勤管理”、“员工假期管理”等多个独立的服务。
151 3
|
前端开发 Java 应用服务中间件
单体架构、垂直应用架构、分布式、SOA、微服务之间有什么关系和区别
单体架构、垂直应用架构、分布式、SOA、微服务之间有什么关系和区别
322 5
|
运维 监控 Java
微服务:知识点梳理(SOA、服务拆分、服务治理、分布式事务)
微服务:知识点梳理(SOA、服务拆分、服务治理、分布式事务)
3666 1
微服务:知识点梳理(SOA、服务拆分、服务治理、分布式事务)
|
存储 SpringCloudAlibaba 前端开发
【Java】什么是SOA架构?与微服务有什么关系?
【Java】什么是SOA架构?与微服务有什么关系?
485 0
|
微服务
SOA和微服务架构
SOA和微服务架构
分布式系统实战:什么是微服务架构?微服务架构与SOA架构的区别
自2014年业界提出“微服务(Microservices)”的概念以来,微服务架构就不断演进,并且日趋火爆。越来越多的企业拥抱微服务,期望通过微服务的架构来解决大型项目的管理与运维。