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

文章目录

  • 配置
  • 启动
  • 访问
  • 注册访问过程
  • sofa客户端注册源码分析

配置

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

  1. soul-admin开启sofa插件
    soul源码学习(四)-sofa示例_第1张图片
  2. 由于sofa与dubbo类似,都需要注册中心,因此也需要在soul-admin配置sofa的注册中心地址,使用默认的zookepper地址即可:
  3. soul源码学习(四)-sofa示例_第2张图片
  4. 配置soul-bootstrap网关引入sofa插件依赖

            org.dromara
            soul-spring-boot-starter-plugin-sofa
            ${project.version}
        

        
            com.alipay.sofa
            sofa-rpc-all
            ${sofa.rpc.version}
        
  1. soul-examples-sofa需要引入如下依赖
   
            org.dromara
            soul-spring-boot-starter-client-sofa
            ${soul.version}
            
                
                    guava
                    com.google.guava
                
            
        
  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

访问

soul源码学习(四)-sofa示例_第3张图片

注册访问过程

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

你可能感兴趣的:(soul源码分析)