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 坐标:

<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofa-rpc-all</artifactId>
    <version>5.5.3</version>
</dependency>

SOFARegistryClient 坐标:(SOFARegistry 客户端)

<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>registry-client-all</artifactId>
    <version>5.2.0</version>
</dependency>

一、服务接口定义

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<HelloService> providerConfig = new ProviderConfig<HelloService>()
                .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<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
                .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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容