[架构之路-259]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 面向服务的架构SOA与微服务架构(以服务为最小的构建单位)

目录

前言:

二、软件架构层面的复用

三、什么是面向服务的架构SOA

3.1 什么是面向服务的架构

3.2 面向服务架构的案例

3.3 云服务:everything is service一切皆服务

四、什么是微服务架构

4.1 什么是微服务架构

4.2 微服务架构的案例

五、企业服务总线ESB

5.1 什么是企业服务器总线

5.2 常见的企业服务总线


前言:

随着软件规模的扩大,对软件复用的需求越发强烈,有函数级别的复用,有对象了类级别的复用,也有软件组件层的复用,也有架构层面的复用,抽象出软件架构的作用:一面是为了软件产品的需要,另一方面,成功或优秀的软件架构本身也可以被后续软件复用。

二、软件架构层面的复用

在软件架构中,复用是通过将通用的架构模式、设计模式、组件、服务等进行提取和重复使用的方式来实现的。通过复用,可以提高系统的可维护性、可扩展性和可重用性,减少重复开发的工作量,并提高开发效率和质量。实际上,前人总结出来的成功的软件架构或软件架构风格,就是为了被其他或项目复用的。

以下是一些常见的软件架构复用方式:

  1. 分层架构:将系统分为多个层次,每个层次负责不同的功能,通过定义良好的接口和约定,使得每个层次可以被多个应用程序复用。

  2. 领域驱动设计(Domain-Driven Design,DDD):将系统按照业务领域进行划分,并通过领域模型、聚合根等概念来提高领域内的复用性。

  3. 微服务架构:将系统拆分为多个小型、独立的服务,每个服务专注于完成特定的业务功能,通过服务间的通信实现复用。

  4. 中间件和框架:使用现有的中间件和框架,如数据库中间件、消息队列、Web框架等,来提供通用功能,减少开发工作。

  5. 设计模式:使用常用的设计模式,如工厂模式、单例模式、观察者模式等,来解决特定的设计问题,提高系统的可复用性。

  6. 组件化架构:将系统划分为多个组件,每个组件具有独立的功能和接口,可以在不同的应用中进行复用。

复用软件架构的关键在于良好的设计和规范,以及对通用功能和模块的抽象和封装。同时,需要注意在复用过程中平衡通用性和定制性的考虑,以保证复用的有效性和灵活性。

三、什么是面向服务的架构SOA

面向服务的架构SOA是以服务为架构的最小构建单元。

3.1 什么是面向服务的架构

面向服务的架构(Service-Oriented Architecture,SOA)是一种设计原则和架构风格,旨在实现系统的模块化、可扩展和可重用。

在面向服务的架构中,系统被分割为一组相互独立的服务,每个服务代表一个特定的业务功能。这些服务通过定义明确定义的接口和协议进行通信,可以部署在不同的服务器上,使用不同的技术和平台来实现。

以下是面向服务的架构的一些特点和优势:

  1. 松耦合:服务之间通过接口进行通信,彼此不直接依赖。这种松耦合的特点使得系统更加灵活和可维护,能够独立地更新、替换和扩展服务,而不会对其他服务造成影响。

  2. 可重用性:面向服务的架构鼓励将通用的功能封装成服务,并在系统中复用。这种复用性可以减少重复开发工作量,提高开发效率和质量。

  3. 模块化:将系统拆分为多个服务单元,每个服务专注于一个特定的业务功能。这种模块化的设计可以简化系统的复杂性,使得系统更易于理解、测试和维护。

  4. 可扩展性:每个服务可以独立地进行水平扩展,根据实际需求增加或减少服务的实例数量,从而提高系统的性能和容错性。

  5. 跨平台和跨语言:面向服务的架构允许不同的服务使用不同的技术和平台进行实现,使得系统具有更大的灵活性和互操作性。

  6. 业务驱动:面向服务的架构强调与业务需求的紧密对应,使得系统能够更好地适应变化的业务需求和业务流程。

面向服务的架构可以通过使用标准的服务协议(如SOAP、REST)和服务注册与发现机制(如服务目录、服务注册表)来实现服务之间的通信和管理。同时也需要考虑如安全性、事务处理和性能优化等方面的问题来保证系统的稳定性和可靠性。

3.2 面向服务架构的案例

面向服务的架构已被广泛应用于各个领域,下面列举几个实际案例:

  1. 云计算平台:云计算平台如亚马逊AWS、微软Azure和谷歌云平台等采用基于服务的架构。它们将各种基础设施服务(如计算、存储、网络等)以及中间件服务(如消息队列、数据库等)作为独立的可复用服务,通过API进行调用。

  2. 电子商务平台:在线购物网站如亚马逊、eBay和淘宝等采用面向服务的架构。这些平台将商品管理、订单处理、支付服务、物流追踪等功能作为独立的服务,并通过服务间的调用来实现整个电商系统的运作。

  3. 银行和金融系统:面向服务的架构在银行和金融领域也得到广泛应用。例如,银行系统中的支付服务、账户管理、风险评估等功能可以作为独立的服务,通过服务调用来提供各种金融服务。

  4. 知识图谱和搜索引擎:大型知识图谱和搜索引擎,如谷歌搜索、百度和维基百科等,都采用了面向服务的架构。它们将数据存储、索引服务、查询服务等作为独立的服务,通过服务之间的通信和协作来提供高效的搜索和知识获取功能。

  5. 企业服务总线(Enterprise Service Bus,ESB):ESB是一种支持面向服务的架构的中间件技术,用于集成和管理企业内部的各种应用和服务。它提供了统一的消息传递、协议转换、安全性和可靠性保证等功能,使得不同的应用和服务能够无缝地进行交互和集成。

这些案例只是面向服务的架构在实际应用中的几个例子。面向服务的架构在许多领域中具有广泛的适应性和可扩展性,让系统更灵活、可维护和可扩展。

3.3 云服务:everything is service一切皆服务

"云服务:everything is service(一切皆服务)"是云计算领域的一个重要概念,强调了云计算提供的服务化模式和思维方式。

"一切皆服务"意味着将各种计算资源(如计算、存储、数据库、网络等)功能(如人工智能、大数据分析、物联网等)都以服务的形式提供一切的软件功能或实现都可以作为服务!!!!都可以被反复服用!!!

无论是企业还是个人用户,都可以通过云服务提供商的平台来消费和使用这些服务,而无需担心底层的复杂性和维护工作。

云服务采用了面向服务的架构,并通过服务级别协议(Service Level Agreements,SLAs)对服务进行约束和保证。用户可以根据实际需求灵活地选择和使用各种服务,并根据实际使用情况进行弹性扩展和付费。

以下是一些云服务的例子:

  1. 基础设施即服务(Infrastructure as a Service,IaaS):提供虚拟化的计算资源(如虚拟机、存储、网络等),用户可以在云平台上创建和管理自己的虚拟数据中心。

  2. 平台即服务(Platform as a Service,PaaS):提供开发和运行应用程序所需的平台环境,用户可以使用预置的开发工具、运行时环境等来开发和部署应用。

  3. 软件即服务(Software as a Service,SaaS):提供各种应用程序作为服务,用户通过云平台直接使用这些应用,无需关心底层的软件安装和维护。

  4. 数据库即服务(Database as a Service,DBaaS):提供数据库管理系统作为服务,用户可以使用数据库功能来存储和管理数据,无需关心数据库的部署和维护。

  5. 大数据分析即服务(Analytics as a Service,AaaS):提供大数据分析和人工智能服务,用户可以通过云平台使用各种数据分析和机器学习算法来获取洞察和优化业务。

  6. AIaaS(AI as a Service):指的是将人工智能能力作为云服务提供给用户。它允许企业和开发者利用人工智能的能力,而无需构建和维护自己的人工智能基础设施和模型。

        通过"一切皆服务"的理念,云服务将计算资源和应用功能封装成可消费的服务,为用户提供了更灵活、高效和成本效益的方式来构建和管理他们的应用和业务。

四、什么是微服务架构

4.1 什么是微服务架构

微服务架构是一种将一体化的应用程序拆分为多个小型、独立部署的服务的方法每个服务都具有自己的业务功能和相应的 API 接口。每个服务都是运行在其自己的进程中,并且可以使用不同的编程语言、数据库和技术栈。

微服务架构的主要特点如下:

  1. 独立性:每个服务都是独立且自治的,这意味着系统中的其他服务不会因为其中一个服务故障或故障而受到影响。每个服务都有自己的数据存储和处理能力,可以独立管理和扩展。

  2. 灵活性:每个服务可以独立开发、测试和部署,这使得服务的迭代速度更快,可以更快地响应用户需求和市场变化。

  3. 可组合性:每个服务都提供 API 接口,这使得不同的服务可以组合成一个完整的应用程序。这使得应用程序可以更加灵活、可拓展和可维护。

  4. 可替换性:由于每个服务是自治的,所以可以使用不同的技术栈和解决方案来实现每个服务。如果服务出现问题,可以更换使用新技术栈的服务,而不会影响整个系统。

  5. 可扩展性:由于每个服务都是独立的,可以根据需要自由地增加或减少服务的数量。这使得系统可以更加灵活地应对流量高峰以及应用程序规模的变化。

微服务架构的本质是一个分布式系统,需要考虑分布式架构中的各种问题,如服务发现、负载均衡、故障转移、数据管理和安全性等。微服务架构要求开发团队具备更高的技术能力和团队协作能力,但在应对快速变化的市场和业务需求方面具有非常明显的优势。

4.2 微服务架构的案例

微服务架构已经被广泛地应用于众多成功的应用程序中,下面是几个比较具有代表性的案例:

  1. Netflix

Netflix 是一个知名的在线视频平台,它以微服务架构来构建其应用程序。Netflix 将其应用程序拆分为超过 500 个微服务,每个微服务都有自己的部署管道和数据存储方案。Netflix 的微服务架构允许其快速地适应市场,构建并提供新功能和服务。

  1. Uber

Uber 是一家非常成功的系统级的物流运输和出行平台,它主要基于微服务架构构建Uber 的微服务架构允许其将应用程序拆分为多个独立的服务,包括订单管理、支付、定位和路线规划等服务。这使得 Uber 能够快速响应市场需求和路况变化。

  1. Amazon

Amazon 是最早引入微服务架构的公司之一,它使用微服务架构来构建其云服务、市场和库存管理系统。微服务架构为 Amazon 提供了更为灵活和可扩展的系统架构,同时也减少了系统重构的风险。

  1. Airbnb

Airbnb 是一个在线房屋出租平台,它利用微服务架构来构建其核心系统。Airbnb 的微服务架构允许其将应用程序拆分为多个小型服务,包括搜索、订阅、预订和房源管理等服务。微服务架构为 Airbnb 提供了更大的敏捷性,更快的迭代速度和更佳的维护性。

这些公司都已经证明了微服务架构在构建复杂、高度可扩展的应用程序方面的巨大价值,它已经成为构建现代应用程序的一种主流方法。

五、企业服务总线ESB

5.1 什么是企业服务器总线

企业服务总线(Enterprise Service Bus,ESB)是一种中介软件架构,用于促进企业内部不同应用系统之间的集成和通信。ESB 提供了一种统一的、可靠的消息传递机制,以及服务管理和转换功能,使各个系统能够以松耦合的方式相互通信。

ESB 主要包含以下组件和特性:

  1. 消息传递:ESB 通过在不同应用程序之间传递消息来实现集成。消息可以是一种标准格式,如 XML 或 JSON,也可以是特定于某个应用程序的自定义格式。ESB 可以确保消息的可靠投递,并提供消息路由和转换等功能。

  2. 中介器:ESB 充当应用程序之间中介器,负责接收、处理和路由消息。它可以处理不同协议之间的转换,例如将消息从一个应用程序的 SOAP Web 服务转换为另一个应用程序的 REST API。

  3. 服务管理ESB 提供服务注册和发现机制,允许应用程序发布其提供的服务订阅其他服务。这使得应用程序可以通过 ESB 轻松地发现和使用其他应用程序的功能,促进了服务的重用和集成。

  4. 安全性和身份验证:通过提供安全机制和身份验证功能,ESB 可以确保通信在不同系统之间是安全和可信的。它可以处理身份验证和授权,保护敏感数据的传输,并实施访问控制策略。

  5. 监控和日志记录:ESB 提供监控和日志记录功能,可以跟踪消息的流动和处理情况。这使得开发人员和管理员可以实时了解系统的状态和性能,并进行故障排除和优化。

        ESB 的目标是简化企业内部系统集成,并提供灵活、可扩展和可靠的集成解决方案。它使企业能够更容易地实现应用程序之间的互操作性,降低集成成本和复杂性,并加快新功能的开发和交付。

5.2 常见的企业服务总线

以下是一些常见的企业服务总线(ESB)实例:

  1. Oracle Service Bus:Oracle Service Bus 是 Oracle 公司提供的一款综合性 ESB 解决方案。它通过提供中央集成架构、消息路由、转换和基于规则的业务流程编排等功能,帮助企业实现应用系统之间的集成和通信

  2. MuleSoft Anypoint Platform:MuleSoft Anypoint Platform 是一种全面的集成平台,其中包括 ESB 功能。它提供了用于构建、部署和管理 API、应用程序和数据集成的工具和服务。MuleSoft Anypoint Platform 的灵活性和可扩展性使其成为了企业中广泛采用的 ESB 解决方案之一。

  3. IBM Integration Bus:IBM Integration Bus(前身为 IBM WebSphere Message Broker)是 IBM 公司提供的一款企业级 ESB 解决方案。它提供了高度可靠的消息传递、数据转换和路由功能,允许企业内部的多个应用系统相互通信和集成。

  4. Apache ServiceMix:Apache ServiceMix 是一个基于开源的 ESB 和集成平台。它使用 Apache Camel 作为核心引擎,提供了消息路由、转换和流程编排等功能。Apache ServiceMix 具有灵活的插件架构,可以与其他开源技术无缝集成。

  5. TIBCO ActiveMatrix BusinessWorks:TIBCO ActiveMatrix BusinessWorks 是一种全面的集成功能平台,其中包括 ESB 功能。它提供了强大的消息传递、数据转换和流程编排能力,可帮助企业实现不同应用系统之间的高效集成和通信。

这些是一些常见的企业服务总线实例,它们提供了丰富的功能和工具,帮助企业实现应用程序之间的集成和交流。选择适合企业需求的 ESB 解决方案需要综合考虑架构要求、性能需求、可靠性和成本等因素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/230204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--src/tools(9)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/apply_demorgan.rs 在Rust源代码中,apply_demorgan.rs文件位于rust-analyzer工具的ide-assists库中,其作用是实现一个辅助函数,用于在代码中应用De Morgan定律的变换。 …

Navicat 技术指引 | 适用于 GaussDB 分布式的用户/权限功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

nodejs+vue+微信小程序+python+PHP的黄山旅游景点购票系统设计与实现-计算机毕业设计推荐

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。黄山旅游景点购票系统是根据当前的现实需要&#xff0…

mysql 主从搭建、django实现读写分离、django中多redis缓存、django中使用连接池、pycharm远程linux开发

1 mysql 主从搭建 2 django实现读写分离 3 django中多redis缓存 4 django中使用连接池 5 pycharm远程linux开发 1 mysql 主从搭建 # 之前做过redis的主从,很简单# mysql 稍微复杂一些, 搭建mysql主从的目的是?-读写分离-单个实例并发量低&…

希尔排序详解:一种高效的排序方法

在探索排序算法的世界中,我们经常遇到需要对大量数据进行排序的情况。传统的插入排序虽然简单,但在处理大规模数据时效率并不高。这时,希尔排序(Shell Sort)就显得尤为重要。本文将通过深入解析希尔排序的逻辑&#xf…

AI聊天专题报告:ChatGPT全景图聊聊技术产品和未来

今天分享的AI系列深度研究报告:《AI聊天专题报告:ChatGPT全景图聊聊技术产品和未来》。 (报告出品方:LanguageX) 报告共计:22页 争论:ChatGPT算不算技术革命 回应吴军老师“ChatGPT不算新技术…

【HTML】解析垂直滚动轮播效果的HTML、CSS和JavaScript实现

解析垂直滚动轮播效果的HTML、CSS和JavaScript实现 在现代Web开发中,滚动轮播效果是网页设计中常见的交互元素之一。在本文中,我们将深入解析一段HTML、CSS和JavaScript的代码,实现了一个简单而高效的垂直滚动轮播效果。通过该代码&#xff…

PO模式在selenium自动化测试框架有什么好处

PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便。 PO模式的全称叫page object model(POM),有时候叫做 p…

IO多路转接之select

IO多路转接之select 1. IO多路转接(复用)2. select2.1 函数原型2.2 细节描述 3. 并发处理3.1 处理流程3.2 通信代码 原文链接 1. IO多路转接(复用) IO多路转接也称为IO多路复用,它是一种网络通信的手段(机…

内网环境下 - 安装linux命令、搭建docker以及安装镜像

一 内网环境安装docker 先在外网环境下载好docker二进制文件docker二进制文件下载,要下载对应硬件平台的文件,否则不兼容 如下载linux平台下的文件,直接访问这里即可linux版本docker二进制文件 这里下载docker-24.0.5.tgz 将下载好的文件…

爬虫 selenium语法 (八)

目录 一、为什么使用selenium 二、selenium语法——元素定位 1.根据 id 找到对象 2.根据标签属性的属性值找到对象 3.根据Xpath语句获取对象 4.根据标签名获取对象 5.使用bs语法获取对象 6.通过链接文本获取对象 三、selenium语法——访问元素信息 1.获取属性的属性值…

深度学习疲劳检测 驾驶行为检测 - python opencv cnn 计算机竞赛

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习加…

[ndss 2023]确保联邦敏感主题分类免受中毒攻击

Securing Federated Sensitive Topic Classification against Poisoning Attacks 摘要 我们提出了一种基于联邦学习 (FL) 的解决方案,用于构建能够检测包含敏感内容的 URL 的分布式分类器,即与健康、政治信仰、性取向等类别相关的内容。尽管这样的分类器…

力扣题:数字与字符串间转换-12.9

力扣题-12.9 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:412. Fizz Buzz 解题思想:直接遍历添加至answer即可 class Solution(object):def fizzBuzz(self, n):""":type n: int:rtype: List[str]"""…

kubesphere安装后启用DevOps

官方文档:KubeSphere DevOps 系统 1、集群管理---定制资源定义 进入目录:集群管理---定制资源定义搜索:clusterconfiguration 点击 ks-installer 右侧的 ,选择编辑 YAML 在该 YAML 文件中,搜索 devops,…

利用法线贴图渲染逼真的3D老虎模型

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

SpringBoot项目访问resources下的静态资源

1.新建一个配置文件夹,放配置类 2.编辑 WebMvcConfig.java package com.southwind.configuration;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import or…

Hazel引擎学习(十二)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看 参考视频链接在这里 Scene类重构 参考:《InsideUE4》GamePlay架构(二)Level和World 目前我的Scene类基本只是给entt的封装,提供了…

做数据分析为何要学统计学(5)——什么问题适合使用t检验?

t检验&#xff08;Students t test&#xff09;&#xff0c;主要依靠总体正态分布的小样本&#xff08;例如n < 30&#xff09;对总体均值水平进行差异性判断。 t检验要求样本不能超过两组&#xff0c;且每组样本总体服从正态分布&#xff08;对于三组以上样本的&#xff0…

基于深度学习yolov5实现安全帽人体识别工地安全识别系统-反光衣识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 实现安全帽人体识别工地安全识别系统需要使用深度学习技术&#xff0c;特别是YOLOv5算法。下面是对基于YOLOv5实现安…
最新文章