什么是SOA?
SOA是计算机软件设计中的一种体系结构模式。在这种类型的应用程序中,组件通过通信协议(通常通过网络)向其他组件提供服务。面向服务的原则独立于任何产品、供应商或技术。SOA的完整形式是面向服务的体系结构
SOA使各种网络上的软件组件更容易相互协作,按照SOA架构构建的Web服务往往使Web服务更加独立。
什么是微服务?
微服务是一种面向服务的体系结构模式,其中应用程序被构建为各种最小的独立服务单元的集合。它是一种软件工程方法,侧重于将应用程序分解为具有良好定义接口的单个功能模块。
这些模块可以由拥有整个服务生命周期的小型团队独立部署和操作。
术语“micro”指的是一个微服务的规模,它必须由一个开发团队(5到10个开发人员)管理。在这种方法中,大型应用程序被划分为最小的独立单元。
什么是SOA架构?
面向服务的体系结构是一种软件设计风格。体系结构分为两部分
- 功能方面
- 服务质量方面
让我们详细了解一下这两个问题:
功能方面:
功能方面包括:
- 传输:这个组件将服务请求从服务使用者传输到服务提供者,并将服务响应从服务使用者传输到服务使用者。
- 服务通信协议:它允许服务提供者和使用者相互通信。
- 服务描述:它解释了调用它所需的服务和数据。
- 服务:这是一个实际的服务。
- 业务流程:此组件表示按特定的预定义顺序调用的服务组,这些服务与满足业务需求的特定规则相关联。
- 服务注册中心:此注册中心包含服务提供者用于发布其服务的数据描述。
服务质量方面:
服务质量包括:
- 策略:它是一组协议,服务提供者根据这些协议创建服务并向消费者提供服务。
- 安全性:它表示标识和授权过程所需的一组协议。
- 事务:提供一致结果的保证。
- 管理:SOA的这个组件帮助您定义用于管理服务的属性集。
什么是微服务体系结构?
它是一种体系结构开发风格,允许将应用程序构建为为业务领域开发的小型自治服务的集合。
让我们以一个用微服务体系结构开发的电子商务应用程序为例。在本例中,每个微服务都集中在单个业务能力上。搜索、评级和审查以及支付都有自己的实例(服务器),并相互通信。
在这种单机体系结构中,所有组件合并成一个模块。但是,在微服务体系结构中,它们被分散到相互通信的各个模块(微服务)中。
微服务之间的通信是一种无状态通信,其中每对请求和响应是独立的。因此,微服务可以轻松地进行通信。在微服务体系结构中,数据是联合的。每个微服务都有一个单独的数据存储。
SOA的特点
下面是SOA的重要特性
- SOA使用接口来解决大型系统中的集成难题。
- SOA通过使用xmlschema与客户、提供者和供应商进行通信。
- SOA使用消息监视来改进性能度量并检测安全攻击。
- 由于它重用了服务,所以软件开发和管理的成本略低。
微服务的特点
以下是微服务的基本功能:
- 在微服务中,模块是松散耦合的
- 项目管理,也可以模块化。
- 可扩展性的成本很低
- 在一个应用程序中使用多种技术作为多种功能非常容易。
- 对于进化系统来说,它是一种理想的服务,在进化系统中,您无法预测将来可能访问您的应用程序的设备类型。
SOA的优势
下面是SOA的优点/好处
- 编辑和更新任何服务都很容易
- 服务具有相同的目录结构,允许使用者每次都从同一目录访问服务数据。
- 服务使用公共语言与其他应用程序通信,这意味着它独立于平台
- 与成熟的应用程序相比,服务通常规模较小。因此,更容易调试和测试独立服务。
- SOA允许重用现有系统的服务,交替地构建新系统。
- 它提供插入新服务或升级现有设施以满足新的业务需求。
- 您可以增强服务的性能和功能,并轻松地进行系统升级。
- SOA可以调整或修改不同的外部环境
- 这些公司可以在不替换现有应用程序的情况下开发应用程序。
- 它提供了可靠的应用程序,与大量代码相比,您可以在其中测试和调试独立的服务。
微服务优势
以下是使用微服务的优点/好处:
- 易于开发人员理解的更简单的体系结构模式
- IDE速度更快,使开发人员更快、更高效
- web容器启动更快;这有助于加快部署和开发过程。
- 它允许团队独立于所有其他团队开发、部署和扩展其服务。
SOA的缺点
以下是使用面向服务架构的缺点:
- 在将所有输入发送到服务之前,应该对其进行验证
- 就人力资源、开发和技术而言,SOA是一项成本高昂的服务。
- 一些web服务需要频繁地发送和接收消息和信息,因此它很容易达到每天一百万个请求。
- SOA需要高投资成本
- 当一个服务与另一个服务交互时会有更大的开销,这将增加响应时间
- SOA服务不适用于GUI(图形用户界面)应用程序,因此当SOA需要大量数据交换时,它将变得更加复杂。
微服务的劣势
以下是微服务的缺点:
- 它是为构建单片应用程序而开发的,因此它不为开发分布式应用程序提供明确的支持。
- 测试更困难
- 开发人员必须实现服务间通信机制。
- 实现跨多个服务的用例需要团队之间的协调。
- 微服务成本很高,因为您总是需要为不同的业务任务维护不同的服务器空间
哪种架构更好?
SOA是大型复杂业务应用程序的理想体系结构方法。它最适合于需要与许多不同应用程序集成的环境。
然而,具有定义良好的处理流的基于工作流的应用程序很难借助SOA架构模式来实现。因此,小型应用程序也不适合SOA,因为它们不需要中间件消息传递组件。另一方面,微服务模式非常适合更小、分区良好的基于web的系统。
主要区别:
- SOA侧重于应用程序服务的可重用性,而微服务更侧重于解耦。
- SOA本质上是全栈的,而微服务是单片的
- SOA应用程序是为执行许多业务任务而构建的,而微服务是为执行单个业务任务而构建的。
- SOA涉及在服务之间共享数据存储,而在微服务中,每个服务可以有独立的数据存储。
- SOA被设计成跨服务共享资源,而Microservices被设计成托管可以独立运行的服务。
- 在SOA架构中,DevOps和连续交付正变得流行,但还没有成为主流,而微服务则非常强调DevOps和连续交付。
- SOA是一个可伸缩性较差的体系结构,而Microservices是一个可伸缩性很高的体系结构。
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/1901.html
暂无评论