架构设计笔记-15-面向服务架构设计理论与实践

news2024/10/24 19:21:14

目录

知识要点

案例分析

1.微服务架构

2.微服务

3.微服务架构

4.SOA与微服务

5.基于微服务架构的系统/传统单体式系统

论文

1.论微服务架构及其应用


知识要点

服务组件体系结构(Service Component Architecture,SCA)是面向服务体系结构(SOA)中描述服务之间组合和协作的规范。SCA 定义了语言中立的服务组合方式,能够进行跨语言的服务调用;SCA 解决的主要问题是加强组件的接口与传输协议的关联;SCA 实现服务组件和其传输协议的绑定,这种绑定是可扩展的;SCA 主要是为了满足软件集成的需要而创建的架构

面向服务的体系结构(Service-oriented Architecture,SOA)是一种软件系统设计方法,通过已经发布的和可发现的接口为终端用户应用程序或其他服务提供服务。

企业服务总线(Enterprise Service Bus,ESB)是构建基于 SOA 解决方案时所使用基础架构的关键部分,是由中间件技术实现并支持 SOA 的一组基础架构功能。ESB 支持异构环境中的服务、消息,以及基于事件的交互,并且具有适当的服务级别和可管理性。简而言之,ESB 提供了连接企业内部及跨企业间新的和现有软件应用程序的功能,以一组丰富的功能启用管理和监控应用程序之间的交互。 在 SOA 分层模型中,ESB 用于组件层以及服务层之间,它能够通过多种通信协议连接并集成不同平台上的组件,将其映射成服务层的服务。 

 与SOA相关的技术(协议和规范)

  • BPEL(Business Process Execution Language For Web Services):面向 Web 服务的业务流程执行语言,也有的文献简写成 BPEL4WS,它是一种使用 Web 服务定义和执行业务流程的语言。使用 BPEL,用户可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构(SOA)。BPEL 提供了一种相对简单易懂的方法,可将多个 Web 服务组合到一个新的复合服务(称作业务流程)中。 
  • UDDI(Universal Description Discovery & Integration,统一描述、发现和集成):提供了一种web服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。
  • WSDL(Web Service Description Language,Web 服务描述语言):描述 Web 服务的接口和操作功能,它有一套基于 XML 的语法定义。WSDL 描述的重点是服务,它包含服务实现定义和服务接口定义。
  • SOAP(Simple Object Access Protocol,简单对象访问协议):定义了服务请求者和服务提供者之间的消息传输规范。SOAP 用 XML 来格式化消息,用 HTTP 来承载消息。通过 SOAP,应用程序可以在网络中进行数据交换和远程过程调用(Remote Procedure Call,RPC)。简单来说,WSDL 用来描述服务,UDDI 用来注册和查找服务,而 SOAP 作为传输层,用来在消费者和服务者之间传送消息。一个消费者可以在 UDDI 注册表查找服务,取得服务的 WSDL 描述,然后通过 SOAP 来调用该服务。
  • REST(Representational State Transfer,表述性状态转移):是一种只使用 HTTP 和 XML 进行基于 Web 通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。

逆向工程恢复信息的方法 

遗产系统可以由 JCA、JMS 和 Java IDL 构成。

JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

JCA 标准化连接子是由 J2EE 1.3 首先提出的,它位于 J2EE 应用服务器和企业信息系统(EIS)之间,比如数据库管理、企业资源规划(ERP)、企业资产管理(EAM)和客户关系管理(CRM)系统。不是用 Java 开发的企业应用或者在 J2EE 框架内的应用都可以通过 JCA 连接。JCA 是在 javax.resource 包和它的子包(cci,spi 和 spi.security)中定义的。(JCA 的缩写形式也用于 Java cryptography API 的缩写。)

JMS 是 Java 对消息系统的访问机制,但它本身并不实现消息。JMS 支持点对点分发的消息队列,也支持多个目标订阅的消息主题。当消息发布给一个主题的时候,消息就会发送给所有那个主题的订阅者。JMS 支持各种消息类型(二进制、流、名-值表、序列化的对象和文本)。通过声明与 SQL 的 WHERE 相近的句段,可以建立消息的过滤。

Java IDL 即 idltojava 编译器就是一个 ORB,可用来在 Java 语言中定义、实现和访问 CORBA 对象。Java IDL 支持的是一个瞬间的 CORBA 对象,即在对象服务器处理过程中有效。实际上,Java IDL 的 ORB 是一个类库而已,并不是一个完整的平台软件,但它对 Java IDL 应用系统和其他 CORBA 应用系统之间提供了很好的底层通信支持,实现了 OMG 定义的 ORB 基本功能。 

微服务与SOA的区别

  1. 微服务相比于 SOA 更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响;
  2. 微服务提供的接口方式更加通用化,例如 HTTP RESTful 方式,各种终端都可以调用,无关语言、平台限制;
  3. 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。 

SOA 架构是一个面向服务的架构,可将其视为组件模型,其将系统整体拆分为多个独立的功能模块,模块之间通过调用接口进行交互,有效整合了应用系统的各项业务功能,系统各个模块之间是松耦合的。SOA 架构以企业服务总线链接各个子系统,是集中式的技术架构,应用服务间相互依赖导致部署复杂,应用间交互使用远程通信,降低了响应速度。 微服务架构是 SOA 架构的进一步优化,去除了 ESB 企业服务总线,是一个真正意义上去中心化的分布式架构。其降低了微服务之间的耦合程度,不同的微服务采用不同的数据库技术,服务独立,数据源唯一,应用极易扩展和维护,同时降低了系统复杂性。 

 

案例分析

1.微服务架构

2.微服务

3.微服务架构

4.SOA与微服务

 

5.基于微服务架构的系统/传统单体式系统

论文

1.论微服务架构及其应用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IT基础监控运维:监控易的深度解析与应用

在数字化转型加速的今天,IT系统的稳定性和高效运维成为了企业业务连续性的关键保障。IT基础监控作为运维工作的基石,其重要性不言而喻。本文将以监控易产品为核心,深入探讨IT基础监控的功能、特点及范围,为运维团队提供实用的参考…

销售管理之线索管理

一、线索获取:销售增长与市场洞察的双引擎 销售增长的基石 线索:销售旅程的起点:在销售的宏伟蓝图中,高质量的线索无疑是构筑成功的基石。缺乏持续、优质的线索供应,任何销售团队都难以跨越销售目标的重重山峦。以软…

Apktool:解包重打包工具

ApKtool是一个apk编译工具,能够反编译apk文件。 解包 使用命令apktool d test.apk 会在同目录下生成一个同名的文件夹 重打包 使用命令apktool b test 会在test文件夹里生成一个dist目录,在dist目录里有打包好的test.apk

Top6 最好的 Android 数据恢复软件免费获取

虽然在智能手机上随身携带您最喜爱的音乐收藏或珍贵的录音很方便,但如果您的设备出现技术问题或您不小心删除了文件,文件也有可能丢失。 不管文件是如何删除或丢失的,丢失那些珍贵的音频文件的痛苦对每个人来说都是一样的。这就是我们创建本…

鸿蒙开发之ArkUI 界面篇 三十三 Builder(封装容器)

鸿蒙开发中遇到容器相同、容器下面的子组件相同,就是子组件的文字不同,背景颜色不同,文字颜色不同之类,就可以使用Builder来封装,语法格式如下: 例如下面的界面: Row4个ColumImageText来实现&am…

Java初阶测试编程题目

文章目录 1.大小写转换2.斐波那契数列2.1递归解决(不推荐)2.2递推公式(非递归) 3.删除公共字符3.1题目说明3.2第一种方法3.3第二种方法 4.字符串的加法4.1题目说明4.2题目核心方法4.3题目代码解析 Java初阶测试编程题目分析与总结…

C++第六讲:STL--vector的使用及模拟实现

C第六讲&#xff1a;STL--vector的使用及模拟实现 1.vector简介2.vector的常见接口介绍2.1constructor -- 构造2.2destructor -- 析构2.3begin、end2.3.1vector和string的区别、vector<string> 2.4rbegin、rend2.5cbegin、cend2.6crbegin、crend2.7size、max_size、resiz…

C++AVL树的介绍和实现

目录 1.AVL树的概念 2.AVL树的实现 2.1AVL树的结构 2.2AVL树的插入 2.2.1AVL树插入一个值的大概过程 2.2.2平衡因子的更新 2.2.3插入节点及更新平衡因子的代码实现(暂未实现旋转逻辑) 2.3旋转 2.3.1旋转的原则 2.3.2右单旋(处理parent->_bf -2 && cur-&g…

简易入门:使用Docke 部署一个tomcat服务

简易入门&#xff1a;使用Docke 部署一个tomcat服务 # 拉取 >docker pull tomcat:9.0# 后台运行容器&#xff0c;端口映射为8080. -p 宿主机端口:容器端口 >docker run -d --name tomcat-c-01 -p 8080:8080 tomcat:9.0# 查看容器id >docker ps CONTAINER ID IMAG…

Qt-系统线程安全(63)

目录 描述 使用 线程不安全 线程安全 释放锁问题 其他的锁 条件变量和信号量 描述 多线程程序太复杂了 在C/C 和 Linux中&#xff0c;我们为了保证线程安全&#xff0c;简单的方式就是加锁 为此 Qt 也封装了自己的一套锁管理 使用 线程不安全 我们先测验一下线程不安…

七、程序流程控制

一、三种执行顺序 执行顺序说明顺序结构自上而下的执行代码分支结构根据条件&#xff0c;选择对应代码执行循环结构控制某段代码重复执行 二、分支结构 1、if 分支 根据条件&#xff08;真或假&#xff09;来决定执行某段代码if 分支有三种形式 //第一种形式 if(条件表达式…

Qt学习(一)——win10系统下Qt安装(Qt5.15.2+QtCreator5.0.3+MSVC2019)

win10平台下&#xff0c;Qt Creator 5.0.3 软件About Qt Creator界面如下&#xff1a; 其基于Qt 5.15.2 MSVC2019&#xff0c;64bit,故在用Qt4 设计师自定义控件所设计的控件能够被Qt Creator加载到&#xff0c;就要安装相应版本的Qt和MSVC。此安装便可支持win10系统下的自定义…

Java项目实战II基于Java+Spring Boot+MySQL的足球青训俱乐部管理后台系统的设计与开发(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 足球作为世…

【hot100-java】排序链表

链表题。 使用归并排序法。 一图解决。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; thi…

(刷题记录6)三数之和

三数之和 题目信息&#xff1a;题目思路(环境来自力扣OJ的C)&#xff1a;暴力枚举&#xff1a;双指针&#xff1a;在三数之和上&#xff1a;转化成的两数之和&#xff1a;两数之和小优化&#xff1a; 复杂度&#xff1a;代码和解释&#xff1a;暴力枚举&#xff1a;双指针&…

【C语言】深入理解指针(三)(上)

本篇博客将讲解以下知识&#xff1a; 1、字符指针变量 2、数组指针变量 1、字符指针变量 在指针的类型中&#xff0c;有一种指针类型为字符指针&#xff1a;char* 一般使用&#xff1a; 注意&#xff1a;%s打印字符串的时候&#xff0c;需要提供字符串首元素的起始地址。 易错…

tensorflow + pygame 手写数字识别的小游戏

起因&#xff0c; 目的: 很久之前&#xff0c;一个客户的作业&#xff0c;我帮忙写的。 今天删项目&#xff0c;觉得比较简洁&#xff0c;发出来给大家看看。 效果图: 1. 训练模型的代码 import sys import tensorflow as tf# Use MNIST handwriting dataset mnist tf.kera…

C# 中循环的应用说明

一循环的概念说明 在C#编程中&#xff0c;循环结构是一种非常重要的控制流语句&#xff0c;它允许我们重复执行一段代码&#xff0c;直到满足某个特定条件为止。C#提供了几种不同类型的循环结构&#xff0c;包括for循环、while循环、do-while循环和foreach循环。 循环语句允许…

树莓派应用--AI项目实战篇来啦-7.OpenCV脸部和眼睛检测

1. 介绍 在深度学习时代&#xff0c;人脸识别一般是利用卷积神经网络进行监督式学习&#xff0c;也就是通过让算法&#xff08;神经网络&#xff09;自己去发现规律的方式&#xff0c;创造出有用的卷积核&#xff0c;然后利用其进行寻找图片和视频中的人脸&#xff0c;而在这之…

【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】

Mac分享吧 文章目录 DBeaverEE 数据库管理工具 软件安装完成&#xff0c;打开效果图片Mac电脑 DBeaverEE 数据库管理工具 软件安装——v24.21️⃣&#xff1a;下载软件2️⃣&#xff1a;安装JDK&#xff0c;根据下图操作步骤提示完成安装3️⃣&#xff1a;安装DBeaverEE&#…