内容简介:SOFARPC 最早源于阿里内部的 HSF,是近期蚂蚁金服开源的一个高可扩展性、高性能、生产级的 Java RPC 框架。SOFA-RPC 在蚂蚁金服已经历了十多年的发展,致力于简化应用之间的 RPC 调用。为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFA-RPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等。同时围绕 SOFA-RPC 框架及其周边组件提供丰富的微服务治理方案。a. 服务发布
SOFARPC 最早源于阿里内部的 HSF,是近期蚂蚁金服开源的一个高可扩展性、高性能、生产级的 Java RPC 框架。SOFA-RPC 在蚂蚁金服已经历了十多年的发展,致力于简化应用之间的 RPC 调用。为应用提供方便透明、稳定高效的点对点远程服务调用方案。
为了用户和开发者方便的进行功能扩展,SOFA-RPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等。同时围绕 SOFA-RPC 框架及其周边组件提供丰富的微服务治理方案。
正文
1. 功能特性
- 透明化、高性能的远程服务调用
- 支持多种服务路由及负载均衡策略
- 支持多种注册中心的集成
- 支持 bolt、rest、dubbo 等多种通信协议
- 支持同步、单向、回调、泛化等多种调用方式
- 支持集群容错、服务预热、自动故障隔离
- 强大的扩展功能,可以按需扩展各个功能组件
2. 实现原理
a. 服务发布
当一个 SOFARPC 的应用启动的时候,如果发现当前应用需要发布 RPC 服务的话,那么 SOFARPC 会将这些服务注册到服务注册中心上。如图中 Service 指向 Registry。
b. 服务订阅
当引用这个服务的 SOFARPC 应用启动时,会从服务注册中心订阅到相应服务的元数据信息。服务注册中心收到订阅请求后,会将发布方的元数据列表实时推送给服务引用方。如图中 Registry 指向 Reference。
c. 服务调用
当服务引用方拿到地址以后,就可以从中选取地址发起调用了。如图中 Reference 指向 Service。
3. 快速开始
3.1. 引入sofa-rpc依赖
<dependencies> <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>sofa-rpc-all</artifactId> <version>5.3.1</version> </dependency> </dependencies> 复制代码
3.2. 编写服务接口和服务实现类
HelloService.java
public interface HelloService { String sayHello(String string); } 复制代码
HelloServiceImpl.java
public class HelloServiceImpl implements HelloService { @Override public String sayHello(String string) { System.out.println("Server receive: " + string); return "hello " + string + " !"; } } 复制代码
3.3. 编写服务提供者启动类
QuickStartServer.java
public class QuickStartServer { public static void main(String[] args) { ServerConfig serverConfig = new ServerConfig() .setProtocol("bolt") // 设置一个协议,默认bolt .setPort(9696) // 设置一个端口,默认12200 .setDaemon(false); // 非守护线程 ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>() .setInterfaceId(HelloService.class.getName()) // 指定接口 .setRef(new HelloServiceImpl()) // 指定实现 .setServer(serverConfig); // 指定服务端 providerConfig.export(); // 发布服务 } } 复制代码
运行服务端提供方,日志输出如下:
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. 复制代码
3.4. 编写服务消费者启动类
QuickStartClient.java
public class QuickStartClient { public static void main(String[] args) { ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>() .setInterfaceId(HelloService.class.getName()) // 指定接口 .setProtocol("bolt") // 指定协议 .setDirectUrl("bolt://127.0.0.1:9696"); // 指定直连地址 HelloService helloService = consumerConfig.refer(); while (true) { System.out.println(helloService.sayHello("world")); try { Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); } } } } 复制代码
运行服务端消费方,调用服务提供方:
- 服务提供方日志输出如下:
Server receive: world Server receive: world Server receive: world Server receive: world 复制代码
- 服务消费方日志输出如下:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. hello world ! hello world ! hello world ! hello world ! 复制代码
小结
这是一个快速入门的例子!
可以发现,在使用上,SOFA-RPC 与淘宝的 Dubbo,微博的 Motan 并无太大的区别。Dubbo 作为整套服务治理而存在,而 SOFA-RPC 只是一款轻量级的 RPC 框架,基于 HSF 框架改造,提供更加完善、强大的、多样化 RPC 编程 API。
欢迎关注技术公众号: 零壹技术栈
本帐号将持续分享后端技术干货,包括虚拟机基础,多线程编程,高性能框架,异步、缓存和消息中间件,分布式和微服务,架构学习和进阶等学习资料和文章。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 蚂蚁通信框架实践
- 蚂蚁金服研发框架日志隔离解析 | SOFABoot 框架剖析
- SOFABoot 2.4.2 发布,蚂蚁金服开源研发框架
- SOFABoot 2.4.3 发布,蚂蚁金服开源研发框架
- SOFABoot 2.6.1 发布,蚂蚁金服开源研发框架
- SOFABoot 2.6.1 发布,蚂蚁金服开源研发框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Trading and Exchanges
Larry Harris / Oxford University Press, USA / 2002-10-24 / USD 95.00
This book is about trading, the people who trade securities and contracts, the marketplaces where they trade, and the rules that govern it. Readers will learn about investors, brokers, dealers, arbit......一起来看看 《Trading and Exchanges》 这本书的介绍吧!