海口免费建站,南通seo网站价格,wordpress商家目录,wordpress 最大上传文件一句话导读 微服务设计的一个挑战就是服务间的通信问题#xff0c;服务间通信理论上可以归结为进程间通信#xff0c;进程可以是同一个机器上的#xff0c;也可以是不同机器的。服务可以使用同步请求响应机制通信#xff0c;也可以使用异步的基于消息中间件间的通信机制。同…一句话导读 微服务设计的一个挑战就是服务间的通信问题服务间通信理论上可以归结为进程间通信进程可以是同一个机器上的也可以是不同机器的。服务可以使用同步请求响应机制通信也可以使用异步的基于消息中间件间的通信机制。同步的有restful、RPC等方式异步的有各种mq中间件如rabbitmq、rocketmq、kafka等还有一些不常用的通讯方式如websocket可以让服务间建立长链接数据共享方式可以让服务通过数据库或文件的方式进行通讯。
目录
一句话导读
一、什么是通信 1.定义 2.通信媒介 3.通信协议
二、微服务的通信方式有哪些 1.微服务的同步通信 (1) REST方式 (2) gRPC方式
2.微服务的异步通信 一、什么是通信 1.定义 百度百科的解释通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质将信息从某方准确安全地传送到另方。 维基百科的解释通信是发送者通过某种媒体以某种格式来传递信息到收信者以达致某个目的。广义上任何信息的交通都是通信狭义上的通信专指以电为载体进行的信息交流所以很多时候“通信”与“电信”的含义相近不特别加以区分。通信技术拉近了人与人之间的距离提高了通信的效率深刻的改变了人类的沟通方式。 整体来看至少一点是通用共识的就是通信发送者通过媒介将信息传递给接收者而这里的发送者、接收者可以是人与人、人与自然界机器与机器、人与机器等等。 2.通信媒介 在定义中提到的媒介就是通信媒介那么具体什么是通信媒介呢 通信媒介指的是信息传递的物理或逻辑通道它是信息传递的途径或介质。通信媒介可以是多种形式包括电缆、无线信号、光纤、空气等。在不同的场景中使用不同的通信媒介来传递信息。例如在计算机网络中通信媒介可以是以太网、Wi-Fi等在人际交往中通信媒介可以是声音、文字、图像等。 3.通信协议 人们要相互理解各自传递的信息我们双方就要约定一个规则比如我们通过声音说汉语或者通过文字写英文来传递信息这里提到的说汉语、写英文那就是我们约定的规则也就是通信协议。能够保障发送者、接收者都能够理解信息的含义。 通信协议指的是在信息传递过程中所遵循的规则和约定以确保信息能够正确、可靠地传递和解释。通信协议规定了信息的格式、传输方式、错误检测和纠正方法等。通信协议是确保通信双方能够相互理解并成功交流的基础。例如在计算机网络中TCP/IP协议是常用的通信协议在人类交往中语言和符号也是通信协议的一种形式。
二、微服务的通信方式有哪些 微服务之间的通讯方式可以有很多我们可以分成两个维度去总结一个是接收端多少的维度一个是接口阻塞情况维度。通过接收端多少我们可以分为点对点模式和广播模式点对点模式则是发送者只向一个接收者发送消息广播模式则是发送者通过广播的信息发送给众多的接收者通过接口阻塞情况维度可以分为同步通信和异步通信同步通信则是发送者发送消息后需要等待接收者响应等待的过程则是阻塞过程。异步通信则是发送者将消息发送出去后就不用管了接收者处理消息时发送者还可以做其他事不阻塞等待响应。 1.微服务的同步通信 常见的有这两种方式REST方式、gRPC方式 (1) REST方式 RESTRepresentational State Transfer是一种网络架构风格用于设计分布式系统中的网络应用程序。它最初由Roy Fielding在他的博士论文中提出并在2000年被正式引入。REST强调以资源为中心通过使用一组预定义的操作对这些资源进行状态转移和交互。 REST 的核心思想是将资源Resource暴露为一组统一的、易于理解的URL并使用不同的HTTP方法如GET、POST、PUT、DELETE等来对资源进行操作。每个资源可以用一个唯一的URL进行访问而HTTP方法则指示了对该资源要执行的操作。例如通过GET请求获取资源资源可以通过xml、json对象、二进制等形式作为载体。通过PUT请求更新资源等等在springcloud中feign模式是将http请求进行了进一步封装。本质还是通过REST方式做服务间的交互的。 REST 的特点 无状态性Statelessness 每个HTTP请求都应该包含足够的信息来执行请求服务器不应该依赖之前的请求来理解当前的请求。这使得服务端不需要维护客户端的状态使系统更简单和可扩展。
资源导向Resource-Oriented REST 架构将数据或功能抽象为资源每个资源都有一个唯一的标识符URL。客户端通过对资源进行操作来实现不同的业务功能。
统一接口Uniform Interface REST 使用一组统一的操作方法HTTP方法来对资源进行操作包括GET获取、POST创建、PUT更新和DELETE删除等。这简化了客户端和服务器之间的交互。
缓存Caching REST 鼓励使用缓存来提高性能。服务器可以在响应中指定是否允许客户端缓存响应以减少重复请求。
按需获取Client-Server REST 鼓励将客户端和服务器分离客户端负责用户界面和用户体验服务器负责数据存储和业务逻辑。
分层系统Layered System REST 支持构建分层的系统结构每一层都只知道与之相邻的层这有助于提高系统的可伸缩性和灵活性。
自描述性Self-Descriptive REST 的响应应该包含足够的信息使客户端能够理解如何处理响应的数据。这可以通过使用标准的媒体类型如JSON、XML和自描述的标头来实现。
跨平台Platform-Independent REST 架构不依赖于特定的编程语言或技术栈使得不同平台的应用程序能够相互通信和交互。 (2) gRPC方式 gRPC 是一种高性能、开源的远程过程调用RPC框架最初由 Google 开发并开源。它允许不同的应用程序在不同的环境中进行通信使用了现代的协议和序列化机制如 Protocol BuffersProtoBuf以提供高效、可靠的跨网络通信。
以下是 gRPC 的一些关键特点和组成部分
基于 HTTP/2 gRPC 基于 HTTP/2 协议可以在一个连接上进行多路复用减少了连接的数量提高了性能。
多种支持语言 gRPC 提供了多种编程语言的支持包括 Java、C、Python、Go、C#、Node.js 等使得不同语言的应用程序可以进行跨平台的通信。
IDLInterface Definition Language 使用 ProtobufProtocol Buffers定义服务接口IDL 会自动生成客户端和服务器端的代码使得开发者可以专注于业务逻辑的实现。
支持多种通信模式 gRPC 支持多种通信模式包括简单的请求-响应、流式请求、流式响应和双向流式通信。
强大的错误处理和元数据支持 gRPC 提供了丰富的错误处理和状态码以及对元数据Metadata的支持使得开发者可以更好地进行错误处理和上下文传递。
拦截器 gRPC 支持拦截器机制可以在客户端和服务器端添加拦截器用于处理日志、认证、鉴权等逻辑。
性能优越 gRPC 基于二进制协议序列化效率高性能优越适用于高并发和低延迟的场景。
2.微服务的异步通信 服务间的异步通信采用异步交换消息的方式完成如RabbitMq、kafka
Kafka和RabbitMQ都是消息队列系统它们的主要区别包括
通信模型Kafka基于发布-订阅模型而RabbitMQ则采用了AMQP协议、MQTT协议等不同模型支持点对点和发布-订阅等模型。性能与可靠性Kafka在高并发、大数据流时表现更出色可实现每秒百万级别的数据处理而RabbitMQ采用了AMQP协议能够保证消息传输的可靠性和事务处理能力。数据存储Kafka将消息以文件的形式存储在磁盘上存储的消息不会立刻被消费而RabbitMQ则采用内存缓存消息一旦发送就会立刻被消费掉存储的消息数受到限制。集群架构Kafka支持集群架构的高可用和分区而RabbitMQ则基于主从架构支持镜像队列、负载均衡等机制。