Spring官方RSocket Broker 0.3.0发布: 快速构建你的RSocket架构

简介:Spring官方的RSocket Broker其实开发已经非常久了,我以为会伴随着Spring Cloud 2021.0发布的,但是没有发生。不过Spring RSocket Broker还是发布了最新的0.3版本,虽然还是预览版,但目前已经可用,考虑官方还没有提供对应的文档,大家入门做Demo还有些困难,所以这篇文章就是帮你快速入门Spring RSocket Broker,同时解析一下RSocket Broker的特性。

image.png

作者 | 雷卷
来源 | 阿里技术公众号

Spring官方的RSocket Broker其实开发已经非常久了,我以为会伴随着Spring Cloud 2021.0发布的,但是没有发生。不过Spring RSocket Broker还是发布了最新的0.3版本,虽然还是预览版,但目前已经可用,考虑官方还没有提供对应的文档,大家入门做Demo还有些困难,所以这篇文章就是帮你快速入门Spring RSocket Broker,同时解析一下RSocket Broker的特性。

一 Spring RSocket Broker架构

首先让我们看一下Spring RSocket Broker的架构图,如下:

image.png

RSocket Broker为一个集群对外提供服务,其主要服务就是应用注册和RSocket请求的转发,集群中的每一个Broker都维护着统一的全局路由表。RSocket Broker有两个监听端口:8001端口主要负责提供对外RSocket服务,如应用到Broker之间的长连接,然后就是该长连接之上的RSocket请求的发送和接收。7001端口主要负责集群内部Broker节点之间的通讯,如同步应用接入的元数据信息,确保全局服务路由表的统一,还包括Broker之间的请求转发,当然Broker之间的通讯协议还是RSocket。

当一个服务应用和Broker建立连接时,会将一些基础信息发送给Broker,对应的属性主要包括:路由节点ID(routeId)、服务名称(sevice-name), tags(标签)。

  • 路由节点ID(routeId): 这个是应用到broker创建的长连接的唯一标识,通常是UUID,当然也可以用户自己指定,连接的唯一性会让各个Broker集群的全局路由表处理方便很多。注意routeId是长连接的标识,不是应用的标识,应用的标识是通过tags进行标识的。如果一个应用和broker创建两条长连接,那么就有两个不同的routeId,当然这种情况下每一条连接可以提供不同的服务名称。
  • 服务名称:这个其实就是服务的DNS Name,如果其他应用想调用该应用提供的RSocket服务,就需要指定该服务名称。虽然Spring RSocket提供了messageMapping,但是mapping的key是应用内部的,并不能保证全局唯一,只有Service Name + RSocket Mapping Key才能定位指定的服务,这个和http的原理是一致:Mapping Key类似HTTP Path,而Service Name类似域名。
  • 标签:标签是用于标识应用提供的RSocket服务,当然RSocket Broker规范也提供了一些缺省的标签,如InstanceName, ClusterName, Region, MajorVersion等。标签不只是服务的元信息,此外还可以参与到服务路由上。如可以设置服务版本、集群名称等,之前开发中老大难的定向路由就可以通过标签轻松解决,如可以给服务打上InstanceName=app-leijuan的标签,然后在调用中设置InsanceName就可以调用某位开发者启动的服务实例。大家不用担心基于Tag的路由性能问题,背后有Roaring BitMap支持,速度非常快。

应用可以向集群中的一个或者几个RSocket Broker节点注册,这个取决于Broker Client的配置,这个稍后我们还会讲到。

注意: 这里大家不要将ServiceName仅理解为Java的Interface的全称,如com.example.user.UserService,那么当一个应用有多个这样的Java服务时,那么处理起来就比较麻烦啦。事实上serviceName主要用在请求路由上,如一个服务应用同时包括UerService, UserExtraService多个服务接口,你可以将ServiceName设置为com.example.user方式,当然还要保证ServiceName唯一,原先的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值