SOA架构和微服务架构的区别是什么?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: SOA架构和微服务架构的区别

SOA架构和微服务架构的区别

首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。


1.SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在于操作系统进程中。各个服务之间 通过网络调用。


2.微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。


微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想


ESB和微服务API网关。

1.ESB(企业服务总线),简单 来说 ESB 就是一根管道,用来连接各个服务节点。为了集 成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通;

image.png

2.API网关:API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。


API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。为什么微服务一定要有网关?这篇推荐你看下。


API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

image.png

image.png

3.SOA架构特点:

系统集成:站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成 规整、可治理的系统间星形结构,这一步往往需要引入一些产品,比如 ESB、以及技术规范、服务管理规范;这一步解决的核心问题是【有序】


系统的服务化:站在功能的角度,把业务逻辑抽象成 可复用、可组装的服务,通过服务的编排实现业务的 快速再生,目的:把原先固有的业务功能转变为通用 的业务服务,实现业务逻辑的快速复用;这一步解决 的核心问题是【复用】


业务的服务化:站在企业的角度,把企业职能抽象成 可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。第三步,则是以业务驱动把一个业务单元封装成一项服务。这一步解决的核心问题是【高效】


微服务架构特点:

1.通过服务实现组件化

开发者不再需要协调其它服务部署对本服务的影响。

2.按业务能力来划分服务和开发团队

开发者可以自由选择开发技术,提供 API服务

3.去中心化

每个微服务有自己私有的数据库持久化业务数据


每个微服务只能访问自己的数据库,而不能访问其它服务的数据库


某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的数据库,而是通过对于微服务进行操作。


数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术(SQL、NoSQL等)。在复杂的业务场景下,如果包含多个微服务,通常在客户端或者中间层(网关)处理。


4.基础设施自动化(devops、自动化部署)

Java EE部署架构,通过展现层打包WARs,业务层划分到JARs最后部署为EAR一个大包,而微服务则打开了这个黑盒子,把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个全栈应用,可以通过自动化方式独立部署。


每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能实现集中化管理(因为服务太多啦,不集中管理就无法DevOps啦)。


关注微信公众号:Java技术栈,在后台回复:架构,可以获取我整理的 N 篇最新架构教程,都是干货。


5.主要区别:

image.png

6.Dubbo服务的最佳实践

分包

服务接口、请求服务模型、异常信息都放在api里面,符合重用发布等价原则,共同重用原则


api里面放入spring的引用配置。也可以放在模块的包目录下。


粒度

尽可能把接口设置成粗粒度,每个服务方法代表一个独立的功能,而不是某个功能的步骤。否则就会涉及到分布式事务


服务接口建议以业务场景为单位划分。并对相近业务做抽象,防止接口暴增


不建议使用过于抽象的通用接口泛型,接口没有明确的语义,带来后期的维护


版本

每个接口都应该定义版本,为后续的兼容性提供前瞻性的考虑 version (maven-snapshot)


建议使用两位版本号,因为第三位版本号表示的兼容性升级,只有不兼容时才需要变更服务版本


当接口做到不兼容升级的时候,先升级一半或者一台提供者为新版本,再将消费全部升级新版本,然后再将剩下的一半提供者升级新版本


预发布环境

推荐用法


在provider端尽可能配置consumer端的属性


比如timeout、retires、线程池大小、LoadBalance


配置管理员信息


application上面配置的owner 、 owner建议配置2个人以上。因为owner都能够在监控中心看到

配置dubbo缓存文件


注册中心的列表


服务提供者列表


目录
相关文章
|
21小时前
|
存储 Prometheus 监控
云原生架构下的微服务治理之道
在数字化转型的大潮中,云原生技术以其弹性、可扩展和高度自动化的特点成为企业IT架构升级的首选。本文将深入探讨云原生架构下微服务治理的核心要素,包括服务发现、配置管理、流量控制等关键问题,旨在为读者提供一套系统的微服务治理策略。通过分析云原生环境下的微服务特点,结合具体的技术和工具,文章将为构建高效、稳定、易于管理的微服务系统提供实践指导。
|
21小时前
|
运维 监控 Cloud Native
探索云原生架构的未来:容器化与微服务
在数字化浪潮的推动下,云原生技术正迅速成为企业数字化转型的核心。本文将深入探讨云原生架构的关键组成部分——容器化和微服务,并分析它们如何共同塑造着现代软件的开发、部署和运维。我们将从容器的基本概念出发,逐步解析微服务架构的设计原则,以及它们如何适应快速变化的市场需求。通过实际案例,我们还将揭示云原生技术带来的挑战与机遇,为读者提供一幅云原生技术发展的全景图。
|
21小时前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理实践
在云计算的浪潮中,云原生架构以其弹性、可扩展性及高效的资源利用成为企业数字化转型的首选。本文将深入探讨云原生环境下微服务的治理策略,包括服务发现、配置管理、流量控制等关键组件的应用,并通过案例分析展示如何构建健壮、灵活的微服务系统。
5 0
|
22小时前
|
监控 持续交付 开发者
探索后端开发中的微服务架构实践
在软件工程的广阔天地中,微服务架构以其独特的魅力和优势逐渐成为后端开发的新宠。本文将深入探讨微服务的核心概念、设计原则以及在实际项目中的实施策略和面临的挑战,旨在为后端开发者提供一套清晰的微服务实践指南。
|
1天前
|
运维 监控 API
打造高效后端:微服务架构在现代应用中的实践
本篇文章探讨了微服务架构在现代应用中的实际应用,重点介绍了其优势、挑战以及最佳实践。通过具体案例和技术细节,我们将深入了解如何设计、实现和维护一个高效的微服务架构,以满足不断变化的业务需求。
11 0
|
2天前
|
弹性计算 负载均衡 API
微服务架构下的API网关模式解析
在现代软件工程中,微服务架构因其灵活性和可维护性而受到青睐。本文将探讨API网关模式在微服务架构中的关键角色,分析其设计原则、实现方式及面临的挑战,并结合实际案例阐述如何有效整合API网关以提升系统整体性能和安全性。
|
3天前
|
敏捷开发 负载均衡 Java
微服务架构下的服务治理策略
【6月更文挑战第18天】在微服务架构日益成为企业IT架构转型的标配时,如何有效管理与维护这些服务成为了一个挑战。本文将探讨微服务架构下的服务治理策略,包括服务发现、配置管理、负载均衡、故障转移和熔断机制等关键技术点,旨在为读者提供一套完整的服务治理解决方案。
|
2天前
|
设计模式 负载均衡 API
微服务架构中的服务发现与注册中心
【6月更文挑战第19天】在微服务架构的海洋中,服务发现和注册中心扮演着灯塔的角色,指引着服务间的通信。本文将深入探讨服务发现的机制、注册中心的实现,以及它们如何协同工作以维护一个健康、动态的服务网络。我们将通过比喻和实例,揭示这一复杂系统背后的简洁之美。
9 3
|
2天前
|
存储 运维 监控
云原生架构下的微服务治理实践
【6月更文挑战第19天】在数字化转型的浪潮中,云原生技术以其灵活、可扩展的特性成为企业IT架构升级的首选。本文深入探讨了在云原生架构下,如何有效实施微服务治理,包括服务发现、配置管理、服务监控和故障处理等方面的最佳实践。文章旨在为读者提供一套全面的微服务治理框架,帮助团队构建更加稳定、高效的分布式系统。
5 2
|
2天前
|
运维 监控 Cloud Native
云原生时代的微服务架构演进
【6月更文挑战第19天】在数字化转型的浪潮下,云原生技术成为支撑现代应用架构的关键力量。本文将探讨微服务架构在云原生环境下的演进路径,分析其设计理念的转变,以及如何借助容器化、自动化和服务网格等技术实现高效的微服务治理。文章旨在为开发者和架构师提供实践指导,帮助他们构建更加灵活、可扩展的应用系统。