# SPeed-Coopera-Server 手写微服务注册中心和配置中心支持对等集群 **Repository Path**: tlgen_1/speed-coopera-server ## Basic Information - **Project Name**: SPeed-Coopera-Server 手写微服务注册中心和配置中心支持对等集群 - **Description**: 1.注册中实现对等集群,异步复制; 2.配置中心实现对等集群,异步复制; 3.实现 AP,手写基于 Distro 协议实现最终一致性; 4.每个节点平等,可以处理写请求,同时把数据同步到其他节点; 5.服务端与客户端保活机制-udp 心跳探测, ack 确认机制; 6.数据复制采用 OkHttp3 进行同步; 7.配置中心支持被 @Refresh 注解标注的 Bean 属性动态更新, 无需重启生效 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-12-11 - **Last Updated**: 2024-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 手写注册中心和配置中心 ## 一、框架简介 ```ruby 1.注册中实现对等集群,异步复制; 2.配置中心实现对等集群,异步复制; 3.实现 AP,手写基于 Distro 协议实现最终一致性; 4.每个节点平等,可以处理写请求,同时把数据同步到其他节点; 5.服务端与客户端保活机制-udp 心跳探测, ack 确认机制; 6.数据复制采用 OkHttp3 进行同步; 7.配置中心支持被 @Refresh 注解标注的 Bean 属性动态更新, 无需重启生效; 8.酷炫前端界面, 加速研发中... ``` ## 二、注册和配置中心服务端 ```ruby speed-coopera-server 服务端源码: https://gitee.com/tlgen_1/speed-coopera-server 1.实现注册中心和配置中心的服务端源码; 2.负责实现最终一致性协议; 3.负责实现对等集群、异步复制; 4.负责读写操作,如果客户端 ip 是自身可以直接进行写入, 否则会进行内部路由后进行写入, 每个节点平等, 可以直接本地读 (参考了 distro 思想); 5.负责发起心跳探测; 6.负责结合 Spring 实现动态配置热更新; 7.可以访问 http://${ip}:10086 直接进入服务注册和配置中心控制台; ``` ## 三、注册和配置中心客户端 ```ruby speed-coopera-server 客户端源码: https://gitee.com/tlgen_1/speed-coopera-client 1.实现注册中心和配置中心的客户端源码; 2.用于跟 spring 直接集成,只需要引入依赖即可; 3.配置注册中心地址; ``` ## 四、快速上手 ### 1.启动注册和配置中心 ```ruby 下载服务端后找到 bin 目录执行 ./server.run ``` ### 2.项目中引入客户端依赖 ```ruby com.tlgen speed-coopera-client 1.0-SNAPSHOT ``` ### 3.配置注册和配置中心地址 ```ruby # application.yml server: port: 8383 spring: application: name: my-test cloud: coopera: discovery: address: localhost:10086 # 注册和配置中心地址, 本地默认是 localhost:10086 ``` ### 4.简单集成例子 ```ruby 写个接口看看配置是否支持热更新 ``` ![1](doc/1.png) ### 5.查看自身服务是否注册成功 ```ruby 访问 http://localhost:10086/registry/select ``` ![2](doc/2.png) ### 6.查看配置中心 ```ruby 访问 http://localhost:10086/#/ ``` ![3](doc/3.png) ### 7.访问测试接口 ```ruby 访问 http://localhost:8383/hello 返回 1212e ``` ![4](doc/4.png) ### 8.测试更改配置 ![5](doc/5.png) ### 9.访问测试接口 ```ruby 访问 http://localhost:8383/hello 返回 小e123456 ``` ![6](doc/6.png)