Proteus是使用RSocket构建流式微服务的新平台

19-02-07 banq
                   

Netifi Proteus是类似Spring Cloud的,但是基于RSocket构建的下一代反应式微服务平台,它让开发人员通过在单个可部署中透明地提供API管理,路由,服务发现,预测负载平衡和超低延迟RPC来专注于他们的产品。

Spring Cloud各个组件之间通信时基于通常Pull的Http协议方式,而Proteus是基于推的RScoket + Protobuf动态方式。

Proteus = SpringCloud + Vert.x

Proteus采用一种新颖的方法来解决网络高效通信、断路器和负载平衡,而不是在传统通信协议之上进行分层。Proteus提供了基于三层的解决方案:

  1. Proteus是反应性的,不仅在应用层,而且在网络层。与基于传统网络模型构建的其他解决方案不同,Proteus构建在专为云原生应用程序设计的应用程序网络堆栈上。这为您提供了构建实时流应用程序的强大工具。
  2. Proteus很聪明。与提供更多设置并需要频繁手动调整的其他解决方案不同,Proteus使用有关您的应用程序和应用程序流量的信息来防止诸如雷鸣般的群鸣,重试风暴和其他常见问题。
  3. Proteus在应用程序之间提供强大的合同 合同为您提供隐式版本信息,有关交换数据的信息,应用程序之间的交互模型以及状态感知服务发现。

消息重组和背压感知流

无论应用程序是发送简短的HTTP请求还是兆字节的流视频,Proteus提供的消息路由都十分高效。RSocket具有内置的消息分块/重构逻辑,可管理的有效负载大小实现流式传输大型数据集。

Proteus支持各种背压策略,以确保数据消费者能够跟上数据生成者的步伐,而无需任何人需要实现自己的背压或重试逻辑。作为一种服务,您可以设置一种机制来流式传输客户端可能需要的所有数据,并且客户端的需求和消耗率可以调节数据实际通过线路发送的速度 - 而不是任何复杂的服务器端逻辑。

支持多语种

客户端,服务器和对等应用程序可以使用多种语言编写,然后可以使用RSocket开源协议进行全双工,反应性通信,Protobuf 接口保证相互兼容性定义语言。

生态系统

Proteus主要组件是Proteus Broker,是一个类似消息总线的代理,其完整生态系统包括:

RSocket RPC

支持Protobuf和原始RSocket的反应式RPC层。您可以在有或没有Broker的情况下使用它。

Proteus Broker

云原生消息代理Broker,可直接在应用程序之间提供虚拟连接,无论位于何处。Proteus代理促进客户端和服务器应用程序之间的通信 - 包括移动设备,Web浏览器和云中的微服务 - 无论它们位于何处,就好像它们具有点对点连接一样。

Proteus代理构建在Reactive StreamsRSocket之上。它是一个非阻塞应用程序,它根据底层传输创建最佳线程数(例如,使用TCP和WebSockets时,它将为每个核心创建一个线程)。

Proteus不需要使用长轮询或定期查询,以便了解哪些客户端和服务应用程序处于活动状态。相反,它依赖于RSocket的面向连接的特性,并且只要该应用程序与Proteus代理保持连接,就只保留有关每个应用程序的信息。Proteus代理与其集群中的任何其他代理共享此连接信息,以便及时将状态更改传播到其他代理。

Borker集群

多个Broker可以携手合作,提高可靠性和可扩展性。

Proteus控制台

Proteus的门户网站,提供管理和监视。

Proteus CLI

从命令行管理和询问Proteus代理群集的状态。

Proteus客户端

您实现通过Proteus系统进行通信的客户端和微服务。

Proteus HTTP网关

利用代理和Proteus RPC为遗留应用程序创建Proteus生态系统的HTTP / 1.1 Restful桥的HTTP网关。

Proteus指标

允许您从Proteus应用程序收集指标,并将它们连接到现有的指标收集系统。

Proteus Open Tracing

利用Proteus生态系统并从任何位置收集Open Tracing信息。

https://github.com/netifi/proteus-spring-kafka-example 展示了如何使用Proteus和reactor-kafka实现消息集成。

https://github.com/netifi/RxNetty是Netty的响应式扩展适配器。