HSF 基础记录

article/2025/10/5 4:42:46

​​​​​​http://mw.alibaba-inc.com/products/hsf/_book/?spm=a1zco.8288981.0.0.5ecbf7d9JO2F0s

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

注册中心的角色由ConfigServer扮演,用于服务注册和发现。

配置中心由Diamond扮演,可以配置和推送服务治理规则。应用开发人员可以在HSF-OPS上编辑规则并保存,然后规则会被推送到Diamond,接着由Diamond推送到消费端。

Hsf Provider 

如下:就是创建一个Hsf服务提供者Provider

使用注解的方式指定了【接口地址、版本、超时时间、注册的单元】,这里使用了configServerCenters达到了多单元注册的目的...

/*** @author :luoyu* @version :1.0* @date : 2021/9/15 9:12 下午* @description*/public interface BPMSRoutingService {/*** 激活模型回调* @params [modelName, modelId, operator]* @return com.alibaba.security.workstation.model.Result<java.lang.Boolean>* @author luoyu* @date 2021/9/15 8:45 下午**/Result<Boolean> activateModelRouting(String modelName, String modelId, String operator, String ifAgree, String instanceId,Long taskId);/*** 拒绝激活模型回调* @params [modelName, modelId, operator]* @return com.alibaba.security.workstation.model.Result<java.lang.Boolean>* @author luoyu* @date 2021/9/15 8:45 下午**/Result<Boolean> deActivateModelRouting(String modelName, String modelId, String operator, String agree,Long taskId);}
/*** @author :luoyu* @version :1.0* @date : 2021/9/15 9:14 下午* @description*/
@Slf4j
@HSFProvider(serviceInterface = BPMSRoutingService.class, serviceVersion = "1.0.0", clientTimeout = 30000, configServerCenters = {"pre", "sh", "rg-sg", "lazada-sg", "lazada-sg-pre"})
public class BPMSRoutingServiceImpl implements BPMSRoutingService {@Autowiredprivate ProcessInstanceService processInstanceService;@Overridepublic Result<Boolean> activateModelRouting(String modelName, String modelId, String operator, String ifAgree, String instanceId,Long grsTaskId) {log.warn("modelName = {}, modelId={}, operator={}, agree={}, instanceId={},taskid={}", modelName, modelId, operator, ifAgree, instanceId,grsTaskId);return Results.success();}@Overridepublic Result<Boolean> deActivateModelRouting(String modelName, String modelId, String operator, String agree,Long grsTaskId) {return null;}}

HSF原理初探

1. RPC

现在从图中可以看着,client和server之间有一条长连接,并且我们有自己的协议体:RpcRequest和RpcResponse。

2. 架构

2.1 一般来说,我们的应用即是client,也是server?那问题来了:服务提供者如何告知客户端自己提供服务?ConfigServer注册中心来了

2.2 如何动态配置负载的大小(线程池)?如何配置路有规则(同机房调用)?如何获取注册中心地址信息?配置中心来了(持久化配置中心) 

client和server启动的时候会先去diamond获取需要的配置信息,如最关键的服务注册中心的类型和地址,除此之外之外还有服务治理的类型和地址等。

2.3 服务治理

hsfops上面为什么可以看到有哪些服务,以及对应的调用规则配置?redis和hsfops来了

redis功能:HSF使用Redis存储元数据,每一个HSF Consumer/Provider 都会在启动后、每隔一段时间向redis上报元数据,这些元数据采集起来又提供给HSFOPS做服务治理,包括应用名和服务的映射、服务的元数据等。

3. 服务的注册和分布

    <bean id="BPMSRecall" class="com.***.BPMSRecallImpl"/><bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init"><!--serviceInterface必须配置[String],为服务对外提供的接口--><property name="serviceInterface" value="com.***.provider.BPMSRecall"/><!-- 注册中心 --><property name="configserverCenter"><list><value>pre</value><value>sg-pre</value><value>sh</value></list></property><!--target必须配置[ref],为需要发布为HSF服务的spring bean id--><property name="target" ref="BPMSRecall"/><!--serviceVersion为可选配置[String],含义为服务的版本,默认为1.0.0--><property name="serviceVersion" value="1.0.0"/><!--serviceName为推荐配置[String],含义为服务的名称,便于管理,默认为null--><property name="serviceName" value="BPMSRecall"/><!--serviceDesc为可选配置[String],含义为服务的描述信息,便于管理,默认为null--><property name="serviceDesc" value="*** 调用BPMS回调接口"/><!--serviceGroup为可选配置[String],含义为服务所属的组别,以便按组别来管理服务的配置,默认为HSF--><property name="serviceGroup" value="HSF"/><!--clientTimeout为可选配置[int],含义为客户端调用此服务时的超时时间,单位为ms,默认为3000ms--><!--该配置对接口中的所有方法生效,但是如果客户端通过MethodSpecial属性对某方法配置了超时时间,则该方法的超时时间以客户端配置为准,其他方法不受影响,还是以服务端配置为准--><property name="clientTimeout" value="3000"/><!--clientIdleTimeout为可选配置[int],含义为客户端连接空闲的超时时间,单位为s,默认为60--><property name="clientIdleTimeout" value="60"/><!--serializeType为可选配置[String(hessian|java)],含义为序列化类型,默认为hessian--><property name="serializeType" value="java"/><!--methodToInjectConsumerIp为可选配置,含义为注入调用端IP的方法,这样业务服务也可以得知是哪个IP在调用,该方法的参数必须为String,所存的变量为threadlocal--><property name="methodToInjectConsumerIp" value="setConsumerIP"/><!--methodSpecials为可选配置,用于为方法单独配置超时(单位ms),这样接口中的方法可以采用不同的超时时间,该配置优先级高于上面的clientTimeout的超时配置,低于客户端的methodSpecials配置--><property name="methodSpecials"><list><bean class="com.taobao.hsf.model.metadata.MethodSpecial"><property name="methodName" value="activateModelRouting" /><property name="clientTimeout" value="3000" /></bean><bean class="com.taobao.hsf.model.metadata.MethodSpecial"><property name="methodName" value="actMgrApprovalCallBack" /><property name="clientTimeout" value="3000" /></bean></list></property></bean>

那么问题来了,为什么配置来这里,这个服务就可以被调用了呢?

从配置文件看,有个关键的bean(HSFSpringProviderBean),有一个关键的方法init,这里的init就是服务发布的过程

/*** 对外发布服务*/public void init() throws Exception {// 避免被初始化多次if (!inited.compareAndSet(false, true)) {return;}providerBean.initWithoutPub();doPublish();}private void doPublish() {//非延迟发布,或者是非spring容器初始化的情况,直接发布服务if (!providerBean.getMetadata().isDelayedPublish() || !isInSpringContainer) {providerBean.publish();if(isInSpringContainer) {setAppInitedStatus();} else {String errorCodeStr = LoggerHelper.getErrorCodeStr("HSF", "HSF-0051", "BIZ","HSFSpringProviderBean is not created in spring container");LOGGER.warn(errorCodeStr);}}}

 

HSF服务端应用的启动: 

1. HSF源生的入口--HSFApiProviderBean

2. spring方式的入口--HSFSpringProviderBean

3. spring注解方式--HSFProvider

1. 如何查询Parada下hsf相关信息

请注意:parada会对外12201端口

 


http://chatgpt.dhexx.cn/article/N8URx3TJ.shtml

相关文章

HSF框架

HSF架构 一&#xff0e;HSF的基本概念 HSF全称为High-Speed Service Framework&#xff0c;旨在为淘系的应用提供一个分布式的服务框架&#xff0c;HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持&#xff0c;从而可以很容易的开发分布式的应用以及提供或使用…

HSF 实现原理

HSF 实现原理 提供服务的流程 - server启动时候向ConfigServer注册 - client启动时候向ConfigServer请求list - client缓存list&#xff0c;发现不可用的server&#xff0c;从缓存中remove - ConfigServer通过心跳包维护可用server的list - list有更新的时候&#xff0c;…

HSF原理剖析

前言 HSF是一个分布式的远程服务调用框架&#xff0c;其实我更喜欢把分布式几个字去掉&#xff0c;因为HSF本身并不是一个单独的服务&#xff08;指一个进程&#xff09;&#xff0c;他是附属在你的应用里的一个组件&#xff0c;一个RPC组件(远程过程调用——Remote Procedure …

java的hsf高速框架,高速服务框架HSF

一、简述 HSF(High-speed Service Framework)&#xff0c;是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。 HSF 连通不同的业务系统&#xff0c;解耦系统间的实现依赖。HSF 从分布式应用的层面&#xff0c;统一了服务的发布与调用方式&#xff0c;从而帮助用户更加方便、快速…

RPC中间件-HSF

目录 目标 版本 需要考虑什么 服务发布与订阅的流程 发布与订阅的入口类 服务的元数据 注册流程图示 服务器端服务映射结构 服务订阅的流程图示 消费者端的映射结构 消费者调用服务的流程 服务代理 协议模板服务 协议服务 消费者调用服务的流程图示 目标 针对淘…

HSF学习

一、HFS简介 1、 HFS其本质是一种RPC框架&#xff0c;用于服务的远程调用&#xff0c;定义唯一服务三元素&#xff1a;接口&#xff08;serviceInterface&#xff09;、版本&#xff08;serviceVersion&#xff09;、组&#xff08;serviceGroup&#xff09;&#xff0c;类似m…

HSF概述

高速服务框架HSF&#xff08;High-speed Service Framework&#xff09;&#xff0c;是在阿里巴巴广泛使用的分布式RPC服务框架。 文章目录 概述HSF架构功能应用开发方式 概述 HSF连通不同的业务系统&#xff0c;解耦系统间的实现依赖。HSF从分布式应用的层面&#xff0c;统一…

HSF架构原理

一&#xff0e;HSF的基本概念 HSF全称为High-Speed Service Framework&#xff0c;旨在为淘系的应用提供一个分布式的服务框架&#xff0c;HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持&#xff0c;从而可以很容易的开发分布式的应用以及提供或使用公用功能…

HSF用户指南

用户指南 HSF(High-speed Service Framework)&#xff0c;高速服务框架&#xff0c;是阿里系主要采用的服务框架&#xff0c;其目的是作为桥梁联通不同的业务系统&#xff0c;解耦系统之间的实现依赖。其高速体现在底层的非阻塞I/O以及优秀的序列化机制上&#xff0c;实现了同…

阿里巴巴分布式服务框架HSF

HSF称之为高速服务框架HSF&#xff08;High-speed Service Framework&#xff09;&#xff0c;是在阿里巴巴广泛使用的分布式RPC服务框架。 HSF连通不同的业务系统&#xff0c;解耦系统间的实现依赖。HSF从分布式应用的层面&#xff0c;统一了服务的发布与调用方式&#xff0c…

HSF的原理分析

一&#xff0e;HSF的基本概念 HSF全称为High-Speed Service Framework&#xff0c;旨在为淘系的应用提供一个分布式的服务框架&#xff0c;HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持&#xff0c;从而可以很容易的开发分布式的应用以及提供或使用公用功能…

HSF框架基本介绍

HSF介绍 HSF全称high speed frameworkd,是Alibaba内部使用的RPC框架&#xff0c;最初与Dubbo进行内部竞争&#xff0c;由于多方面的原因最终选择了HSF。 主要原因如下&#xff1a; HSF代码量少一些&#xff0c;轻量一些&#xff0c;代码量大概2/3, Dubbo设计更加全面功能更多…

HSF简介

产品概述 HSF (High-speed Service Framework)&#xff0c;高速服务框架&#xff0c;是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。 HSF 作为阿里巴巴的基础中间件&#xff0c;联通不同的业务系统&#xff0c;解耦系统间的实现依赖。HSF 从分布式应用的层面&#xff0c;统…

企业流程篇--项目管理(七)

线索到现金(LTC): 介绍: ​ LTC-- Lead To Cash。即从线索到现金,端到端的项目管理流程。 ​ 1)LTC涵盖从线索到现金的所有项目阶段,是销售、工程、服务等业务主流程和人事、财务、项目管理、业绩管理等管理流程的集成。 ​ 2)把目标聚焦于满足客户需求、可交付、可回…

一个完整的软件项目管理流程包括什么?有什么软件项目管理工具?

软件项目管理全流程&#xff0c;及各环节方法&#xff0c;辅助工具。 项目的类型不同&#xff0c;其流程必然会不一样&#xff0c;关于通用项目管理的流程其他回答讲述已经非常完善&#xff08;个人推荐这篇&#xff1a;泛项目管理流程包括哪些&#xff1f;&#xff09;&#…

系统集成项目管理工程师知识点集锦

系统集成项目管理工程师知识点集锦 1. 项目的特点有哪些&#xff1f;2. 项目的组织方式有哪些&#xff1f;分别具有什么优缺点&#xff1f;3. 项目管理过程组有哪些&#xff1f;4. 怎么样才能成为一位优秀的项目经理&#xff1f;5. PMO的主要职能有哪些&#xff1f;6. 项目经理…

第4章 项目整体管理 与 第16章 项目变更管理

第4章 项目整体管理 与 第16章 项目变更管理 了解项目管理知识体系叙述的结构 子过程、ITTO、过程组、知识领域 什么是项目整体管理(P-187) 了解 项目整体管理&#xff1a;包括为识别、定义、组合、统一和协调各项目管理过程组的各种过程和活动而开展的过程与活动。兼具统一、…

项目范围管理

> # 范围管理 过程 输入 输出 工具 技术 项目范围管理 6个过程 1.编制范围管理计划过程 定义、确认、控制项目范围的过程进行描述 2.收集需求 为实现项目目标&#xff0c;明确、记录项目干系人相关需求的过程 3.定义范围 详细描述产品范围和项目范围&#xff0c;编制项目范围…

项目研发管理流程

之前公司我除了带架构和业务研发团队&#xff0c;PMO也在我这边管理&#xff0c;对于200多人的研发团队&#xff0c;下面介绍下整个研发管理流程&#xff0c;瀑布式开发模式&#xff0c;虽然比较慢&#xff0c;不过很稳&#xff0c;适合传统企业。 1、立项阶段 发起人提出需求&…

项目管理复习题

蓝字位注释&#xff0c;红字为错误原因&#xff0c;紫字为重点 本复习题链接&#xff1a;https://pan.baidu.com/s/1ZJ4l6mKxAt9dqhw0Qa58xA 提取码&#xff1a;j4jz 笔记&#xff1a;https://blog.csdn.net/weixin_42139734/article/details/108661001 第一章 一、填空题…