文章目录
- 1、场景引入
- 2、面向服务的架构SOA
- 3、微服务架构
- 4、对比与联系
- 5、服务治理平台
1、场景引入
如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。假如这个页面所展示的信息,都来自各个不同的系统/应用,我们通过各个接口把这些数据展示出来。如果我们现在要在前端页面展示这几项数据的话,我们应该怎么去展示呢?
- 在这种情况下,我们不可能让客户端与6个不同的应用/系统都一一去通信来去完成数据的展示。而是6个应用/系统之间进行彼此通信来完成调用,最后客户端只需要调用一个接口来获取数据即可,而不是与每一个应用/系统进行通信。
- 一个电商系统,比如淘宝,我们在首页会展示很多数据信息,例如:首页信息、商品信息、个人信息、推送信息等等很多。如果首页展示的数据来自100个不同的应用/系统,那么通过如上架构,我们在后端便会出现几百个乃至上千个通信的交互,那么后端的结构就会变得非常的庞大和复杂。所以在这样的架构下,我们需要对上面结构作出一些调整 ,所以我们就引入了SOA架构
2、面向服务的架构SOA
SOA(全称:Service Oriented Architecture),中文意思为 “面向服务的架构”,你可以将它理解为一个架构模型或者一种设计方法,而并不是服务解决方案。
- 其中包含多个服务, 服务之间通过相互依赖或者通过通信机制,来完成相互通信的,最终提供一系列的功能。 一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用 。
- 我们将各个应用之间彼此的通信全部去掉,在中间引入一个ESB企业总线,各个服务之间,只需要和ESB进行通信,这个时候,各个应用之间的交互就会变得更加的清晰,业务架构/逻辑等,也会变得很清楚。原本杂乱没有规划的系统,梳理成了一个有规划可治理的系统,在这个过程中,最大的变化,就是引入了ESB企业总线。
- 服务总线、服务提供者、业务流程重构、服务寻址、分布式事务模式
3、微服务架构
微服务架构其实和SOA架构类似,微服务是在SOA上做的升华。微服务架构重点强调的一个是 “业务需要彻底的组件化和服务化” ,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这样的小应用和其他各个应用之间,相互去协作通信,来完成一个交互和集成,这就是微服务架构。
- 组件化:组件表示一个可以独立更换和升级的单元,就以PC机为例,PC中的 CPU、内存、显卡、硬盘一样,独立更换升级而不影响其他单元。如果我们把PC作为组件以服务的方式构建,那么这台PC只需要维护主板和一些必要的外部设备。CPU、内存、硬盘都是以组件方式提供服务,PC需要调用CPU做计算处理,只需要知道CPU这个组件的地址即可。
- 微服务不仅仅是带来服务拆分、编排管理、持续集成、部署等一系列问题,微服务内部也会有很多问题。针对企业使用微服务架构后带来的一系列问题,也就有了服务治理平台。
4、对比与联系
-
SOA 更加适合于庞大、复杂、异构的企业级系统。
这类系统的典型特征就是很多系统已经发展多年,各个服务具有异构性,比如:采用不同的企业级技术、有的是内部开发的、有的是外部购买的,无法完全推倒重来或者进行大规模的优化和重构。因为成本和影响太大,只能采用兼容的方式进行处理,而承担兼容任务的就是 ESB。 -
微服务更加适合于快速、轻量级、基于 Web 的互联网系统,
这类系统业务变化快,需要快速尝试、快速交付;同时基本都是基于 Web,虽然开发技术可能差异很大(例如,Java、.NET、PHP 等),但对外接口基本都是提供 HTTP RESTful 风格的接口,无须考虑在接口层进行类似 SOA 的 ESB 那样的处理。 -
服务粒度
SOA 的服务粒度要粗一些,而微服务的服务粒度要细一些。例如,对一个电商企业来说,商品管理系统是一个 SOA 架构中的服务;而如果采用微服务架构,则商品管理系统会被拆分为更多的服务,比如商品基本信息管理、供应商管理、入库管理等更多服务。 -
服务通信
SOA 采用了 ESB 作为服务间通信的关键组件,负责服务定义、服务路由、消息转换、消息传递,一般情况下都是重量级的实现。微服务则使用统一的协议和格式,例如:HTTP RESTful 协议、TCP RPC 协议,不需要 ESB 这样的重量级实现。 -
服务交付
SOA 对服务的交付没有特殊要求,因为 SOA 更多考虑的是兼容已有的系统;微服务的架构理念则要求快速交付,相应地要求采取自动化测试、持续集成、自动化部署、自动化运维等的最佳实践。
5、服务治理平台
SOA(面向服务的架构)服务治理平台是在SOA架构基础上构建的一个特定的软件工具或平台,用于支持和管理企业中的面向服务的架构。它是SOA的一部分,用于解决在实施和管理SOA架构时所面临的挑战和需求。
- 范围和定位:SOA是一种软件设计模式或架构范式,通过将应用程序划分为一系列相互独立且可重用的服务来构建系统。它关注的是服务的设计、实现和集成等方面。而SOA服务治理平台是针对SOA架构而设计的一个管理平台,用于管理和监控企业中的服务,包括服务的注册、发现、版本控制、安全管理等方面。
- 功能和特性:SOA服务治理平台提供了一系列特定的功能和工具,用于解决SOA架构中的治理需求。 它通常包括服务注册表/仓库、服务生命周期管理、服务监控和管理、安全和访问控制、服务版本控制、服务合约管理等功能。而SOA本身并没有明确定义或提供特定的治理功能,它更强调服务的组织和集成。
- 目的和价值:SOA架构的目的是实现系统的松耦合、可重用性和灵活性,提供面向服务的解决方案。**而SOA服务治理平台的目的是增强SOA架构的可管理性、可控制性和可扩展性。**它通过提供管理和监控工具,帮助企业更好地组织、管理和维护服务,提高系统的稳定性和可靠性。
当涉及到具体的例子,我们可以以一个企业的SOA架构为背景来说明SOA服务治理平台与SOA的区别。
- 假设某个企业采用了SOA架构来构建其业务系统,将不同的业务功能划分为独立的服务。这些服务可能包括订单服务、支付服务、用户管理服务等等。
- 在这种情况下,SOA架构关注的是如何设计、实现和集成这些服务,以实现系统的松耦合和可重用性。
- 然而,随着服务数量的增加和复杂性的提高,企业可能面临一些具体的挑战,例如:
服务的发现和重用: 随着服务数量增加,如何方便地发现和重用已有的服务,避免重复开发,提高开发效率和系统的可维护性。
服务的版本控制: 当服务发生变更或升级时,如何管理不同版本的服务,并确保服务之间的版本兼容性,以避免系统的不稳定性或功能冲突。
服务的安全管理: 如何确保只有授权的用户或系统可以访问和使用服务,同时保护服务和数据的安全性,防止潜在的安全威胁。
服务的监控和管理: 如何实时监控服务的性能、可用性和健康状况,及时发现和解决潜在的问题,确保服务的稳定运行。 - 为了解决这些挑战,企业可以引入SOA服务治理平台作为一个辅助工具。该平台可以提供以下功能:
注册表/仓库:作为服务的中心化存储,记录服务的元数据信息,包括接口定义、版本信息、访问权限等。这样,开发人员可以方便地查找现有的服务并进行重用。
服务版本控制:治理平台可以跟踪和管理不同版本的服务,并提供机制来管理服务的升级和回退。这样,可以确保服务之间的版本兼容性,避免潜在的冲突和问题。
安全和访问控制:治理平台提供身份验证、授权和加密等安全机制,确保只有授权的用户或系统可以访问和使用服务,保护服务和数据的安全性。
服务监控和管理:治理平台可以实时监控服务的性能指标、调用情况、错误率等,帮助管理员识别和解决问题,确保服务的稳定运行。 - 通过引入SOA服务治理平台,企业可以更好地管理和控制其SOA架构中的服务。
该平台提供了一系列工具和功能,帮助企业解决SOA架构中的具体挑战,提高系统的可管理性、可控制性和可扩展性。
微服务与微服务治理平台:
- 微服务:
用户服务:负责处理用户注册、登录、个人信息管理等功能。
订单服务:负责处理订单创建、支付状态管理等功能。
支付服务:负责处理支付请求、支付回调等功能。
产品服务:负责处理产品列表、详情、库存管理等功能。 - 微服务治理平台:
微服务治理平台是一个辅助工具,帮助企业管理和监控微服务架构中的各个微服务。它提供以下功能:
服务注册与发现:将各个微服务注册到治理平台的服务注册表中,使其他微服务能够发现和调用它们。例如,每个微服务在启动时会向治理平台注册自己的服务信息,包括服务地址和接口定义。
负载均衡和容错:治理平台可以实现负载均衡策略,将请求合理地分配给可用的微服务实例,提高系统的性能和可靠性。当某个微服务实例发生故障时,治理平台可以自动将请求转发到其他可用的实例,实现容错机制。
服务监控与追踪:治理平台提供实时监控和统计微服务的性能指标,例如请求响应时间、错误率等。它还可以记录请求的追踪信息,帮助开发人员在分布式环境中调试和排查问题。
安全与访问控制:治理平台提供安全机制,确保只有授权的服务或客户端可以访问特定的微服务。它可以提供身份验证、访问令牌管理、API密钥等功能,保护微服务的安全性。
配置管理:治理平台可以集中管理微服务的配置信息,例如数据库连接、第三方服务的地址等。这样,可以在运行时动态修改配置,而无需重新部署微服务。 - 在上述电子商务应用的例子中,微服务治理平台充当了一个中心化的管理和监控工具,帮助企业更好地组织和管理微服务架构。它提供了服务注册与发现、负载均衡和容错、服务监控与追踪、安全与访问控制以及配置管理等功能,以增强微服务架构的可管理性、可控制性和可扩展性。
微服务治理平台适用于微服务架构,处理大量的小型微服务实例和复杂的服务通信,通常与现代的微服务技术栈集成。
SOA治理平台适用于面向服务的架构,处理较少的服务实例和相对简单的服务通信,通常与传统的中间件和ESB集成。
- 粒度和规模:
微服务治理平台:微服务架构强调将应用程序拆分为多个小型的、自治的微服务,每个微服务专注于一个特定的业务功能。因此,微服务治理平台通常需要处理大量的微服务实例和复杂的服务之间的通信和协调。
SOA治理平台:SOA架构中的服务可以更加粗粒度,可以是较大的业务组件或应用程序模块。因此,SOA治理平台通常处理较少的服务实例和相对简单的服务通信。
大型项目通常更倾向于使用微服务架构而不是传统的SOA架构。微服务架构在处理大型项目时具有以下优势:
- 模块化和可维护性:微服务架构将应用程序拆分为一组小型、自治的服务,每个服务专注于单一的业务功能。这种模块化的结构使得系统更易于理解、开发和维护。团队可以独立开发和测试每个微服务,而不会影响整个系统。
- 弹性和可伸缩性:微服务架构使得每个微服务可以独立进行水平扩展,根据需要分配资源。这种弹性和可伸缩性使得系统能够处理高流量和负载,并更好地应对峰值情况。
- 技术多样性:微服务架构鼓励使用适合每个微服务的最佳技术栈和工具。这使得团队可以选择最适合其业务需求的技术,而不必被固定于单一的技术栈。这对于大型项目来说尤为重要,因为它们可能需要整合多个系统和技术。
- 独立部署和可运维性:微服务架构使得每个微服务可以独立进行部署和运维,而不会影响其他微服务。这种独立性简化了系统的维护和故障排除,并减少了对整个系统的风险。
尽管微服务架构在现代应用开发中越来越受欢迎,SOA仍然具有一些优势,特别是在某些情况下:
-
统一的数据模型和标准:SOA架构强调使用统一的数据模型和标准来定义和交换服务。这种一致性有助于不同系统之间的集成和协作,降低了数据转换和映射的复杂性。SOA使用XML和SOAP等标准,使得不同平台和技术之间的通信更加容易。
-
中央化的管理和治理:SOA架构通常使用中央化的管理和治理模式。这意味着可以集中管理和控制所有服务的注册、发现、安全性、版本控制和访问控制等方面。这种中央化的管理和治理模式在某些场景下更容易实施和维护。
-
适用于传统企业环境:SOA架构在过去几十年中已经被广泛采用,特别是在传统企业环境中。许多企业拥有大量的SOA基础设施和相关技术,这使得扩展和改进现有的SOA系统比全面采用微服务更容易。
-
重用和共享:SOA架构鼓励服务的重用和共享。通过定义通用的服务,不同部门和应用程序可以共享和重用这些服务,从而提高开发效率和资源利用率。
-
成熟的工具和解决方案:由于SOA架构的历史悠久,已经有许多成熟的工具和解决方案可用于SOA开发、集成和管理。这些工具和解决方案提供了一套完整的功能,包括服务注册、发现、消息传递、事务管理等。
尽管SOA具有上述优势,但在某些方面微服务架构更适合现代应用开发的需求。微服务架构提供了更高的灵活性、可伸缩性和独立性,使得团队能够更快地迭代和交付新功能。同时,微服务架构更适合构建复杂的分布式系统,支持多样化的技术栈和团队自治。因此,在选择架构时,需要综合考虑项目需求、团队能力和现有基础设施等因素。
参考资料:1, 2,3,4,5