Netifi Proteus是类似Spring Cloud的,但是基于RSocket构建的下一代反应式微服务平台,它让开发人员通过在单个可部署中透明地提供API管理,路由,服务发现,预测负载平衡和超低延迟RPC来专注于他们的产品。
Spring Cloud各个组件之间通信时基于通常Pull的Http协议方式,而Proteus是基于推的RScoket + Protobuf动态方式。
Proteus = SpringCloud + Vert.x
Proteus采用一种新颖的方法来解决网络高效通信、断路器和负载平衡,而不是在传统通信协议之上进行分层。Proteus提供了基于三层的解决方案:
消息重组和背压感知流
无论应用程序是发送简短的HTTP请求还是兆字节的流视频,Proteus提供的消息路由都十分高效。RSocket具有内置的消息分块/重构逻辑,可管理的有效负载大小实现流式传输大型数据集。
Proteus支持各种背压策略,以确保数据消费者能够跟上数据生成者的步伐,而无需任何人需要实现自己的背压或重试逻辑。作为一种服务,您可以设置一种机制来流式传输客户端可能需要的所有数据,并且客户端的需求和消耗率可以调节数据实际通过线路发送的速度 - 而不是任何复杂的服务器端逻辑。
支持多语种
客户端,服务器和对等应用程序可以使用多种语言编写,然后可以使用 RSocket 开源协议进行全双工,反应性通信, Protobuf 接口保证相互兼容性定义语言。
生态系统
Proteus主要组件是Proteus Broker,是一个类似消息总线的代理,其完整生态系统包括:
RSocket RPC
支持Protobuf和原始RSocket的反应式RPC层。您可以在有或没有Broker的情况下使用它。
Proteus Broker
云原生消息代理Broker,可直接在应用程序之间提供虚拟连接,无论位于何处。Proteus代理促进客户端和服务器应用程序之间的通信 - 包括移动设备,Web浏览器和云中的微服务 - 无论它们位于何处,就好像它们具有点对点连接一样。
Proteus代理构建在 Reactive Streams 和 RSocket 之上。它是一个非阻塞应用程序,它根据底层传输创建最佳线程数(例如,使用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的响应式扩展适配器。