soul源码学习(四)-sofa示例

配置

soul集成sofa时,需要进行以下步骤配置

  1. soul-admin开启sofa插件
    在这里插入图片描述
  2. 由于sofa与dubbo类似,都需要注册中心,因此也需要在soul-admin配置sofa的注册中心地址,使用默认的zookepper地址即可:
  3. 在这里插入图片描述
  4. 配置soul-bootstrap网关引入sofa插件依赖
<dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-plugin-sofa</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>sofa-rpc-all</artifactId>
            <version>${sofa.rpc.version}</version>
        </dependency>
  1. soul-examples-sofa需要引入如下依赖
   <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-client-sofa</artifactId>
            <version>${soul.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>guava</artifactId>
                    <groupId>com.google.guava</groupId>
                </exclusion>
            </exclusions>
        </dependency>
  1. soul-examples-sofa配置文件需要配置注册中心地址,与soul-admin中配置地址一样
com:
  alipay:
    sofa:
      rpc:
        registry-address: zookeeper://127.0.0.1:2181
        bolt-port: 8888

启动

启动zookeeper,然后分别启动soul-admin/soul-bootstrap/soul-examples-sofa

访问

在这里插入图片描述

注册访问过程

  1. soul-examples-sofa启动时,首先向soul-admin注册自身相关路由信息
  2. 接着向zookeeper服务器注册自身服务信息
  3. soul-admin接收到注册信息后保存到数据库中,并且将sofa的路由信息以及soul-admin中配置的sofa插件的zookpeer信息一并推送给soul-bootstrap
  4. soul-bootstrap接收到信息后开始构造路由映射信息,并且从zookeeper中获取示例sofa的注册服务信息,将A其保存到缓存中
  5. 当浏览器访问时soul-bootstrap时,soul-bootstrap会根据对应的路由信息,匹配到对应的服务信息,并模拟sofa的远程调用与后端服务器进行通信调用,最后将结果返回给浏览器

sofa客户端注册源码分析

  1. 包依赖分析
    soul-examples-sofa–>soul-spring-boot-starter-client-sofa–>soul-client-sofa–>soul-client-common
  2. 调用源码关键路径分析
    soul-spring-boot-starter-client-sofa中类:
    在这里插入图片描述
    sofaConfig()方法负责加载soul-examples-sofa配置文件关于soul-admin注册url等相关信息,该配置文件如下:
    在这里插入图片描述
    加载完成后,会注入到如下方法中:
    在这里插入图片描述
    该方法为关键方法,该方法返回的对象在soul-cient-sofa依赖包中,如下在这里插入图片描述
    该类继承了spring的BeanPostProcessor后置处理,spring启动时,初始化完所有bean后,会执行如下方法:
    在这里插入图片描述
    该方法使用了线程池异步处理注册过程,真正的处理过程如下:
    在这里插入图片描述
    上图中红色地方是最核心方法,会扫描带有注解的SoulSofaClient方法,之后发起真正的注册,注册方法依赖soul-client-common包中的该类
    在这里插入图片描述
    该类只有一个doRegister方法,只是将之前拼装的相关配置信息传递给soul-admin,该类方法是所有插件客户端的通用注册方法,至此客户端的注册方法到此分析完成

猜你喜欢

转载自blog.csdn.net/yilongzhetian/article/details/112797868