当前位置: 首页 > 工具软件 > SOFARPC > 使用案例 >

sofa协议服务器,SOFARPC 源码分析1 - 最简使用姿势

辛意智
2023-12-01

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

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

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。

 类似资料: