首页>>科技 >>内容

rsocket服务器,RSocket的定义及四种通讯模式

发布时间:2023-07-12 20:30:48编辑:温柔的背包来源:

rsocket服务器,RSocket的定义及四种通讯模式

很多朋友对rsocket服务器,RSocket的定义及四种通讯模式不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

RSocket RSocket的定义就是反应式套接字的意思,是反应式编程的网络协议。其官方文档的口号是:提供反应流语义的应用协议。这里有几个意思:第一,RSocket保证网络通信的语义符合反应流的规范。其次是应用层的协议,所以不介意传输层的协议。然后,文件给出了它的具体定义:

RSocket是用于字节流传输的二进制协议,如TCP、Web Sockets和Aeron。这里要强调的是,RSocket协议是二进制代码,和文本代码有很大的区别。2设计的思路随着微服务的发展,传统的反应式编程的实现也受到挑战,尤其是网络传输的部分,反压需要端到端传输,而不是一跳就丢。另一方面,反应式编程本身要求反应式编程是消息驱动的。

这两个方向的合力就是将反应式编程从CPU和内存延伸到网络,这就是RSocket。这里的网络是指应用层,RSocket努力的方向是让应用的语义在网络上传播。对于传输层,RSocket的原则是尽可能兼容。目前它支持的传输层是WebSockets,TCP,或者Aeron。3 RSocket的四种通信模式* *

RSocket在实现之前定义了一组规范。这组规范定义了数据帧的格式。此外,RSocket还总结了分布式应用的常见通信特征,并定义了四种不同的反应流通信模式。请求/响应(stream of 1):是传统的RPC请求/流(fine stream of many):是指单向流fire-and-forget(无响应):是指没有返回值的RPC通道(双向流):是指双向流4和反应式编程的关系。

反应式编程的两个主要方面(非官方解释)是非阻塞线程管理和反压。RSocket主要是实现背压的网络部分。有些语言,比如Java,有几个反应式编程库,比如RxJava,Reactor。在这种情况下,RSocket与这些现有的库集成在一起,不会重新发明轮子。但是,如果某些语言没有这样的库,那么RSocket会自己实现这部分功能。

一个完整的RSocket SDK,包括非阻塞线程管理反压网络,应该算是反应式编程的扩展,而不是一个独立的模块。没有其他部分,RSocket根本没用。5与gRPC的比较* *

GRPC也分为两部分(非官方版本):protobuf和HTTP/2。与HTTP2的比较将在下一节讨论。Protobuf的问题是用多种语言定义服务。这和RSocket试图解决的问题不是一个方向。所以RSocket可以支持protobuf的IDL。在负载编码的问题上,RSocket是中立的,它支持protobuf,Json,或者Java接口。6与HTTP/2的对比HTTP/2是1.1的增强版,但还是HTTP。这个协议有几个大问题:

它是为web通信而开发的,主要特点是单向通信。对于一个链接,必须有一个客户端和一个服务器。RSocket是为应用程序之间的通信而设计的。交流和对话一样,是双向的,流动的。所谓的客户端和服务器的关系也很模糊。HTTP/2著名的服务器推送是为浏览器开发的。对于应用程序,要么使用websocket,要么使用SSE,即ascii编码。HTTP/2支持的语义是基于HTTP方法的,比如GET、PUT、DELETE等。

这些对于应用程序来说是不够的。额外操作的定义应该在应用程序中自行完成。HTTP/2的流量控制是在字节级,而不是在应用层(帧)。这种转换还会增加应用程序的负担。7 RSocket本身的特性

让我们暂时忘记反应式编程。不管叫什么,最终都会给应用带来好处。让我们介绍一下RSocket给应用程序带来的好处:

面向链接。我们将在以后的展览中讨论这一特性。简而言之,链接的状态将被保存。当然,与卡夫卡等人不同,这种状态是不倒的。但是只要一方不重启,链路状态就可以恢复。双向传输。就是复用同一个链接,双方没有区别。一旦链路建立,双方可以通过反压请求数据传输。端到端流量控制。这篇文章以后还会扩展。

简单来说,HTTP/2的流量控制是一站一站的,也就是说,假设A-B-C和A-B的流量控制对B-C无效.通过RSocket,应用程序可以控制空调的流量控制。比如,A说给我8条记录(这是反压的实现),C会知道并发送8条记录给A.与HTTP/2相比,这些特性将大大提高RSocket在应用程序之间的通信性能。

作者:石安迪,阿里巴巴资深技术专家。Andy长期关注服务网格,在Cloud Foundry、Kubernetes、Envoy、RSocket等领域有着丰富的实践和开发经验。

以上知识分享希望能够帮助到大家!