分布式核心知识以及常见微服务框架

news2024/11/24 6:45:07

 分布式中的远程调用

在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等,目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

( 1 )RESTful接口

REST,即Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构。

资源(Resources )

所谓"资源" ,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、 一张图片、 一首歌曲、 一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它, 每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。 REST的名称"表现层状态转化"中,省略了主语。 "表现层"其实指的是"资 源"( Resources)的 "表现层"。

表现层(Representation)

"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表 现层"(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格 式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。 URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示 格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。

状态转化(State Transfer )

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"( State Transfer )。 客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:

GET、 POST、 PUT、 DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源 (也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

综合上面的解释,我们总结一下什么是RESTful架构:

每一个URI代表一种资源;

客户端和服务器之间,传递这种资源的某种表现层;

客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

( 2 )RPC协议

RPC( Remote Procedure Call )一种进程间通信方式。允许像调用本地服务一样调用远程服务。 RPC框架的主要目标就是让远程服务调用更简单、透明。 RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/JSON/二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。

( 3)区别与联系

比较项

RESTful

RPC

通讯协议

HTTP

一般使用TCP

性能

略低

较高

灵活度

应用

微服务架构

SOA架构

1、 HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如 开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持 的几个协议都包含RESTful。

2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提 供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样 调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

 分布式中的CAP原理

现如今,对于多数大型互联网应用,分布式系统(distributed system)正变得越来越重要。分布式系统的最大难点,就是各个节点的状态如何同步。 CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

CAP理论由 Eric Brewer 在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论。分布式系统的 CAP理论,首先把分布式系统中的三个特性进行了如下归纳:

Consistency(一致性) :数据一致更新,所有数据的变化都是同步的

Availability(可用性) :在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求

Partition tolerance(分区容忍性) :某个节点的故障,并不影响整个系统的运行

通过学习CAP理论,我们得知任何分布式系统只可同时满足二点,没法三者兼顾,既然一个分布 式系统无法同时满足一致性、可用性、分区容错性三个特点,所以我们就需要抛弃一样:

选 择

说 明

CA

放弃分区容错性,加强一致性和可用性,其实就是传统的关系型数据库的选择

AP

放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式 系统设计时的选择,例如很多NoSQL系统就是如此

CP

放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用

SpringCloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基 础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud并没有重复制造轮子,它只是将目前各家 公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

ServiceComb

Apache ServiceComb是业界第一个Apache微服务顶级项目, 是一个开源微服务解决方案,致力于帮助 企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。其提供一站 式开源微服务解决方案,融合SDK框架级、 0侵入ServiceMesh场景并支持多语言

ZeroC ICE

ZeroC IceGrid是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件。作为一种微服务架构,它基于RPC框架发展而来,具有良好的性能与分布式能力。

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

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

相关文章

C语言刷题训练DAY.10

1.空心正方形图案 解题思路&#xff1a; 这里我们只把四条边的内容打印成*&#xff0c;其他内容打印成空格即可。 解题代码&#xff1a; #include <stdio.h> int main() {int n 0;while (scanf("%d", &n) ! EOF){int i 0;for (i 0; i < n; i) //外…

Stream流报错Duplicate key

目录 1、场景2、问题3、解决办法4、完整代码 1、场景 有一个客户列表&#xff0c;每个item里有客户id、name、客户开的公司。 现在根据客户id分组&#xff0c;以客户id为key&#xff0c;把id相同的放到value里&#xff0c;构建一个Map。 这样可以快速根据id&#xff0c;获取相…

LLM赋能产业数智化业务系统升级的思考

1概述 2022年是人工智能的一个分水岭&#xff0c;ChatGPT&#xff0c;DALL E[ DALL E&#xff1a;是一款可以根据文本描述创建图像的AI工具。]和Lensa[ Lensa&#xff1a;是一款AI美图软件。]等几个面向消费者的应用程序发布了&#xff0c;它们的共同主题是使用生成式人工智能&…

【日常积累】Cookie和Session的区别

背景 会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 本章将分享一些关于Cooki…

【高危】MarkText<=0.17.1 存在DOM型XSS漏洞 (CVE-2023-2318)

漏洞描述 MarkText 是热门的开源Markdown编辑器&#xff0c;覆盖Windows/Linux/MacOS平台。 MarkText 0.17.1及之前版本中的 pasteCtrl 类未对用户可控的 HTML 内容进行过滤&#xff0c;当用户将攻击者可控的 HTML 代码粘贴至 MarkText 编辑器中时&#xff0c;攻击者可利用DO…

鸿蒙应用开发之基础组件

一、组件简介 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1…

Leetcode---359周赛

题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟&#xff0c;代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

vue项目中使用ts的枚举类型

vue项目中要使用ts的枚举类型需要为script标签的lang属性添加ts属性值 <script lang"ts" setup> </script > 声明枚举类型&#xff1a; //语法 /* enum 枚举名称 {可能的值 }*/ enum scenic_status {"正常" 1,"审核中","暂停…

Prometheus 监控系统---你值得拥有

目录 一&#xff1a;Prometheus 1、Prometheus 概述 2、应用场景 3、Prometheus 的特点 4、Prometheus 的生态组件 &#xff08;1&#xff09;Prometheus server&#xff1a;服务核心组件 &#xff08;2&#xff09;Client Library: 客户端库 &#xff08;3&#xff0…

c语言(12)

第一题 容易下意识认为这个判断是ASCII码值在0到9之间&#xff01; 第二题 第三题 第四题 第五题 第六题 用递归很容易就解决了 第七题

合规试制“精准狙击”秘籍——趣味浅析16949五大质量管理工具

在极其重视产品质量的汽车行业&#xff0c;如何制造出一件合格的产品进而获得主机厂的青睐&#xff0c;就像狙击手射出的子弹是否能命中目标&#xff0c;“百发百中”是每一个汽配供应商的最终梦想。 目前&#xff0c;汽配零部件企业必须通过质量管理体系的认证&#xff0c;才有…

“MyBatis入门及环境搭建“

目录 引言1. 什么是MyBatis2.MyBatis的优势与特点3. MyBatis环境搭建3.1 安装 Java 开发工具包 &#xff08;JDK&#xff09;3.2 下载我的MyBatis插件3.3 创建 MyBatis项目3.4 MyBatis的配置文件 4. MyBatis基本操作5. MyBatis增删改查测试类 6. MyBatis总结 引言 在现代的软件…

网络安全在医疗行业中的重要性

不可否认&#xff0c;现代世界见证了技术和医疗行业的交织&#xff0c;塑造了我们诊断、治疗和管理健康状况的新方式。随着电子健康记录取代纸质文件&#xff0c;远程医疗缩短了患者和医疗服务提供者之间的距离&#xff0c;数字化转型既是福音&#xff0c;也是挑战。最近的全球…

【正点原子STM32连载】第十九章 通用定时器输入捕获实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第十…

一个例子看懂IO模型

1.用户态和内核态 现代操作系统将空间划分为用户空间和内核空间。 用户态&#xff1a;一般都是些应用程序&#xff0c;不能直接的访问内核空间和硬盘。 内核态&#xff1a;操作系统的核心&#xff0c;只有切换到内核态才能操作磁盘。 2.同步、异步、阻塞、非阻塞 我们使用前后…

Java请求webservice踩过的坑

最近项目对接过程中&#xff0c;因为对方系统比较旧&#xff0c;我们和对方进行交互使用webservice方式进行&#xff0c;对方给出相关文档&#xff0c; 接口地址&#xff1a;http://ip:port/abc/def/xxxService?wsdl 接口名称&#xff1a;methodA 1-springboot配合CXF使用 …

智慧水务建设项目可研报告-222页【可研报告】

导读&#xff1a;原文《智慧水务建设项目可研报告-222页【可研报告】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 部分内容&#xff1a; 业务需求分析 3.3.1业…

CentOS7中使用Docker进行MySQL主从复制【论文式教程】

1、安装Docker 卸载docker sudo yum remove docker*安装 yum-utils 工具集&#xff0c;它提供了一些额外的命令和功能&#xff0c;帮助你更好地管理 YUM 软件包管理器。其中包含了一个工具叫做 yum-config-manager&#xff0c;它用于管理 YUM 配置&#xff0c;包括软件仓库源…

计算机视觉:比SAM快50倍的分割一切视觉模型FastSAM

目录 引言 1 FastSAM介绍 1.1 FastSAM诞生 1.2 模型算法 1.3 实验结果 2 FastSAM运行环境构建 2.1 conda环境构建 2.2 运行环境安装 2.3 模型下载 3 FastSAM运行 3.1 命令行运行 3.1.1 Everything mode 3.1.2 Text prompt 3.1.3 Box prompt (xywh) 3.1.4 Points p…