HSF 框架简介

HSF 框架,全称 High Speed Framework,是 Alibaba 内部使用的 RPC 框架,最初于 Dubbo 进行内部竞争,由于多方面的原因最终选择了 HSF。

HSF 作为阿里内部高性能的 RPC 框架,其优点是轻量,高性能,运维成本低的特性,为大规模集群的应用提供了好的基础。

入职前需要掌握的一个框架,HSF,自学的同时也分享给大家。

HSF 框架简介

概述

HSF 连通不同的业务系统,解耦系统间的实现依赖。HSF 从分布式应用的层面,统一了服务的发布与调用方式,从而帮助用户更加方便、快速地开发分布式应用,以及提供或使用公共功能模块。HSF 为用户屏蔽了分布式领域中的各种复杂技术细节,如远程通讯、序列化实现、性能损耗、同步与异步调用方式的实现等。

HSF 架构

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

EDAS_HSF架构图

  • 服务提供方

    服务提供方绑定了 12200 端口,用于接受请求并提供服务,同时将地址信息发布到地址注册中心。

  • 服务消费方

    服务消费者通过地址注册中心订阅服务,根据订阅到的地址信息发起调用,地址注册中心不参与调用。

  • EDAS 地址注册中心

    HSF 依赖注册中心进行服务发现,如果没有注册中心,HSF 只能完成简单的点对点调用。

    服务提供端无法将服务信息对外暴露,服务消费端可能已经明确了待调用的服务,但是无法获取该服务。因此注册中心是服务信息的中介,为服务提供了注册与发现的功能。

  • EDAS 持久化配置中心

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

  • EDAS 元数据存储中心

    元数据指 HSF 服务对应的方法列表以及参数结构等信息。元数据对 HSF 的调用过程不会产生影响,因此元数据存储中心是可选的。由于服务运维的便捷性,HSF 客户端在启动时会将元数据上报到元数据存储中心,方便服务运维。

  • EDAS 控制台

    EDAS 控制台打通了服务地址注册中心、持久化配置中心、元数据存储中心等,为用户提供了服务运维功能,包括服务查询、服务治理规则管理等,提高HSF服务研发的效率、运维的便捷性。

功能

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

  • 同步调用

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

  • 异步调用

    对于服务调用的客户端,并非所有 HSF 服务都需要同步等待返回结果。HSF 提供异步调用,帮助客户端无需同步阻塞在 HSF 调用上。HSF 的异步调用,有 Future 调用和 Callback 调用两种。

    • Future 调用

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

    • Callback 调用

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

  • 泛化调用

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

  • 调用链路 Filter 扩展

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

应用开发方式

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

  • Ali-Tomcat:依赖 Ali-Tomcat 和 Pandora,提供了完整的 HSF 功能,包括服务注册与发现、隐式传参、异步调用、泛化调用和调用链路 Filter 扩展。应用程序须以 WAR 包方式部署。
  • Pandora Boot:依赖 Pandora,提供了比较完整的 HSF 功能,包括服务注册与发现、异步调用。应用程序编译为可运行的 JAR 包并部署即可。
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2017-2021 Shadowalker
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信