{"id":15045033,"url":"https://github.com/jd-opensource/joyrpc","last_synced_at":"2025-04-04T08:10:07.373Z","repository":{"id":37120475,"uuid":"208015762","full_name":"jd-opensource/joyrpc","owner":"jd-opensource","description":"high-performance, high-extensibility Java rpc framework.","archived":false,"fork":false,"pushed_at":"2024-04-06T15:42:35.000Z","size":8329,"stargazers_count":466,"open_issues_count":5,"forks_count":184,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-03-28T07:09:34.753Z","etag":null,"topics":["consumer-provider","distributed","dubbo","grpc","high-performance","json-rpc","microservice","plugin","rpc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jd-opensource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-09-12T09:39:55.000Z","updated_at":"2025-02-24T12:16:57.000Z","dependencies_parsed_at":"2024-04-19T08:52:47.465Z","dependency_job_id":"4ef225d0-7eee-4458-9f6f-9becff9cd371","html_url":"https://github.com/jd-opensource/joyrpc","commit_stats":null,"previous_names":["jd-opensource/joyrpc","joyrpc/joyrpc"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjoyrpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjoyrpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjoyrpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjoyrpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jd-opensource","download_url":"https://codeload.github.com/jd-opensource/joyrpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142074,"owners_count":20890653,"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":["consumer-provider","distributed","dubbo","grpc","high-performance","json-rpc","microservice","plugin","rpc"],"created_at":"2024-09-24T20:51:22.215Z","updated_at":"2025-04-04T08:10:07.351Z","avatar_url":"https://github.com/jd-opensource.png","language":"Java","readme":"JOYRPC\n===\n[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/joyrpc/joyrpc/releases)\n![GitHub](https://img.shields.io/github/license/joyrpc/joyrpc)\n\n   JOYRPC是一款基于 Java 实现的 RPC 服务框架，是在总结内部服务框架经验的基础上，完全重新设计、支持全异步、微内核和插件化。\n   \n   ![JOYRPC Architecture](./docs/cn/architecture.jpg)\n## 主要特性\n- 微内核: 全插件化的RPC框架，我们只是补充了默认实现，所有的核心模块都支持用户自定义。\n- 纯异步: 接口完全支持CompletableFuture类型返回值，Provider端业务逻辑可以异步执行，提升服务端吞吐量与调用端吞吐量，Filter调用链全异步化。\n- 协商机制: 在连接建立成功后，Consumer和Provider进行协商逻辑，确认协议版本、序列化可用列表、压缩算法列表，保障同协议中，多版本的编解码、序列化、压缩等插件实现的兼容性。\n- 多注册中心: Provider端支持多注册中心同时注册,注册中心插件化，默认提供memory注册中心实现，zk、etcd注册中心实现，使用方可自行扩展。\n- 插件化多协议: 提供协议插件，默认提供joyrpc协议、http协议、grpc协议(支持与原生grpc相互调用，不用修改java接口，就可以支持grpc调用，（暂不支持grpc的流式调用)，使用方可自行扩展。\n- 优雅上下线: Provider发布，将启动与注册逻辑完全分开，先启动，后注册，同时支持接口预热，做到优雅上线。Provider下线，会给Consumer端发送下线通知，后续不会接收到请求，并在处理剩余请求之后关闭端口，做到优雅下线，Consumer端无感知。\n- 插件化编解码、序列化、压缩: 解码、序列化、压缩算法全部插件化可扩展，同时使用方可自定义序列化, joyrpc协商机制可保证兼容性。默认hessian协议序列化，兼容性更好。 提供了性能更高的protostuff协议序列化，但对接口设计有要求。 \n- 预热权重: Provider端支持接口预热，通过自主实现并配置预热插件，Provider启动时，触发预热插件，调用预热逻辑。Consumer端支持预热权重，通过配置，在新Provder节点启动时，权重逐渐增大，流量也会逐渐增大，保证Consumer端的服务调用可用率\n- 增强重试: 更加合理的重试逻辑，做到安全重试，支持重试节点筛选插件，支持业务分组重试。更准确的超时时间，统一的超时时间，每次重试后超时时间递减。\n- 自适应负载均衡: Consumer可配置自适应负载均衡，根据Provider节点的TP指标、异常数进行自适应负载控制，保证Provider服务节点与Consumer端的服务调用可用率的稳定性。\n- 序列化安全：默认采用白名单方式，增强序列化安全\n- 分布式事务：集成了Seata分布式事务插件\n- 云原生：支持以应用的服务名称来进行注册，而不是以接口注册服务\n\n## 快速开始\n查看[快速开始](./docs/cn/quickstart.md)。\n\n## 配置参考手册\n查看[配置参考手册](./docs/cn/config.md)。\n\n## 使用示例\n查看[使用示例](./docs/cn/example.md)。\n\n## 常见问题\n查看[常见问题](./docs/cn/qa.md)。\n\n## 发布历史\n查看[发布历史](./RELEASE.md)。","funding_links":[],"categories":["开发框架"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjd-opensource%2Fjoyrpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjd-opensource%2Fjoyrpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjd-opensource%2Fjoyrpc/lists"}