美文网首页
SOFARPC 源码分析1 - 最简使用姿势

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

作者: 原水寒 | 来源:发表于2018-11-18 11:44 被阅读110次

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

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

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

SOFARPC 坐标:

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

Curator 坐标:(zookeeper 客户端)

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.0.1</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("zookeeper") // 设置协议
                .setAddress("10.211.55.5:2181"); // 设置注册中心地址

        // 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("zookeeper") // 设置协议
                .setAddress("10.211.55.5:2181"); // 设置注册中心地址

        // 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,完成!!!代码很简单,本示例以 zookeeper 作为注册中心,通信方式使用的是 sync,由于 SOFARPC 底层通信使用的是 SOFABolt,所以支持 SOFABolt 所支持的四种通信模式。

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

相关文章

网友评论

      本文标题:SOFARPC 源码分析1 - 最简使用姿势

      本文链接:https://www.haomeiwen.com/subject/bqmdtqtx.html