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

目标

  • 体验 sofa 插件

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

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

  • 总结

关于 SOFARPC

简介

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

Soul网关源码解析(四)接入Sofa服务_第1张图片

功能特性

  • 透明化、高性能的远程服务调用
  • 支持多种服务路由及负载均衡策略
  • 支持多种注册中心的集成
  • 支持多种协议,包括 Bolt、Rest、Dubbo 等
  • 支持同步、单向、回调、泛化等多种调用方式
  • 支持集群容错、服务预热、自动故障隔离
  • 强大的扩展功能,可以按需扩展各个功能组件

相比DUBBO它没有这么多历史的包袱,代码更加简洁,设计思路更加清晰,更加容易去理解其中的代码。

本篇所提的 sofa 服务均为 sofa rpc 服务。

体验网关代理 sofa 服务

1、启动 zookeeper,默认端口2181

2、启动 soul-admin,将 sofa 插件设置为启用,使用默认配置

3、soul-bootstrap 引入依赖后启动

<dependency>
    <groupId>com.alipay.sofagroupId>
    <artifactId>sofa-rpc-allartifactId>
dependency>
<dependency>
    <groupId>org.apache.curatorgroupId>
    <artifactId>curator-clientartifactId>
    <version>${curator.version}version>
dependency>
<dependency>
    <groupId>org.apache.curatorgroupId>
    <artifactId>curator-frameworkartifactId>
    <version>${curator.version}version>
dependency>
<dependency>
    <groupId>org.apache.curatorgroupId>
    <artifactId>curator-recipesartifactId>
    <version>${curator.version}version>
dependency>
<dependency>
    <groupId>org.dromaragroupId>
    <artifactId>soul-spring-boot-starter-plugin-sofaartifactId>
    <version>${project.version}version>
dependency>

4、找到 soul-examples 模块里的 soul-examples-sofa ,启动服务

输出日志 sofa client register success 提示注册成功
在这里插入图片描述

5、查看注册的三支 sofa 服务
Soul网关源码解析(四)接入Sofa服务_第2张图片

6、通过网关访问 sofa 服务,成功
Soul网关源码解析(四)接入Sofa服务_第3张图片

同时 soul-bootstrap 输出选择器和规则成功匹配日志
在这里插入图片描述

sofa 接口如何注册到网关

SofaServiceBeanPostProcessor 构造时组织元数据注册地址
Soul网关源码解析(四)接入Sofa服务_第4张图片

SofaServiceBeanPostProcessor 实现 BeanPostProcessor,容器初始化后进行注册
Soul网关源码解析(四)接入Sofa服务_第5张图片

RegisterUtils 借助 OkHttpTools 将元数据 post 到 soul-admin
Soul网关源码解析(四)接入Sofa服务_第6张图片

总结一下,sofa client 通过容器初始化时获取 SoulSofaClient,结合 serviceBean 和 方法组织元数据,最后通过 OkHttpTools 将元数据 post 到 soul-admin

sofa 插件代理 sofa 服务

你可能感兴趣的:(soul,java,网关)