关于 HSF框架 (一)简单介绍

2023-11-03 15:48
文章标签 简单 介绍 框架 hsf

本文主要是介绍关于 HSF框架 (一)简单介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HSF介绍


HSF全称 high speed frameworkd, 是Alibaba内部使用的RPC框架,最初与Dubbo进行内部竞争,由于多方面的原因最终选择了HSF。
主要原因如下:

HSF代码量少一些,轻量一些,代码量大概2/3, Dubbo设计更加全面功能更多,更容器扩展和替换开源组件。
HSF的netty + hession传输性能更高, Dubbo内部filter过多也进一步降低RPC的性能。
HSF需要Jboss容器绑定,侵入更大,需要定制classloader等内部组件,dubbo更容器部署在通用Java环境。
HSF的比较特点性能更高,更多内部定制化的组件绑定,让RPC的性能降到最低,运维成本降到最低,对立阿里来说是重要的。
Dubbo特点是功能全面并且对开源组件的扩展更加容易,方便二次开发。所以比较适合推广到开源生态,因此阿里决定重新维护开源Dubbo社区提升影响力。
HSF是一个点对点的调用框架,不存在通信的总线和服务集群。


HSF主要架构


地址注册中心(服务发现)
注册中心就是服务的提供方需要指定服务本身的服务名称等一些服务注册信息.并将该服务注册到注册中心,做到服务发现的功能。
与开源社区的zookeeper做服务发现一样的道理。在阿里内部现在采用的叫configServer的中间件进行维护,该节点就是内存存储,不持久化。
配置服务器
rpc调用可能还有一些运维上的需求,例如超时以及版本号与不同环境的隔离.路由规则,权重等等有该节点进行控制,现在由diamond配置中间件承担。
元数据持久化节点(统一管理)
元数据就是给运维提供方便,属于非必要节点,能够统一的管理服务,做到实时的监控运维等工作。
HSOPS控制台
基于3去做到可视化的运维工具。
服务提供者
服务消费者
如图:
在这里插入图片描述

主要调用逻辑
步骤如下:

服务提供者启动hsf容器,上报服务信息到服务注册中心.
服务提供方上报元数据信息。
服务消费方启动hsf容器,拉取提供者信息.
拉取配置服务信息进行调用。


HSF的服务注册有很多种,包括最早的xml,需要绑定alitomcat的sar环境。
后面支持lightAPI的方式直接main函数的启动不需要spring容器.
再到现在springboot注解注入的方式。
逐渐做到了与本地调用十分类似的使用方式。

 

demo

这里演示最简单的注册与调用服务的方式

/**
* ligthAPI的方式
*/
ServiceFactory serviceFactory = ServiceFactory.getInstance();
XXService xxService = (XXService) serviceFactory.consumer("XXService").service("XXService").version("1.0.0.daily").group("HSF").subscribe();UmsResult<Void> result = xxService.request(request);

总结


HSF作为阿里内部高性能的RPC框架,其优点是轻量,高性能,运维成本低的特性,为大规模集群的应用提供了好的基础。
如果要完成更完善的分布式系统的服务治理等功能需要更多外围的组件,这些可能需要二次开发如果需要比较完整的生态dubbo或则spring boot比较好的一点
因此不同的场景选择不同的框架和组件才是硬道理。

 

参考:

https://blog.csdn.net/micro_hz/article/details/86507317

 

 

 

 


 

这篇关于关于 HSF框架 (一)简单介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/339215

相关文章

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依