跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 怎么就想不开了,自己手撸了 RPC 框架
未分類
9 5 月 2020

怎么就想不开了,自己手撸了 RPC 框架

怎么就想不开了,自己手撸了 RPC 框架

資深大佬 : pwh19920920 4

项目真正启动是在 19 年 5 月吧,因为懒,中间停了起码半年,最近又开始拾了起来,撸起袖子接着干,终于在这几天撸出来了,别说了,我又要去养养身子了。。。。

项目名字 Xmutca-rpc

项目地址: https://github.com/pwh19920920/xmutca-rpc

Xmutca-rpc 是一个基于 netty 开发的分布式服务框架,提供稳定高性能的 RPC 远程服务调用功能,支持注册中心,服务治理,负载均衡等特性,开箱即用。

模块介绍

  • 1.xmutca-rpc-core rpc 核心模块
  • 2.xmutca-rpc-example rpc 示例
  • 3.xmutca-rpc-local 本地容器实现
  • 4.xmutca-rpc-registry-nacos nacos 注册中心
  • 5.xmutca-rpc-spring spring 容器实现

实现功能

  • 1.核心实现:SPI 扩展,支持动态加载拓展实现,具体可以看实现类 ExtensionLoader
  • 2.负载均衡:现在已支持轮训负载,随机负载,也可自定义
  • 3.集群容错:FailFast 快速失败、FailOver 故障切换,FailSafe 故障安全, FailBack 失败恢复,Broadcast 广播调用
  • 4.注册发现:目前支持接入 nacos
  • 5.容器支持:支持本地 java 容器,支持 spring 容器
  • 6.注解拓展:支持注解加载提供者,注解获取远程 rpc 对象
  • 7.序列方式:支持 fastJson, Kryo, protostuff 序列化,默认走 protostuff 序列化
  • 8.极速拓展:允许加载自定义的过滤器,自定义容器,自定义注册中心等等。

快速开始

1. maven 配置 <dependency>     <groupId>com.xmutca</groupId>     <artifactId>xmutca-rpc-core</artifactId>     <version>0.0.1-SNAPSHOT </version> </dependency>  <dependency>     <groupId>com.xmutca</groupId>     <artifactId>xmutca-rpc-spring</artifactId>     <version>0.0.1-SNAPSHOT </version> </dependency>  <dependency>     <groupId>com.xmutca</groupId>     <artifactId>xmutca-rpc-registry-nacos</artifactId>     <version>0.0.1-SNAPSHOT</version> </dependency>  2. 定义接口 public interface HelloService {      /**      * test      * @param msg      * @return      */     String sayHello(String msg); }  3. 提供者实现接口 @Component @Provider(interfaceClass = HelloService.class) public class HelloServiceImpl implements HelloService {      @Autowired     private TestService testService;      @Override     public String sayHello(String msg) {         return testService.test() + " -> " + msg;     } }  4. 提供者配置 rpc:   registry: nacos://localhost:8848 # 注册中心地址   provider: # 提供者配置     corePoolSize: 60       # 核心线程数     maxPoolSize: 300       # 最大线程数     port: 8886             # 提供者端口     scanPackage: com.xmutca.rpc.provider.facade   # 扫描提供者包路径     metadata:              # 服务元数据       group: "order"       # 服务分组       serviceName: "test"  # 服务名称       version: "v1.0.0"    # 服务版本   5. 启动提供者 @EnableXmutcaRpc @SpringBootApplication public class XmutcaSpringProviderApplication {      public static void main(String[] args) {         SpringApplication.run(XmutcaSpringProviderApplication.class, args);     } }  6. 消费者引用 @RestController @RequestMapping public class ControllerTest {      @Reference(serviceName = "test", group = "order", interfaceClass = HelloService.class)     private HelloService helloService;      @RequestMapping("/test")     public Object test() {         return helloService.sayHello("test");     } }  7. 消费者配置 rpc:   registry: nacos://localhost:8848   consumer:     - timeout: 1000               # 超时配置       metadata:         group: "order"            # 服务分组         serviceName: "test"       # 服务名称         version: "v1.0.0"         # 服务版本  8. 启动消费者 @EnableXmutcaRpc @SpringBootApplication public class XmutcaSpringConsumerApplication {      public static void main(String[] args) {         SpringApplication.run(XmutcaSpringConsumerApplication.class, args);     } } 

作者题外话

此项目欢迎各位 v 友试用,互相学习,如有 bug 及时反馈,谢谢。

大佬有話說 (7)

  • 資深大佬 : zzmFina

    居然没人回复

  • 資深大佬 : Cmxxx

    好厉害

  • 資深大佬 : pomelotea2009

    为主的毅力点赞

  • 資深大佬 : labulaka521

    赞

  • 資深大佬 : OctopusGO

    厉害,学习了

  • 資深大佬 : ala2008

    可以写个教程,菜鸟搞不定啊

  • 主 資深大佬 : pwh19920920

    @ala2008 小哥你说的教程是这个 rpc 框架的实现原理吗?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具