全部产品

发布 SOFARPC 服务

更新时间:2021-06-18 15:49:06

RPC 是日常开发中最常用的中间件,本文主要说明如何发布一个 RPC 服务。

前置条件

发布 SOFARPC 服务

要发布一个 RPC 服务,主要步骤说明如下:

  1. app/endpoint/ 下设计接口,示例如下:

    // com.alipay.APPNAME.facade.SampleService
    public interface SampleService{
        String message();
    }
  2. 提供一个接口的实现类,示例如下:

    // com.alipay.APPNAME.service.SampleServiceImpl
    public class SampleServiceImpl implements SampleService{
       @Override
       public String message(){
            return "Hello, Service SOFABootRPC!";
       }
    }
  3. 在接口所在模块中,通过 resources/META-INF 下的 xml 文件,将接口实现类配置为一个 Java bean。

    <bean id="sampleServiceBean" class="com.alipay.APPNAME.service.SampleServiceImpl"/>
  4. 在接口所在模块中,通过 resources/META-INF 下的 xml 文件,发布 RPC 服务。根据接口实现类的个数,可以分为下述 2 种:

    • 单接口单实现,示例如下:

      <!-- 服务 -->
      <sofa:service ref="sampleServiceBean" interface="com.alipay.APPNAME.facade.SampleService">
      <sofa:binding.bolt/>
      </sofa:service>
    • 单接口多实现,示例如下:

      <!-- 服务一 -->
      <sofa:service ref="sampleServiceBean1" interface="com.alipay.APPNAME.facade.SampleService"unique-id="service1">
      <sofa:binding.bolt/>
      </sofa:service>
      
      <!-- 服务二 -->
      <sofa:service ref="sampleServiceBean2" interface="com.alipay.APPNAME.facade.SampleService"unique-id="service2">
      <sofa:binding.bolt/>
      </sofa:service>
      说明

      • 服务提供方定义服务 <sofa:service>,进行服务发布;服务消费方定义服务引用 <sofa:reference>,进行服务引用。任何一个 SOFA 框架应用节点都可以同时发布服务和引用其它节点的服务。

      • RPC 服务提供方通过服务 <sofa:service> 来定义,主要属性有 interfaceunique-idref

        • interface:该属性用于确定一个服务,属性值为:命名空间包名 + Java 接口名。

        • unique-id:如果同一个接口有两个不同的实现,而这两个不同的实现都需要发布成 SOFA 的 RPC 服务,则可以在发布服务的时候加上一个 unique-id 属性来进行区分。

        • ref:该属性用于指定服务实现所对应的 Spring Bean,通过 Bean ID 和服务实现类进行关联。

本地运行

  1. 在工程的根目录下执行 mvn clean install 命令,会在 target 目录下生成一个可执行的 Fat JAR 文件,例如:APPNAME-service-1.0-SNAPSHOT-executable.jar

  2. 通过以下任一方法执行 JAR 文件,如果没有错误日志输出,则表示 sofaboot-rpc-server 工程启动成功。

    • 在命令行中执行 java -jar APPNAME-service-1.0-SNAPSHOT-executable.jar 命令。

    • 在本地 IDE 中直接运行 main 函数。

云端运行

SOFARPC 在本地只能通过直连方式进行体验。只有在云端发布成功后,通过 SOFAStack 控制台,才能进行服务管控和治理。具体云端发布步骤,请参考下述信息:

  • 对于应用的整体发布流程,建议参考 技术栈使用指南 中的 技术栈与应用发布流程

  • 应用的详细发布步骤,建议根据发布方式,参考下述文档:

    • 经典应用服务之 快速入门

    • 容器应用服务之 快速入门

      说明

      云端发布时,请务必在 application.properties 中配置以下属性:

      • run.mode=NORMAL

      • com.alipay.env=shared

      • com.alipay.instanceid=

      • com.antcloud.antvip.endpoint=

      • com.antcloud.mw.access=

      • com.antcloud.mw.secret=

      运行模式和运行环境的值为默认固定值。上述参数的具体含义请参见 引入 SOFA 中间件 > properties 配置项

日志查看

  1. 查看本地工程 RPC 发布服务启动日志 logs/rpc/common-default.log,如出现类似以下内容,说明 RPC 服务端成功启动:

    2016-12-1715:16:44,466 INFO  main                             - sofa rpc run.mode = DEV
    2016-12-1715:16:49,479 INFO  main                             - PID:42843 sofa rpc starting!
  2. 查看日志 logs/rpc/rpc-registry.log,内容参考如下:

    2016-12-1715:17:07,764 INFO  main                             RPC-REGISTRY -发布 RPC 服务:服务名[com.alipay.APPNAME.facade.SampleService:1.0@DEFAULT]
  3. 查看错误日志 logs/rpc/common-error.log,如果没有任何错误日志输出且应用启动正常,说明我们成功发布了一个 RPC 服务。

关于日志的更多详情,请参见 日志说明