目标
-
体验 sofa 插件
-
分析 sofa 接口如何注册到网关
-
分析 sofa 插件 如何代理 sofa 服务
-
总结
关于 SOFARPC
简介
SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。
功能特性
- 透明化、高性能的远程服务调用
- 支持多种服务路由及负载均衡策略
- 支持多种注册中心的集成
- 支持多种协议,包括 Bolt、Rest、Dubbo 等
- 支持同步、单向、回调、泛化等多种调用方式
- 支持集群容错、服务预热、自动故障隔离
- 强大的扩展功能,可以按需扩展各个功能组件
相比DUBBO它没有这么多历史的包袱,代码更加简洁,设计思路更加清晰,更加容易去理解其中的代码。
本篇所提的 sofa 服务均为 sofa rpc 服务。
体验网关代理 sofa 服务
1、启动 zookeeper
,默认端口2181
2、启动 soul-admin
,将 sofa 插件设置为启用,使用默认配置
3、soul-bootstrap
引入依赖后启动
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-rpc-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-sofa</artifactId>
<version>${project.version}</version>
</dependency>
4、找到 soul-examples
模块里的 soul-examples-sofa
,启动服务
输出日志 sofa client register success
提示注册成功
5、查看注册的三支 sofa 服务
6、通过网关访问 sofa 服务,成功
同时 soul-bootstrap
输出选择器和规则成功匹配日志
sofa 接口如何注册到网关
SofaServiceBeanPostProcessor 构造时组织元数据注册地址
SofaServiceBeanPostProcessor 实现 BeanPostProcessor,容器初始化后进行注册
RegisterUtils 借助 OkHttpTools 将元数据 post 到 soul-admin
总结一下,sofa client 通过容器初始化时获取 SoulSofaClient,结合 serviceBean 和 方法组织元数据,最后通过 OkHttpTools 将元数据 post 到 soul-admin