SOFARPC的搭建(蚂蚁金服)
Posted Java程序助手
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOFARPC的搭建(蚂蚁金服)相关的知识,希望对你有一定的参考价值。
SOFARPC是SOFA中间件为我们提供的用于远程服务调用的RPC框架。
简单介绍
SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。
SOFARPC同我们之前用的dubbo类似,我们知道dubbo是阿里早期开源版本,SOFARPC暂且可以看成是dubbo的升级版本,在很多方面和dubbo还是差别不大的。
SOFARPC搭建
首先需要创建两个SOFABoot项目(创建方法在之前的文章中),一个作为服务端发布函数,另一个作为客户端接收数据。
在两个SOFABoot项目中分别引入SOFARPC和SOFARegistry所需要的依赖。
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>registry-client-all</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-rpc-all</artifactId>
<version>5.5.3</version>
</dependency>
服务端
创建测试接口和对应的接口实现类,用于将实现类中的方法发送到客户端,在客户端调用服务端的方法。
HelloService(测试接口)
public interface HelloService {
public String sayHello(String name);
}
HelloServiceImpl(接口实现类)
public class HelloServiceImpl implements HelloService {
public String sayHello(String name) {
return "hello " + name;
}
}
Server(服务端代码)
public class Server {
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(); // 发布服务
}
}
客户端
创建测试接口,在客户端调用服务端的方法。
HelloService(测试接口)
public interface HelloService {
public String sayHello(String name);
}
Client(客户端代码)
public class Client {
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();
Class test = helloService.getClass();
// 4. 进行服务调用
while (true){
System.out.println(helloService.sayHello("555"));
try{
Thread.sleep(2000);
}catch (InterruptedException e){
}
}
}
}
这样,服务端和客户端就都搭建完成了。
SOFARPC测试
首先,打开SOFARegistry注册中心。
运行服务端Server类中的main()函数,可在控制台看到如下输出:
运行客户端Client类中的main()函数,可在控制台看到如下输出:
通过控制台可以看到,客户端已经成功的获取到了服务端发布的方法,如此通过SOFARPC远程调用就成功了。
常见问题
以上是关于SOFARPC的搭建(蚂蚁金服)的主要内容,如果未能解决你的问题,请参考以下文章
蚂蚁金服开源 Java RPC 框架-SOFARPC v5.7.0 发布
开源 | SOFARPC 集成 ZooKeeper 注册中心