# compensation **Repository Path**: imliuxi/compensation ## Basic Information - **Project Name**: compensation - **Description**: 中间件设计 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-26 - **Last Updated**: 2022-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Spring, SpringBoot ## README ## rpc-compensation-spring-boot-starter RPC补偿机制中间件设计方案 (一开始的理解错了,现在通信中使用的是http,并不是rpc,后续会修改为rpc通信) 贴上正确的理解: RPC(Remote Procedure Call Protocol)—— 远程过程调用 协议, 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议 。 **RPC协议 假定某些 传输协议 的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信 模型中,RPC跨越了 传输层 和 应用层 。**RPC使得开发包括网络 分布式 多程序在内的应用程序更加容易。 传统rpc一般采用二进制协议进行通信,省去了http各种参数封装的数据量,保持长连接的性能耗费。一般是基于socket、netty框架,rpc比http更简洁、性能上更强。 来一张网图: ![image-20211001003157488](C:/Users/admin/AppData/Roaming/Typora/typora-user-images/image-20211001003157488.png) # 流程图 ![img](doc/images/p1.png) ``` ## 1. 是否嵌入rpc框架进行补偿调用 (预想自研rpc实现) ## 2. 通过注解、aop嵌入到基于spring的项目之中 (预想实现方式) ## 3. 通过配置文件加载配置类嵌入到springboot项目之中 (预想实现方式) ## 4. 数据记录保存方案: ### (1) 缓存 ### (2) 持久化,如需持久化:建表 (现有实现方式) ### (3) 缓存加持久化 ## 5. 定时器配置方案、轮询方案 ### (1) 将定时器配置抽离至配置文件之中 ### (2) 将定时器配置抽离至数据库之中 (现有实现方式) ``` 简单的一个流程测试过程 ## 1. 执行一个测试请求 ``` Url: http://127.0.0.1:8080/test/doPushTask Args: { "id":"asddd" } ``` ![img](doc/images/wps978A.tmp.jpg) ## 2. 请求后,后台日志 ![img](doc/images/wps978B.tmp.jpg) **接收方日志**![img](doc/images/wps978C.tmp.jpg) ## 3. 尝试异常 ## ![img](doc/images/wps978D.tmp.jpg) ## 4. 保存时的日志记录状态更改为2(已推送,消费失败) ## ![img](doc/images/wps978E.tmp.jpg) ## 定时任务框架设计 **流程图** ![定时任务配置架构.drawio](C:/Users/admin/Desktop/定时任务配置架构.drawio.png) **核心实现** ![image-20211001003740560](C:/Users/admin/AppData/Roaming/Typora/typora-user-images/image-20211001003740560.png)