HSF简介

作者: b335eb9201c3 | 来源:发表于2020-02-28 22:13 被阅读0次

    一.HSF 实现原理

    1.提供服务的大致流程如下:
    • server启动时候向configserver注册
    • client启动时候向configserver请求list
    • client缓存list,发现不可用的server,从缓存中remove
    • configserver通过心跳包维护可用server的list
    • list有更新的时候,configserver通过带version的报文通知client更新

    二.HSF 优势

    1:服务的自动注册、发现

    通过注册中心,实现服务的注册/注销与服务的发现。当服务启动后,会调用publish来将服务发布到中心,而服务的消费者,通过调用订阅接口传入的监听器来更新服务提供者列表。HSF提供了三种注册中心实现,分别是ConfigServer,Zookeper,和配置文件模式
    2:服务提供者与消费者之间长连接
    3:HSF框架采用 Netty + Hession数据序列化协议实现服务交互,Netty + Hession的组合在互联网高并发量的场景下,特别是在TPS 上达到10w 以上时
    4:HSF框架的容错机制,配置服务器是采用长连接的方式与服务节点进行网络通讯,一旦发现有服务提供者实例出现故障,配置服务器在秒级就会感知到,此时会将出问题这台服务提供者的信息从该服务的服务器列表中删除,并将更新后的服务器列表采用推送的方式同步给与该服务相关的所有服务调用者端,这样当下次服务调用者再进行此服务的调用时,就不会因为随机的方式再次对已经停止服务提供的服务器发起服务的调用。

    HSF 作为一个纯客户端架构的 RPC 框架,本身是没有服务端集群的,所有的 HSF 服务调用都是服务消费方(Consumer)与服务提供方(Provider)点对点进行的。然而,为了实现整套分布式服务体系,HSF 还需要依赖以下外部系统。

    image
    • 地址注册中心

      HSF 依赖注册中心进行服务发现,如果没有注册中心,HSF 只能完成简单的点对点调用。因为作为服务提供端,没有办法将自己的服务信息对外发布,让外界知晓;作为服务消费端,可能已经知道需要调用的服务,但是无法获取能够提供这些服务的机器。而注册中心就是服务信息的中介,提供服务发现的能力。地址注册中心的角色是由 ConfigServer 承担的。

    • 持久化配置中心

      持久化的配置中心用于存储 HSF 服务的各种治理规则,HSF 客户端在启动的过程中会向持久化配置中心订阅各种服务治理规则,如路由规则、归组规则、权重规则等,从而根据规则对调用过程的选址逻辑进行干预。持久化配置中心的角色是由 Diamond 承担的。

    • 元数据存储中心

      元数据是指 HSF 服务对应的方法列表以及参数结构等信息,元数据不会对 HSF 的调用过程产生影响,因此元数据存储中心也并不是必须的。但考虑到服务运维的便捷性,HSF客户端在启动时会将元数据上报到元数据存储中心,以便提供给服务运维使用。元数据存储中心的角色是由 Redis 承担的。

    • 功能

      HSF 作为分布式 RPC 服务框架,支持多种服务的调用方式。

    • 同步调用

      HSF 客户端默认以同步调用的方式消费服务,客户端代码需要同步等待返回结果。

    • 异步调用

      对于服务调用的客户端来说,并不是所有的 HSF 服务都需要同步等待返回结果的。对于这些服务,HSF 提供异步调用的形式,让客户端不必同步阻塞在 HSF 调用操作上。HSF 的异步调用,有 2 种:

      • Future 调用:客户端在需要获取调用的返回结果时,通过 HSFResponseFuture.getResponse(int timeout) 主动获取结果。

      • Callback 调用:Callback 调用利用 HSF 内部提供的回调机制,当指定的 HSF 服务消费完毕拿到返回结果时,HSF 框架会回调用户实现的 HSFResponseCallback 接口,客户端通过回调通知的方式获取结果。

    • 泛化调用

      对于一般的 HSF 调用来说,HSF 客户端需要依赖服务的二方包,通过依赖二方包中的 API 进行编程调用,获取返回结果。而泛化调用是指不需要依赖服务的二方包,从而发起 HSF 调用、获取返回结果的方式。在一些平台型的产品中,泛化调用的方式可以有效减少平台型产品的二方包依赖,实现系统的轻量级运行。

    • HTTP 调用

      HSF 支持将服务以 HTTP 的形式暴露出来,从而支持非 Java 语言的客户端以 HTTP 协议进行服务调用。

    • 调用链路 Filter 扩展

      HSF 内部设计了调用过滤器,并且能够主动发现用户的调用过滤器扩展点,将其集成到 HSF 调用链路中,使扩展方能够方便的对 HSF 请求进行扩展处理。

    • 应用开发方式

      使用 HSF 框架开发应用包含 Ali-Tomcat 和 Pandora Boot 两种方式。

    • Ali-Tomcat: 依赖 Ali-Tomcat 和 Pandora,可以提供完整的 HSF 功能,包括服务注册与发现、隐式传参、异步调用、泛化调用和调用链路 Filter 扩展、限流降级、全链路跟踪。应用程序需要以 WAR 包方式部署。

    相关文章

      网友评论

          本文标题:HSF简介

          本文链接:https://www.haomeiwen.com/subject/qpfdhhtx.html