为什么80%的码农都做不了架构师?>>>   

在上一篇 Blog 文中,我们了解到 RSF 的整体设计一共是分了 9 个层次。这一篇 Blog 我们来专门介绍 RSF 是如何将服务发布出去的。我们简称服务暴露。

什么是服务暴露?

让我们先来看一张图,直观的感受到服务暴露的具体意义。

首先讲一下什么是服务暴漏,服务暴露简单地讲就是把服务接口信息收集起来然后加以管理。对于服务提供者(Provider)来说,当有服务调用请求进来时可以快速的找到服务对象并加以调用。而对于服务消费者(Customer)来说,服务暴露则可以为发起服务调用时提供充足 RPC 请求信息。

服务信息定义

现在我们知道了什么是服务暴露,接下来我们探一探 RSF 对于服务是如何进行描述的。

RSF 的服务信息,是由 RsfBindInfo 接口进行最高级别的抽象。这个接口继承自 Hasor 的 BindInfo,下面还有 3个子类。先上一张类图加一说明。

父接口就不多说了,目前来说无外乎就是公用方法。以后会在 Hasor 的底层上进行打通。下面三个子类各有个的作用,这个需要介绍一下。

首先 RsfBindInfoWrap 子类,它就像名字里的 Wrap 所表达的一样,他就是一个包装类。里面什么都没干。这个类的作用是,当我们想要扩展 RsfBindInfo 并增加一些属性时。我们不需要去修改底层的实现类,只需要继承包装类并加上自己的转有属性就可以。---- 这是典型的装饰模式的应用

其次 ServiceDomain 类,这个类是一个领域模型 Bean 在这里保存了大量的属性信息,RsfBindInfo 接口中所表达的所有属性,在这个类里都能找到它们的身影。下面这张图显示了,这个类都定义了哪些属性。

最后 ServiceDefine 这个类比较特殊,大家或许觉得。服务的所有信息在上面 ServiceDomain 类中已经定义好了,那么 ServiceDefine 究竟是什么作用呢?

我们先进去一探究竟,下面这个类是 ServiceDefine 的节选。

大家可以看到,它是通过装饰模式扩展了 RsfBindInfoWrap 并定义了一些自己的属性。这些属性里面我们看到。和 ServiceDomain 不同,ServiceDomain 类中定义的都是服务的基本信息。而这里的属性都是服务运行调用时紧密相关的一些数据。

例如:filterList,这个属性里保存了服务的定义的所有私有 RsfFilter,而 customerProvider 属性我们可以通过它获取服务对象。此外 oriFlowControl 表示了服务的流控规则。

服务注册

服务注册的目的是为了,让当有服务消费者想要消费服务的时候可以有信息可以查询。这就需要引入注册中心的角色。下面图中表示了 RSF 中注册中心的地位。

在 RSF  中,注册中心是一个独立的功能。并且位于“net.hasor.rsf.center”包下。前面在服务信息定义小节已经明确服务信息所包含的信息,现在就开看看注册中心对于服务信息的类图关系。

从类图中也可以看到,RSF 的注册中心对于服务定义的描述十分直接。一个基类另外两个字类一个表示服务提供者,另外一个表示为服务消费者。接下来我们来看一看 RSF 注册中心是如何启动的。

注册中心的运行分为 客户端 和 服务端。

客户端:客户端负责收集 RSF 的所有服务信息,并形成上面两个对应的注册中心 Bean 。而服务端负责收集并管理这些 Bean。

在 RSF 中注册中心客户端的启动入口是“net.hasor.rsf.center.client.RsfCenterModule”,Center 服务端启动入口为“net.hasor.rsf.center.server.bootstrap.RsfCenterFrameworkModule”。

有兴趣的同学可以更佳深入的去分析里面的实现逻辑。

转载于:https://my.oschina.net/ta8210/blog/778245

RSF 分布式 RPC 服务信息的暴露相关推荐

  1. RSF 分布式 RPC 服务框架的分层设计

    RSF 是个什么东西? 一个高可用.高性能.轻量级的分布式服务框架.支持容灾.负载均衡.集群.一个典型的应用场景是,将同一个服务部署在多个Server上提供 request.response 消息通知 ...

  2. voyage java_GitHub - yezilong9/voyage: 采用Java实现的基于netty轻量的高性能分布式RPC服务框架...

    Voyage Overview 采用Java实现的基于netty轻量的高性能分布式RPC服务框架.实现了RPC的基本功能,开发者也可以自定义扩展,简单,易用,高效. Features 服务端支持注解配 ...

  3. 【Rpc】基于开源Dubbo分布式RPC服务框架的部署整合

    一.前言 Dubbo 作为SOA服务化治理方案的核心框架,用于提高业务逻辑的复用.整合.集中管理,具有极高的可靠性(HA)和伸缩性,被应用于阿里巴巴各成员站点,同时在包括JD.当当在内的众多互联网项目 ...

  4. 深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

  5. 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

  6. RPC服务测试新思路

    RPC服务测试新思路 原创: 转转QA 转转QA 引言 为了保证RPC服务的稳定,最大可能的防止BUG带到线上,测试过程中对RPC服务做接口测试是必要的步骤.目前的通用做法是在测试框架中引入被测服务的 ...

  7. RSF 分布式服务框架-传输协议层设计

    为什么80%的码农都做不了架构师?>>>    这是接上一篇文章<RSF 分布式服务框架设计>之后的续作,主要是 Hasor-RSF 协议层的设计. RSF 的协议层设计 ...

  8. 没有发布服务器的 rpc 安全信息,或该信息无效,SQLServer之创建分布式事务

    分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...

  9. RSF 分布式服务框架-服务端工作原理

    为什么80%的码农都做不了架构师?>>>    这是接上一篇文章<RSF 分布式服务框架设计>之后的续作,主要是 Hasor-RSF 的请求响应工作原理以及设计思路. 非 ...

最新文章

  1. php里怎么添加计时器,如何使用php显示计时器?
  2. 论文多到读不完?不如看看我们为你精选的这 15 篇
  3. 书评:Just the Computer Essentials(Vista)
  4. 国科大prml13-概率图(CRF,HMM)
  5. Android Activity launchMode研究
  6. [翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间
  7. 关于华为S27000交换机在局域网中的一些简单配置
  8. rvm、Ruby安装(亲测有效)
  9. 机器学习实例—手写体识别
  10. HBuilder常用的快捷操作
  11. C++实现windows平台下音频播放音量调节功能
  12. word中删除分节符时页面格式会发生改变
  13. 阿里云数据及api服务
  14. jlinkV8指示灯不亮 usb无法识别的问题
  15. 食品巨头布勒宣布部署区块链以对抗沙门氏菌和大肠杆菌
  16. 【考研英语语法】语篇标记
  17. 安徽电信翼拍照显示服务器异常,人像拍照环境指南
  18. python animation 轨迹_Matplotlib animation模块实现动态图
  19. Android常用三方框架
  20. Task4:被试内与被试间混合设计方差分析 | SPSS的实现以及Excel结果复现

热门文章

  1. 基于ESP32环境监测控制和预警(微信小程序)
  2. java读写word模板_Java操作Word模板插入列表
  3. 天津科技大学计算机科学与信息工程学院,天津科技大学计算机科学与信息工程学院简介...
  4. 时间序列分析学习笔记:时间序列的预处理(平稳性检验、纯随机性检验)
  5. 嵌入式系统开发笔记0_0:目录
  6. 分享招聘工作流程图模板及绘制技巧
  7. number of splits 划分的条件
  8. 跨境电商一件代发和专线小包是什么意思?有什么区别?
  9. html 运行css实现3D正方体旋转制作进阶,调整图大小及远近(二)
  10. 小程序内关注微信公众号的几种方式