1 Star 0 Fork 0

alijian / rsf

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README

#RSF

  一个高可用、高性能、轻量级的分布式服务框架。支持容灾、负载均衡、集群。一个典型的应用场景是,将同一个服务部署在多个Server上提供 request、response 消息通知。

  使用RSF可以点对点调用,也可以分布式调用。部署方式上:可以搭配注册中心,也可以独立使用。


工作原理

工作原理


RSF架构设计

RSF架构


RoadMap

RoadMap


介绍

特色功能:
  1. 支持服务热插拔:支持服务动态发布、动态卸载
  2. 支持服务分组:支持服务分组、分版本
  3. 支持多种方式调用:同步、异步、回调、接口代理
  4. 支持多种模式调用:RPC模式调用、Message模式调用   RPC 模式: 远程调用会等待并返回执行结果。适用于一般方法。遇到耗时方法会有调用超时风险   Message 模式: 远程调用当作消息投递到远程机器,不会产生等待,可以看作是一个简单的 MQ。适合于繁重的耗时方法
  5. 支持点对点调用。RSF的远程调用可以点对点定向调用,也可以集群大规模部署集中提供同一个服务
  6. 支持虚拟机房。通过配置虚拟机房策略可以降低跨机房远程调用
  7. 支持泛化调用。简单的理解,泛化调用就是不依赖二方包,通过传入方法名,方法签名和参数值,就可以调用服务
  8. 支持隐式传参。可以理解隐式传参的含义为,不需要在接口上明确声明参数。在发起调用的时传递到远端
  9. 内置 Telnet 控制台,可以命令行方式直接管理机器
  10. 支持 offline/online 动作
扩展性:
  1. 支持第三方集成,可以独立使用,也可以和 Spring、Jfinal等第三方框架整合使用
  2. 支持拦截器RsfFilter,开发者可以通过扩展 Filter 实现更多需求
  3. 支持自定义序列化。默认使用内置 Hessian 4.0.7 序列化库
  4. 支持Telnet控制台自定义指令。通过扩展控制台指令,可以发挥更大想象空间
稳定性(参数可配置):
  1. 最大发并发请求数配置(默认:200)
  2. 最大发起请求超限制策略设置: A-等待1秒重试、B-抛异常(默认:B-抛异常)
  3. Netty线程数配置(默认: 监听请求线程数: 1,IO线程数: 8)
  4. 提供者调用队列容量配置(默认: 队列容量: 4096)
  5. Work线程数配置(默认: 处理调用线程数: 4)
  6. 请求超时设置。支持服务提供者,服务订阅者独立配置各自的超时参数(默认 6000毫秒)
  7. 双向通信。RSF会合理利用Socket连接,双向通信是指当A机器发起远程调用请求之后,RSF会建立长连接   -- 如果B机器有调用A机器的需求则直接使用这个连接不会重新创建新的连接,双向通信会大量降低集群间的连接数
  8. 支持优雅停机。应用停机,Center会自动通知整个集群。即便所有 Center 离线,RSF也会正确处理失效地址
健壮性:
  1. 每小时地址本动态备份。当所有注册中心离线,即便在没有注册中心的情况下应用程序重启,也不会导致服务找不到提供者的情况
  2. 当某个地址失效之后,RSF会冻结一段时间,在这段时间内不会有请求发往这个地址
  3. 支持请求、响应分别使用不同序列化规则
可维护性:
  1. 支持QoS流量控制。流控可以精确到:接口、方法、地址
  2. 支持动态路由脚本。路由可以精确到:接口、方法、参数
  3. 通过路由脚本可以轻松实现接口灰度发布
安全性:
  1. 支持发布服务授权
  2. 支持服务订阅授权
  3. 支持匿名应用

Demo

<!-- 引入依赖 -->
<dependency>
	<groupId>net.hasor</groupId>
	<artifactId>rsf-core</artifactId>
	<version>1.0.0</version>
</dependency>

<!-- 配置文件 -->
<!-- server-config.xml and client-config.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <RSF_CENTER_SERVERS>rsf://<CenterHostAddress>:2180</RSF_CENTER_SERVERS>
    </hasor.environmentVar>
</config>

// 服务接口
public interface EchoService {
    public String sayHello(String echo) throws InterruptedException;
}

// 服务接口实现
public class EchoServiceImpl implements EchoService {
    public String sayHello(String echo) throws InterruptedException {
        return "you say " + echo;
    }
}

// 服务提供者
Hasor.createAppContext("server-config.xml", new RsfModule() {
    public void loadModule(RsfApiBinder apiBinder) throws Throwable {
		EchoService echoService = new EchoServiceImpl();
		apiBinder.rsfService(EchoService.class).toInstance(echoService).register();
	}
});

// 服务消费者
AppContext clientContext = Hasor.createAppContext("client-config.xml", new RsfModule() {
    public void loadModule(RsfApiBinder apiBinder) throws Throwable {
		apiBinder.rsfService(EchoService.class).register();
	}
});
RsfClient client = clientContext.getInstance(RsfClient.class);
EchoService echoService = client.wrapper(EchoService.class);
String echoMessage = echoService.sayHello("Hello Word");
System.out.println(echoMessage);

未来版本计划支持的项目(粗略计划)

  • 1.2.0~1 版本计划,RSF 网络层改造,支持不同协议,尝试支持 Hprose

相关连接

正式发布

  • mvn release:prepare -P release
  • mvn deploy -P release
  • ./build.sh && docker build -t debug . && docker run debug

Empty file

About

一个轻量化的分布式服务框架。典型的应用场景是,将同一个服务部署在多个Server上提供分布式的 request、response 消息通知。 expand collapse
Java
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
Java
1
https://gitee.com/alijian/rsf.git
git@gitee.com:alijian/rsf.git
alijian
rsf
rsf
master

Search