自研分布式高性能RPC框架及服务注册中心实践笔记【原创】【开源】
痛点
方案
目标
技术要求
- 支持HttpUrlConnection,HttpClient建立的连接池及扩展。
- 支持轮训模式负载均衡及扩展。
- 支持消费者端检测故障,临时转移到可用服务,待服务故障恢复后恢复调用。
- 支持redis注册中心及扩展,以及无注册中心架构。
- 支持protobuf协议,整体rpc性能会有较大提升。
架构示意图
消费者端RPC调用生命周期图
消费者端RPC启动初始化
兼容eureka模式的无缝迁移方案
ApiRegistry开源地址
源码核心模块
小白快速上手
- 引用包
<dependency>
<artifactId>free-bsf-api</artifactId>
<groupId>com.free.bsf</groupId>
<version>2.2-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>free-bsf-core</artifactId>
<groupId>com.free.bsf</groupId>
<version>2.2-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>free-bsf-apiregistry</artifactId>
<groupId>com.free.bsf</groupId>
<version>2.2-SNAPSHOT</version>
</dependency>
- properties配置:
#springboot 应用名
spring.application.name=free-demo-provider
#一键启用开关,默认false,重启后生效
bsf.apiRegistry.enabled=true
#支持ApiClient/FeignClient注解方式的Rpc拦截,重启后生效,默认false
bsf.apiRegistry.apiClientAspect.enabled=true
#rpcClient 扫描@ApiClient/@FeignClient注解的包,以逗号分割多个【rpc调用必填】
bsf.apiRegistry.rpcClient.basePackages=com.xxxx.xxxx
#注册中心redis实现的,redis地址格式:127.0.0.1:6379(无密码登陆)
bsf.apiRegistry.registry.redis.host=XXX.XXX.XXX.XXX:6379
- api协议代码示例
//兼容@FeginClient
@ApiClient(name = "lmc-test-provider",path = "/")
public interface CustomerProvider {
/*接口协议定义*/
//支持GetMapping,PostMapping
@PostMapping("/test")
//支持@RequestParam,@RequestBody
ApiResponseEntity<String> test(@RequestParam("str") String str);
}
总结
自研分布式高性能RPC框架及服务注册中心实践笔记【原创】【开源】的更多相关文章
- 基于Protobuf的分布式高性能RPC框架——Navi-Pbrpc
基于Protobuf的分布式高性能RPC框架——Navi-Pbrpc 二月 8, 2016 1 简介 Navi-pbrpc框架是一个高性能的远程调用RPC框架,使用netty4技术提供非阻塞.异步.全 ...
- 从零开始实现简单 RPC 框架 4:注册中心
RPC 中服务消费端(Consumer) 需要请求服务提供方(Provider)的接口,必须要知道 Provider 的地址才能请求到. 那么,Consumer 要从哪里获取 Provider 的地址 ...
- RPC框架的服务注册和发现
https://www.cnblogs.com/valor-xh/p/6281502.html https://blog.csdn.net/listslim1/article/details/5157 ...
- C# -- 高性能RPC框架:Socean.RPC
简介 Socean.RPC是一个.Net下的高性能RPC框架,框架以高性能.高稳定性为目标,底层基于socket,无第三方库引用,代码简洁,总代码量大约在2000行,框架性能较高,在普通PC上测试,长 ...
- (五):C++分布式实时应用框架——微服务架构的演进
C++分布式实时应用框架--微服务架构的演进 上一篇:(四):C++分布式实时应用框架--状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律 ...
- lms框架服务注册中心
服务注册中心原理 在分布式系统里的注册中心.原理是将部署服务的机器地址记录到注册中心,服务消费者在有需求的时候,只需要查询注册中心,输入提供的服务名,就可以得到地址,从而发起调用. 在微服务架构下,主 ...
- 【转帖】阿里金融云:分布式服务注册中心(DSR)
https://www.cloud.alipay.com/docs/middleware/register/index.html 分布式服务注册中心(DSR) 分布式服务注册中心简介 服务注册中心 ( ...
- silky微服务框架服务注册中心介绍
目录 服务注册中心简介 服务元数据 主机名称(hostName) 服务列表(services) 终结点 时间戳 使用Zookeeper作为服务注册中心 使用Nacos作为服务注册中心 使用Consul ...
- 分布式服务注册中心XXL-REGISTRY
<分布式服务注册中心XXL-REGISTRY> 一.简介 1.1 概述 XXL-REGISTRY 是一个轻量级分布式服务注册中心,拥有"轻量级.秒级注册上线.多环境.跨语言.跨机 ...
- Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现
介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是 ...
随机推荐
- Grafana配置Alert监控告警
1.添加告警途径 这里以slack为例 测试是否可用 在slack上收到告警通知了 安装插件 # grafana-cli plugins install grafana-image-renderer ...
- 关于使用git传输文件到GitHub
git status(查看本地git仓库情况) git add "文件名(精确到文件拓展名)" git commit -m "说明"(提交到上传缓存区域) gi ...
- SecureCRT登录centos日常操作
ssh登录客户端很多,个人还是习惯使用SecureCRT,非常快捷.简单.针对日常小伙伴经常咨询的常用操作简单记录如下: 建立ssh2连接,比较简单,填写服务器ip及对应的登录用户即可. 登录界面中文 ...
- 利用Java集合实现学生信息的”增删查“
之前学了Java中的集合,打算写一个小程序来消化一下! 那么我们知道,集合相比数组的优点就是可以动态的增加元素,这对比数组来说,十分的便捷: 并且集合为我们封装好一些方法,可以更好的做一些数据操作! ...
- vulnhub靶场之JANGOW: 1.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:JANGOW: 1.0.1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/jangow/jango ...
- 2022.3.12 提高A组总结&反思
今天有点上头了 T1:开场秒,大水题,一眼莫队了,最后没打 T2:开场以为是费用流,后来发现费用流做不了,在做T3的时候突然发现可以状压,也没打 T3:这道题给我极大的亲切感,导致我一个上午硬钢这道题 ...
- GitLab CI/CD 自动化部署入门
前言:因为找了B站内推,测试开发,正好知道内部使用GitLab做自动化测试,所以简单学了一下,有错误的地方请指正. 入门 初始化 cp: 无法获取'/root/node-v12.9.0-linux-x ...
- Go | 讲解GOROOT、GOPATH、GOBIN
前言 Go(又称 Golang)是 Google 开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.Go 被誉为是未来的服务器端编程语言. Go是一门全新的静态类型开发语言,具有自动 ...
- 齐博x1fun实例 鉴于很多人问列表的筛选怎么放到首页、内容页等等地方 贴出方法
application\common\fun\Field.php 你可以复制一份 也可以直接改 直接改记得加锁 不然升级就覆盖了 我们把 public function list_filter($ ...
- C语言基础--数组
数组 概念:在内存中连续存储的具有相同数据类型的一组数据的集合. 注意: 数组中的数据类型必须都是一致的 数组在内存中必须是连续的存储空间 定义数组时候的注意事项: 定义数组的时候,[]里面的值不能是 ...