赞
踩
大家好,我是哪吒。
在服务化拆分之后,服务提供者和服务调用者会运行在两台不同的物理机的不同的进程内,他们之间的调用称为远程方法调用,简称RPC。
RPC的大体流程是:
这也就对应着4个问题:
HTTP通信是一种基于请求和响应模型的通信协议,用于在网络中传输数据。它由客户端和服务器组成,客户端向服务器发送请求,服务器处理请求并返回适当的响应。
(1)HTTP通信的过程如下
(2)HTTP通信的特点如下:
完成请求后,再经历一次“四次挥手”的过程来断开连接。
Socket通信是基于TCP/IP协议的封装,建立一次Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ;另一个运行于服务器端,称为ServerSocket 。就像下图所描述的,Socket通信的过程分为四个步骤:服务器监听、客户端请求、连接确认、数据传输。
当客户端和服务端建立网络连接后,就可以发起请求了。但网络不一定总是可靠的,经常会遇到网络闪断、连接超时、服务端宕机等各种异常,通常的处理手段有两种:
网络已经连通,服务端如何处理客户端请求呢?
最常用的协议是HTTP协议, 它是一种开放协议,各大网站的服务器和浏览器之间的数据传输大都采用这种协议。
通常协议规定中包含消息头和消息体两部分。消息头存放的是协议的公共字段以及用户扩展字段,消息体存放的是传输数据的具体内容。
在微服务中,数据的序列化和反序列化是非常重要的环节,它们涉及到数据的传输和存储。以下是一些关于微服务中数据序列化和反序列化的建议:
序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,而反序列化则是将已序列化的数据还原为原始数据结构或对象状态的过程。在微服务中,需要选择一种高效的、易于理解和使用的序列化方式。常见的序列化方式包括JSON、XML、Protocol Buffers等。其中,JSON是一种轻量级的数据交换格式,它以可读性高、兼容性好、支持多种语言等优点而被广泛使用。而Protocol Buffers则是一种高效的数据序列化格式,它能够将结构化的数据序列化成字节流,并可以在网络中进行传输。
在微服务中,数据传输效率是非常重要的,因此需要选择一种高效的序列化方式。JSON和XML虽然易于理解和使用,但它们的传输效率相对较低。而Protocol Buffers则是一种更高效的序列化格式,它能够将数据结构化并压缩成更小的字节流,从而提高了数据传输效率。
在微服务中,数据结构可能会随着业务需求的变化而变化。因此,在选择序列化方式时需要考虑数据结构的变化情况。如果数据结构经常变化,那么选择一种灵活的序列化方式是非常重要的。如果数据结构相对稳定,那么可以选择一种更高效的序列化方式。
微服务通常需要支持不同的语言和平台。因此,在选择序列化方式时需要考虑跨语言和跨平台的需求。JSON和XML是一种通用的数据交换格式,支持多种语言和平台。而Protocol Buffers则是一种跨语言的数据序列化格式,它可以在不同的语言之间进行数据交换。
在微服务中,数据的传输和存储都需要考虑安全性问题。因此,在选择序列化方式时需要考虑数据的安全性。如果需要在网络中进行数据传输,那么可以选择一种加密的序列化方式来保护数据的安全性。如果需要在本地存储数据,那么可以选择一种加密的存储方式来保护数据的安全性。
在微服务中,数据的序列化和反序列化是非常重要的环节。需要根据实际情况选择合适的序列化方式,并考虑数据传输效率、数据结构的变化、跨语言和跨平台的需求以及数据的安全性等因素。
这三个部分就组成了一个完整的RPC调用框架,通信框架提供了基础的通信能力,通信协议描述了通信契约,而序列化和反序列化则用于数据的编/解码。一个通信框架可以适配多种通信协议,也可以采用多种序列化和反序列化的格式,比如服务化框架Dubbo不仅支持Dubbo协议,还支持RMI协议、HTTP协议等,而且还支持多种序列化和反序列化格式,比如JSON、Hession 2.0以及Java序列化等。
微服务 Spring Cloud 1,服务如何拆分?使用微服务的注意事项?
微服务 Spring Cloud 2,一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)
微服务 Spring Cloud 3,如何对微服务进行有效的监控?
微服务 Spring Cloud 4,分布式系统如何进行数据分区
微服务 Spring Cloud 5,一图说透Spring Cloud微服务架构
微服务 Spring Cloud 6,用了这么多年Docker容器,殊不知你还有这么多弯弯绕
微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码
微服务 Spring Cloud 8,开源RPC框架如何选型?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。