一起写RPC框架(十四)RPC注册中心一--注册中心的简述
来源:互联网 发布:电影片头制作软件 编辑:程序博客网 时间:2024/05/22 01:43
注册中心在RPC整个体系中担任的角色是比较重要的,但也是比较微妙的,它维护了所有服务提供者的所暴露服务的信息,最最核心的信息就是IP+端口号,服务消费者会在调用服务的时候去注册中心上去询问它远程调用服务的端口和IP地址,注册中心返回它所需要的信息,服务消费者拿着服务的IP+端口号,如果获取到多个IP的时候,再根据负载策略去远程调用服务,其实最最简单的注册中心的职责就是如此,注册中心的最核心的职责也是如此
但是,其实在RPC的体系中,注册中心其实是可以缺失的,因为假如服务消费者知道服务提供者的地址,就可以直接调用,不需要向注册中心去查询服务提供的地址,这是远程调用最最原生的调用方法,这种直接调用的策略有好有坏,好处就是直接,整个流程简单易懂,且容易维护,坏处也是很明显,就是不灵活,假如服务的地址改变了,我们需要手动修改服务提供的地址,不能动态的实时的去获取服务的实时地址,当然也就达不到服务治理的效果了
注册中心的职责是很明确的,简而言之:
1)服务提供者向其发送它提供的服务的一些基本信息
2)服务消费者来订阅服务
3)服务提供者实例下线的时候,实时通知服务消费者某个服务下线
当然还有一些服务治理的功能,比如:
1)服务审核,这是服务治理最最简单的操作了,因为某个服务提供者上线之后,都是需要审核的,如果不审核,可能会造成很多不必要的麻烦,有可能有些开发小新,不小心把开发环境的服务向线上服务注册,如果不审核,直接通过的话,就会造成线上接口调用线下服务的尴尬局面
2)负载策略的记录,比如默认是随机加权策略,如果管理者希望改成加权轮询的策略,需要通知服务消费者,访问策略的改变
3)手动改变某个服务的访问权重,比如某个服务默认负重是50,(最大100)的时候,但是此时这个服务实例所在的机器压力不大的时候,而其他该服务实例压力很大的时候,可以适当的增加该服务的访问权重,但是又不想让该服务下线,修改它的权重,所以我们可以在注册中心修改它的负重,然后通知服务消费者,这样就可以动态的修改负重了
4)一些持久化的操作,因为注册中心是无状态的,假如某个注册中心实例重启之后,以前的一些审核信息,修改的访问策略信息就会消失,这样就会需要用户重新一一审核,这是很麻烦的,所以需要将这些信息落地,持久化到硬盘,然后每次重启注册中心实例的时候,去读取这些信息
注册中心的基本功能就是如上陈述的,接下来的几个章节,我们一一实现上述的功能~
- 一起写RPC框架(十四)RPC注册中心一--注册中心的简述
- 一起写RPC框架(十五)RPC注册中心二--注册中心的基本实现
- 一起写RPC框架(十六)RPC注册中心三--注册中心服务提供者端的处理
- 一起写RPC框架(十七)RPC注册中心四--注册中心服务消费者端的处理
- 一起写RPC框架(十八)RPC注册中心五--注册中心之持久化的操作
- smart-rpc注册中心
- 一起写RPC框架(十)RPC服务提供端二--服务的编织和注册
- 一起写RPC框架(二十四)RPC测试篇一---基本业务逻辑的测试
- 一起写RPC框架(三)RPC网络模块的搭建一 网络传输模型
- 一起写RPC框架(九)RPC服务提供端一--服务端的基本代码结构
- 一起写RPC框架(二)RPC之项目搭建
- 一起写RPC框架(二十七)RPC 写在最后
- 一起写RPC框架(一)RPC之我所见
- 一起写RPC框架(十九)RPC服务消费者一--服务消费者简介
- 一起写RPC框架(一)RPC之我所见
- Dubbo的注册中心
- 一起写RPC框架(五)RPC网络模块的搭建三 序列化
- 一起写RPC框架(七)RPC网络模块的搭建五 Netty模块
- 第七周项目一--建立顺序环形队列算法库
- 第5周项目5 后缀表达式
- Android中的动态加载机制
- 4年安卓开发总结
- 有效的软件质量管理
- 一起写RPC框架(十四)RPC注册中心一--注册中心的简述
- 二叉树的深度
- 代码的完整性-面试题14-调整数组顺序使奇数位于偶数前面
- 五个Docker监控工具的对比
- AJAX学习笔记
- 第七周项目1-建立顺序环形队列算法库
- POJ 2104:K-th Number(主席树)
- js,jquery 操作 dom
- spring,springMVC,mybatis,maven框架整合