Soul网关源码解析(四)接入Sofa服务

目标

  • 体验 sofa 插件

  • 分析 sofa 接口如何注册到网关

  • 分析 sofa 插件 如何代理 sofa 服务

  • 总结

关于 SOFARPC

简介

SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 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

sofa 插件代理 sofa 服务

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页