{"id":18004628,"url":"https://github.com/zycgit/rsf","last_synced_at":"2025-03-26T10:31:30.776Z","repository":{"id":201650782,"uuid":"56126586","full_name":"zycgit/rsf","owner":"zycgit","description":"已作为 Hasor 的子项目，迁移到：http://git.oschina.net/zycgit/hasor","archived":false,"fork":false,"pushed_at":"2017-05-15T09:26:03.000Z","size":5451,"stargazers_count":77,"open_issues_count":1,"forks_count":35,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-21T15:12:22.234Z","etag":null,"topics":["cluster","distributed-systems","dubbo","dubbox","hasor","high-performance","hprose","java","jfinal","nutz","rpc","rpc-framework","service-consumer","service-discovery","service-oriented","service-provider","service-registration","service-registry","soa","spring"],"latest_commit_sha":null,"homepage":"http://git.oschina.net/zycgit/hasor","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zycgit.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-04-13T06:23:53.000Z","updated_at":"2024-03-31T14:17:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"9dda6944-3c89-4c0c-9dc2-79d984e0342f","html_url":"https://github.com/zycgit/rsf","commit_stats":null,"previous_names":["zycgit/rsf"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zycgit%2Frsf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zycgit%2Frsf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zycgit%2Frsf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zycgit%2Frsf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zycgit","download_url":"https://codeload.github.com/zycgit/rsf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245636466,"owners_count":20647973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cluster","distributed-systems","dubbo","dubbox","hasor","high-performance","hprose","java","jfinal","nutz","rpc","rpc-framework","service-consumer","service-discovery","service-oriented","service-provider","service-registration","service-registry","soa","spring"],"created_at":"2024-10-30T00:15:07.285Z","updated_at":"2025-03-26T10:31:30.293Z","avatar_url":"https://github.com/zycgit.png","language":"Java","readme":"\n# 请注意：RSF 项目回归 Hasor。为了方便后续开发维护，此代码库暂停维护。请您更新 Fork 和 Star 到下面两个地址：\n## 源码和历史版本已迁移到：http://git.oschina.net/zycgit/hasor or https://github.com/zycgit/hasor\n----------\n\n# RSF\n\n\u0026emsp;\u0026emsp;一个高可用、高性能、轻量级的分布式服务框架。支持容灾、负载均衡、集群。一个典型的应用场景是，将同一个服务部署在多个`Server`上提供 request、response 消息通知。\n\n\u0026emsp;\u0026emsp;使用RSF可以点对点调用，也可以分布式调用。部署方式上：可以搭配注册中心，也可以独立使用。\n\n----------\n### 工作原理\n![工作原理](http://project.hasor.net/resources/224933_BV6Q_1166271.jpg)\n\n----------\n### RSF架构设计\n![RSF架构](http://project.hasor.net/resources/002011_mz60_1166271.jpg)\n\n----------\n### RoadMap\n![RoadMap](http://project.hasor.net/resources/120213_9S4m_1166271.jpg)\n\n----------\n### 介绍\n##### 特色功能:\n01. 支持服务热插拔：支持服务动态发布、动态卸载\n02. 支持服务分组：支持服务分组、分版本\n03. 支持多种方式调用：同步、异步、回调、接口代理\n04. 支持多种模式调用：RPC模式调用、Message模式调用\n        \u0026emsp;\u0026emsp;RPC     模式: 远程调用会等待并返回执行结果。适用于一般方法。遇到耗时方法会有调用超时风险\n        \u0026emsp;\u0026emsp;Message 模式: 远程调用当作消息投递到远程机器，不会产生等待，可以看作是一个简单的 MQ。适合于繁重的耗时方法\n05. 支持点对点调用。RSF的远程调用可以点对点定向调用，也可以集群大规模部署集中提供同一个服务\n06. 支持虚拟机房。通过配置虚拟机房策略可以降低跨机房远程调用\n07. 支持泛化调用。简单的理解，泛化调用就是不依赖二方包，通过传入方法名，方法签名和参数值，就可以调用服务\n08. 支持隐式传参。可以理解隐式传参的含义为，不需要在接口上明确声明参数。在发起调用的时传递到远端\n09. 内置 Telnet 控制台，可以命令行方式直接管理机器\n10. 支持 offline/online 动作\n\n##### 扩展性:\n01. 支持第三方集成，可以独立使用,也可以和 Spring、Jfinal等第三方框架整合使用\n02. 支持拦截器RsfFilter，开发者可以通过扩展 Filter 实现更多需求\n03. 支持自定义序列化。默认使用内置 Hessian 4.0.7 序列化库\n04. 支持Telnet控制台自定义指令。通过扩展控制台指令，可以发挥更大想象空间\n\n##### 稳定性(参数可配置):\n01. 最大发并发请求数配置（默认:200）\n02. 最大发起请求超限制策略设置: A-等待1秒重试、B-抛异常（默认:B-抛异常）\n03. Netty线程数配置（默认: 监听请求线程数: 1，IO线程数: 8）\n04. 提供者调用队列容量配置（默认: 队列容量: 4096）\n05. Work线程数配置（默认: 处理调用线程数: 4）\n06. 请求超时设置。支持服务提供者，服务订阅者独立配置各自的超时参数（默认 6000毫秒）\n07. 双向通信。RSF会合理利用Socket连接，双向通信是指当A机器发起远程调用请求之后，RSF会建立长连接\n        \u0026emsp;\u0026emsp;-- 如果B机器有调用A机器的需求则直接使用这个连接不会重新创建新的连接，双向通信会大量降低集群间的连接数\n08. 支持优雅停机。应用停机，Center会自动通知整个集群。即便所有 Center 离线，RSF也会正确处理失效地址\n\n##### 健壮性:\n01. 每小时地址本动态备份。当所有注册中心离线，即便在没有注册中心的情况下应用程序重启，也不会导致服务找不到提供者的情况\n02. 当某个地址失效之后，RSF会冻结一段时间，在这段时间内不会有请求发往这个地址\n03. 支持请求、响应分别使用不同序列化规则\n\n##### 可维护性:\n01. 支持QoS流量控制。流控可以精确到：接口、方法、地址\n02. 支持动态路由脚本。路由可以精确到：接口、方法、参数\n03. 通过路由脚本可以轻松实现接口灰度发布\n\n##### 安全性:\n01. 支持发布服务授权\n02. 支持服务订阅授权\n03. 支持匿名应用\n\n----------\n### Demo\n\t\u003c!-- 引入依赖 --\u003e\n\t\u003cdependency\u003e\n\t\t\u003cgroupId\u003enet.hasor\u003c/groupId\u003e\n\t\t\u003cartifactId\u003ehasor-rsf\u003c/artifactId\u003e\n\t\t\u003cversion\u003e1.1.0\u003c/version\u003e\n\t\u003c/dependency\u003e\n\n\t\u003c!-- 配置文件 --\u003e\n\t\u003c!-- server-config.xml and client-config.xml --\u003e\n\t\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n    \u003cconfig xmlns=\"http://project.hasor.net/hasor/schema/main\"\u003e\n        \u003chasor.environmentVar\u003e\n            \u003cRSF_CENTER_SERVERS\u003ersf://\u003cCenterHostAddress\u003e:2180\u003c/RSF_CENTER_SERVERS\u003e\n        \u003c/hasor.environmentVar\u003e\n    \u003c/config\u003e\n\n    // 服务接口\n    public interface EchoService {\n        public String sayHello(String echo) throws InterruptedException;\n    }\n    \n    // 服务接口实现\n    public class EchoServiceImpl implements EchoService {\n        public String sayHello(String echo) throws InterruptedException {\n            return \"you say \" + echo;\n        }\n    }\n    \n\t// 服务提供者\n\tHasor.createAppContext(\"server-config.xml\", new RsfModule() {\n        public void loadModule(RsfApiBinder apiBinder) throws Throwable {\n\t\t\tEchoService echoService = new EchoServiceImpl();\n\t\t\tapiBinder.rsfService(EchoService.class).toInstance(echoService).register();\n\t\t}\n\t});\n\n\t// 服务消费者\n\tAppContext clientContext = Hasor.createAppContext(\"client-config.xml\", new RsfModule() {\n        public void loadModule(RsfApiBinder apiBinder) throws Throwable {\n\t\t\tapiBinder.rsfService(EchoService.class).register();\n\t\t}\n\t});\n\tRsfClient client = clientContext.getInstance(RsfClient.class);\n\tEchoService echoService = client.wrapper(EchoService.class);\n\tString echoMessage = echoService.sayHello(\"Hello Word\");\n\tSystem.out.println(echoMessage);\n\n----------\n### 未来版本计划支持的项目（粗略计划）\n* 细节优化\n- 整个 static-config.xml 的配置都可以被主配置文件进行覆盖。\n- RsfCenter 数据订阅，方便不同版本Center之间数据同步。为Hasor版本升级可能存在的不兼容性考虑。\n\n----------\n### 相关连接\n\n* WebSite：[http://www.hasor.net](http://www.hasor.net)\n* Docs : [http://hasor-guide.mydoc.io/](http://hasor-guide.mydoc.io/)\n* Issues：[http://git.oschina.net/teams/hasor/issues](http://git.oschina.net/teams/hasor/issues)\n* Team：[http://team.oschina.net/hasor](http://team.oschina.net/hasor)\n* Demo工程：[http://git.oschina.net/zycgit/hasor-example](http://git.oschina.net/zycgit/hasor-example)\n* QQ群：193943114\n* [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.hasor/hasor-rsf/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.hasor/hasor-rsf)\n[![Build Status](https://travis-ci.org/zycgit/rsf.svg?branch=master)](https://travis-ci.org/zycgit/rsf)\n[![Build Status](https://travis-ci.org/zycgit/rsf.svg?branch=dev)](https://travis-ci.org/zycgit/rsf)\n\n### 正式发布\n\n* mvn release:prepare -P release\n* ./deploy.sh -P release\n* ./build.sh \u0026\u0026 docker build -t debug . \u0026\u0026 docker run debug","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzycgit%2Frsf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzycgit%2Frsf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzycgit%2Frsf/lists"}