Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

Releases: alibaba/alibaba-rsocket-broker

1.0.0.RC3

12 Nov 21:16
Compare
Choose a tag to compare

特性调整

  • 添加Spring Cloud Function接入样例: https://github.com/alibaba/alibaba-rsocket-broker/blob/master/example/rsocket-cloud-function/README.md
  • 增加连接过程中单个或多个服务上下线,如一些应用中,服务比较多,一些服务不可用时,可以做单个服务下线处理
  • 调整RSocket多端口监听展现和元信息上报,可以同时展现RSocket监听的多端口信息
  • 请求方的Remote IP获取和展现
  • 添加flatbuffers & Cap’n Proto序列化框架类型声明
  • RSocket Java 1.1.0和Spring Boot 2.4.0兼容: alibaba-rsocket-core和alibaba-rsocket-spring-boot-starter,服务可以使用Spring Boot 2.4接入到RSocket Broker,但是RSocket Broker目前只支持Spring Boot 2.3.x和RSocket 1.0.x,主要是gossip SDK还未能和Reactor Netty 1.0.0的兼容。

Bug修复

  • 修复server.port=0随机端口注册情况
  • 修复Gossip广播时一致性hash的bug,感谢 @jimichan

文档

1.0.0.RC2

04 Oct 23:46
Compare
Choose a tag to compare

特性调整

Bug修复

  • 取消gRPC的stream操作超时
  • 修复自定义服务名的bug #83

文档

1.0.0.RC1 Release Notes

31 Aug 18:25
Compare
Choose a tag to compare

特性调整

  • Kotlin 1.4.0 & Kotlinx Coroutines 1.3.9
  • Kotlinx Serialization 1.0.0-RC: 不兼容之前版本,且Kotlin版本需为1.4.0+
  • RSocket http gateway uses "/api" as prefix to route RSocket services

Bug修复

  • 修复RSocket Channel通讯时switchOnFirst的bug
  • 修复example中alibaba-rsocket-core依赖错误

文档

1.0.0.M3 Release Notes

25 Jul 00:39
Compare
Choose a tag to compare

特性调整

  • Configuration调至为基于H2 MVStore,支持配置持久化到磁盘
  • 升级到Vaadin 14.3.0,方便后续Modeless, resizable and draggable对话框,Spring Boot devtools支持
  • ScaleCube Gossip更新至2.6.0-RC7,支持Jackson 2.11
  • Sticky Session: 一个service的请求始终由某一服务提供者处理,不会做在多个服务提供者随机分发 https://github.com/alibaba/alibaba-rsocket-broker/wiki/RSocket-Routing
  • 负载均衡: 添加了健康度检查超时,添加返回状态码判断
  • 升级到Spring Boot 2.3.2,样例增加了Spring Boot RSocket接口调用支持

Bug修复

  • 修复Windows下WellKnownMimeType类重名bug
  • 修改config推送应用名在broker上未设定的bug
  • Spring Boot Devtools兼容测试

文档

为何有WellKnownMimeType类重名问题

为何要创建一个重名的WellKnownMimeType类? 这里主要是考虑MimeType扩展的问题。 RSocket Java SDK中,WellKnownMimeType是enum,
这表示非常难以扩展,但是在实际的企业内部,你可能还会使用到特定MimeType,如FlatBuffers,MessagePack等,但是这些都没有被WellKnownMimeType收纳,
我们希望通过同名类的覆盖机制,方便你自行添加对应的MimeType,方便你使用其他类型进行数据传输的序列化和反序列化。 如果有问题,欢迎反馈给我们。

1.0.0.M2 Release Notes

18 May 00:54
Compare
Choose a tag to compare

新特性

  • Zipkin Tracing 和 Prometheus Metrics集群化支持 https://github.com/alibaba/alibaba-rsocket-broker/wiki/Alibaba-RSocket-Broker-Observability
  • Kotlin Coroutines支持:使用suspend method和Flow编写Reactive Service接口
  • Kotlin serialization支持: Cbor 和 Protobuf
  • RSocket Cluster: 支持Internet和Intranet接入,同时支持Cluster节点之间的jsonrpc调用
  • IoT接入优化: 支持基于一致性Hash算法的单连接接入
  • gRPC优化: 支持全类型gRPC通讯方式

内部调整

  • RSocket Java 1.0.0发布啦 🌹
  • ByteBuddy替换JDK Proxy,性能提升
  • 添加Origin Metadata: 服务提供方可以知道了解调用方的信息
  • 升级到Spring Boot 2.3.0: Reactive支持更好啦,内置R2DBC支持
  • Docker镜像生成: 同时支持jib & buildpack,方便自定义Docker镜像生成

文档

当然还有更多的bug修复、开发包升级和性能测试,这里就不一一列举啦。 欢迎试用并给出反馈。

Alibaba RSocket Broker MileStone 1

23 Mar 06:13
Compare
Choose a tag to compare

距离Alibaba RSocket Broker宣布开源已经有三个月,也迎来了第一次里程碑版本发布。
在这三个月时间内,我们的核心精力主要集中在产品特性开发上,我们希望这些特性能够帮助更多的开发者拥抱RSocket,接下来我们将对这些特性向大家进行介绍。

通用特性

服务路由

  • 全新的二进制路由规范,只需要8个bytes就可以完成路由,这个保证broker在做消息转发的最高性能,请参考 https://github.com/alibaba/alibaba-rsocket-broker/wiki/RSocket-Routing
  • 标准的RSocket路由规范实现,兼容Spring RSocket路由规范,使用RSocketRequester可以直接接入RSocket Broker并访问RSocket服务
  • 支持endpoint(ip,id匹配)和元信息匹配路由,策略更加灵活。
    @Bean
    public UserService userService(UpstreamManager upstreamManager) {
        return RSocketRemoteServiceBuilder
                .client(UserService.class)
                .upstreamManager(upstreamManager)
                //.endpoint("ip:192.168.1.2")
                .build();
    }

序列化

  • Hessian: 兼容Java8日期类型、Optional,兼容Dubbo Hessian Lite。自行扩展也非常容易,如扩展支持Joda Time, Java Money等,你只需要在你的SDK添加META-INF/hessian/serializers就可以,不需要额外配置
  • 多种序列化支持: JSON, Protobuf, Apache Avor, Cbor等,可自行扩展

流式数据

    @GetMapping(value = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
    public Mono<ByteBuffer> user(@PathVariable Integer id) {
        return userServiceExtra.findById(id);
    }

应用接入

Spring Boot支持

  • 只需添alibaba-rsocket-spring-boot-starter依赖即可
  • 完备的actuator信息,访问 /actuator/rsocket
  • 于标准的Spring RSocket兼容,你可以通过Spring RSocketRequester来访问RSocket服务
return rsocketRequester.route("com.alibaba.user.UserService.findById").data(id).retrieveMono(User.class);

多语言支持

  • Java: 基于标准的Java Interface定义服务接口,同时支持RxJava 2&3适配
  • JavaScript in Browser & Node.js
  • Python
  • Ruby
  • Golang
  • Rust & WebAssembly接入

安全标准

  • 应用接入使用JWT RSA验证,保证接入安全,同时JWT Token内置Service Account和ACL支持
  • 同时支持多租户方案,可以适用于合作伙伴接入、多云环境部署、Edge端接入和隐私服务隔离等,可自定义不同合作伙伴或者网络环境的安全策略,保证中心服务的安全

稳定性和性能

  • Load Balance支持: 应用和Broker之间完备的复杂均衡支持,同时可为Spring Boot的RSocketRequester提供负载均衡支持
  • 完备的容错支持: 健康度检查、失败重试等
  • 支持服务消费者和服务提供者直接调用,可支持性能极致要求场景
  • 所以系统异常都包括错误码,更方便你定位问题

RSocket Broker

  • 基于Gossip的集群管理: 支持集群广播和Broker实例之间相调用,无外部服务依赖,集群自管理
  • 外部网络应用接入支持: 无需VPN,直接支持外部应用接入,如多云环境、Edge环境等
  • 多协议支持: 如内部网络TCP通讯,外部应用以WebSocket接入
  • Observability: Metrics反向采集,也就是通过broker采集应用的metrics信息, Tracing的支持
  • Filter支持: 你可以编写自己的Filter实现诸如动态路由、日志打印、Metrics等。
  • 支持A/B测试,不同应用实例的权重配置支持,支持动态调整流量比例
  • 完备的控制台:方便你快速了解集群信息、信息。基于Vaadin开发,可自行添加自定管理界面,开发成本非常低
  • HTTP REST API网关: 通过HTTP直接调用RSocket服务,
  • gRPC网关: 通过gPRC接口调用RSocket服务 https://github.com/alibaba/alibaba-rsocket-broker/tree/master/alibaba-broker-grpc-gateway
  • 内置配置推送服务接口: 你可以自行扩展接入Consul、etcd, ZooKeeper等
  • 基于标准的CloudEvents格式进行事件推送,同时增加了事件处理后回发确认的机制,方便进行数据验证

开发支持

  • Broker的StandAlone版本,更方便开发
  • 提供endpoint支持:如访问指定服务器的服务,方便你进行开发调试
  • Docker镜像支持,Docker Compose快速启动
version: "3"
services:
  alibaba-rsocket-broker:
    image: linuxchina/alibaba-rsocket-broker:1.0.0.M1
    ports:
      - "9997:9997"
      - "9998:9998"
      - "9999:9999"

其他整合

除此之外,我们还提供了一些整合的样例提供给大家参考

文档

已知问题

在发布到Maven中心仓库时,我们犯了一个小错,搞错alibaba-rsocket-service-common的版本好,所以大家在使用时请务必添加以下依赖。

<dependency>
   <groupId>com.alibaba.rsocket</groupId>
   <artifactId>alibaba-rsocket-service-common</artifactId>
   <version>1.0.0.M1</version>
</dependency>
<dependency>
    <groupId>com.alibaba.rsocket</groupId>
    <artifactId>alibaba-rsocket-spring-boot-starter</artifactId>
    <version>1.0.0.M1</version>
</dependency>

Maven中心仓库地址为: https://repo1.maven.org/maven2/com/alibaba/rsocket/

感谢

非常感谢Reactive的深圳微信群的同学做了大量的稳定性测试。
接下来的版本,我们还会在特性开发上做更多的努力,当然稳定性方面的投入会逐渐增加,我们也希望能够加入试用队伍。