SOFARPC 源码分析1 - 最简使用姿势

SOFARPC 是一个高性能、高可扩展、生产级别的 RPC 框架,由蚂蚁金服开源。

重要的三个学习资料:
github:https://github.com/alipay/sofa-rpc
官方文档:http://www.sofastack.tech/sofa-rpc/docs/Home
金融级分布式架构公众号:SOFARPCLab 组织的源码分析文章

本文会提供一个 SOFARPC 最简使用示例(使用 SOFARegistry 做注册中心),之后的源码分析都会基于该示例及其扩展进行。

启动 SOFARegistry 服务端:https://www.sofastack.tech/sofa-registry/docs/Server-QuickStart

SOFARPC 坐标:


    com.alipay.sofa
    sofa-rpc-all
    5.5.3

SOFARegistryClient 坐标:(SOFARegistry 客户端)


    com.alipay.sofa
    registry-client-all
    5.2.0

一、服务接口定义

public interface HelloService {
    String sayHello(String string);
}

接口定义由 provider 进行定义和实现,并对接口定义进行打包,consumer 需要将接口定义的 jar 包引入。

二、服务接口实现

public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String string) {
        System.out.println("Server receive: " + string);
        return "hello " + string + " !";
    }
}

三、服务端

public class QuickStartServer {
    public static void main(String[] args) {
        // 1. 注册中心配置
        RegistryConfig registryConfig = new RegistryConfig()
                .setProtocol("sofa") // 设置协议
                .setAddress("127.0.0.1:9603"); // 设置注册中心 session 地址

        // 2. 通信服务配置
        ServerConfig serverConfig = new ServerConfig()
                .setProtocol("bolt") // 设置一个协议,默认bolt
                .setPort(12200) // 设置一个端口,默认12200
                .setDaemon(false); // 非守护线程

        // 3. provider 综合配置
        ProviderConfig providerConfig = new ProviderConfig()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRef(new HelloServiceImpl()) // 指定实现
                .setRegistry(registryConfig) // 指定注册中心
                .setServer(serverConfig); // 指定服务端

        // 4. 进行服务暴露
        providerConfig.export(); // 发布服务
    }
}

四、客户端

public class QuickStartClient {
    public static void main(String[] args) {
        // 1. 注册中心配置
        RegistryConfig registryConfig = new RegistryConfig()
                .setProtocol("sofa") // 设置协议
                .setAddress("127.0.0.1:9603"); // 设置注册中心 session 地址

        // 2. consumer 综合配置
        ConsumerConfig consumerConfig = new ConsumerConfig()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRegistry(registryConfig)
                .setProtocol("bolt") // 指定协议
                .setConnectTimeout(10 * 1000);

        // 3. 构造服务引用
        HelloService helloService = consumerConfig.refer();

        // 4. 进行服务调用
        System.out.println(helloService.sayHello("world"));
    }
}

ok,完成!!!代码很简单,本示例以 SOFARegistry 作为注册中心,通信方式使用的是 sync,由于 SOFARPC 底层通信使用的是 SOFABolt,所以支持 SOFABolt 所支持的四种通信模式。

值得注意的是,SOFARPC 本身并没有与 Spring 做集成操作,如果单单使用 SOFARPC,使用 JavaConfig 的方式进行配置;如果需要与 Spring 集成,请使用 SOFABoot。

你可能感兴趣的:(SOFARPC 源码分析1 - 最简使用姿势)