精华内容
下载资源
问答
  • 笔者工作的这几年之中,总结并开发了如下几个框架: summercool(Web 框架,已经应用于某国内大型网络公司的等重要应用)、summercool-hsf(基于Netty实现的RPC框架,已经应用国内某移动互联网公司)、 summercool-...
  • HSF 官网Demo、IDEA 与 eclipse 开发环境说明;HSF,包结构等等
  • 阿里hsf接口 sar包

    2019-04-14 17:51:59
    由于不同的调用方式可能会用到不同sar文件所以这里我把自己收集的两种sar包上传供大家使用,有时出现调用问题时换个包试试
  • 自己公司用的HSF架构培训手册,当时还有阿里的人来培训我们,希望帮助到需要用的HSF技术的人
  • 阿里云HSF用户开发指导手册 阿里云HSF用户开发指导手册
  • Springboot+HSF分布式服务框架+EDAS注册中心,实现发布订阅模式
  • 内部分享的hsf使用介绍文档(无涉密信息),有兴趣的同学可以看看
  • taobao-hsf.sar

    2017-08-09 17:11:15
    hsf框架所需工具包 taobao-hsf.sar 直接放入tomcat根目录tomcate/deploy/下即可
  • NULL 博文链接:https://manning.iteye.com/blog/2412034
  • EDAS中HSF方式启动服务入门文档,详细描述了EDAS中HSF方式的启动过程
  • (最新)HSF管理手册.doc

    2020-11-10 17:33:50
    HSF 管 理 手 册 (根据IECQ QC080000编制) 文件编号:CY-MM-2 版 本: A 目录 目的 范围 引用标准 名词与定义 产品无有害物质保证系统 5.1一般要求 5.2文件化要求 6管理阶层责任 6.1HSF经营阶层的承诺 6.2HSF经营者的...
  • HSF实现原理讲解

    2018-04-24 14:22:23
    HSF 框架的原理讲解,主要包含了知识点:rpc,动态代理,HSF可以作为微服务的基础框架进行二次开发
  • HSF

    2019-03-01 14:15:50
    https://help.aliyun.com/document_detail/99912.html?spm=a2c4g.11186623.2.25.10095e31r9hBab
    展开全文
  • HSF and 编码规范

    2019-08-13 01:09:48
    NULL 博文链接:https://arlenye.iteye.com/blog/2294835
  • taobao-hsf

    2018-05-08 17:51:35
    阿里云开发的容器,edas需要在taobao-tomcat中运行,保存后将内容解压至上述保存的 Ali-Tomcat 的 deploy 目录(d:\work\tomcat\deploy)下。
  • 抑制HSF-1增强PS-341诱导胶质瘤细胞凋亡,毕云科,刘耀华,背景与目的:蛋白酶体抑制剂能影响肿瘤生长并诱导细胞凋亡。PS-341作为第一个经研究证实并被美国FDA批准用于临床的蛋白酶体抑制剂,
  • HSF 开发

    2019-06-26 10:45:00
    HSF 简介 HSF(High Speed Service Framework),高速服务框架,是阿里-主要采用的服务框架,其目的是 作为桥梁联通不同的业务系统,解耦系统之间的实现依赖。 1: RPC 远程过程调用(Remote Procedure Call)是一种通过...

     

    HSF 简介 HSF(High Speed Service Framework),高速服务框架,是阿里-主要采用的服务框架,其目的是 作为桥梁联通不同的业务系统,解耦系统之间的实现依赖。

    1: RPC 远程过程调用(Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务的协 议,它的特点在于不需要了解底层网络技术。在 OSI 网络通信模型中,RPC 跨越了传输层和 应用层。RPC 使得开发分布式应用更加容易

    2: ConfigServer(地址注册中心) HSF 是一个 RPC 框架,服务端需要将地址发送到注册中心让客户端能够进行服务发现,客 户端需要通过注册中心订阅一个服务的地址。服务与地址的对应关系是多对多的关系,一个 服务可以由多个地址提供,一      个地址可以提供多种服务。当一个服务有了新地址(机器)或 者减少了地址(机器)时,注册中心会通知这个服务的订阅方将地址增加或者减少,这个注 册中心就是 Configserver,它负责存储地址信息以及地址变更的推送。

    3: Diamond(配置中心) HSF 持久化的配置中心是 Diamond。HSF 提供软负载服务,其中的路由规则是在 Diamond 上 进行配置,然后推送到客户端进行解析,第二章节中开发环境搭建已经包含 Diamond。

    4: Pandora Pandora 是 HSF 生存的容器,由 pandora 来管理整个 HSF 的生命周期和二方包的隔离

    HSF 标签清单

    Provider 配置:

    属性描述
    interfaceinterface 必须配置[String],为服务对外提供的接口
    versionversion 为可选配置[String],含义为服务的版本,默认为 1.0.0
    groupserviceGroup 为可选配置[String],含义为服务所属的组别,以便按 组别来管理服务的配置,默认为 HSF
    clientTimeout该配置对接口中的所有方法生效,但是如果客户端通过 MethodSpecial 属性对某方法配置了超时时间,则该方法的超时时间以客户端配置为准,其他方法不受影响,还是以服务端配置为 准
    serializeTypeserializeType 为可选配置[String(hessian|java)],含义为序列化类 型,默认为 hessian
    corePoolSize单独针对这个服务设置核心线程池,是从公用线程池这个大蛋糕 里切一块下来
    maxPoolSize单独针对这个服务设置线程池,是从公用线程池这个大蛋糕里切 一块下来
    enableTXC开启分布式事务 Txc
    refref 必须配置[ref],为需要发布为 HSF 服务的 spring bean id
    methodSpecialsmethodSpecials 为可选配置,用于为方法单独配置超时(单位 ms), 这样接口中的方法可以采用不同的超时时间,该配置优先级高于 上面的 clientTimeout 的超时配置,低于客户端的 methodSpecials 配置

     

     

     

     

     

     

     

     

     

     

     

    标签配置示例: 

     

    Consumer 配置 :

    属性描述
    interfaceinterface 必须配置[String],为需要调用的服务的接口。
    versionversion 为可选配置[String],含义为需要调用的服务的版本,默认为 1.0.0
    groupgroup 为可选配置[String],含义为需要调用的服务所在 的组,默认为 HSF,建议配置。
    methodSpecialsmethodSpecials 为可选配置,含义为为方法单独配置超时 (单位 ms),这样接口中的方法可以采用不同的超时时间, 该配置优先级高于服务端的超时配置。
    target主要用于单元测试环境和 hsf.runmode=0 的开发环境中, 在运行环境下,此属性将无效,而是采用配置中心推送回 来的目标服务地址信息。
    connectionNumconnectionNum 为可选配置,含义为支持设置连接到 server 连接数,默认为 1,在小数据传输,要求低延迟的情况下设 置多一些,会提升 tps。
    clientTimeout客户端统一设置接口中所有方法的超时时间(单位 ms),超 时设置优先级由高到低是:客户端 MethodSpecial,客户端 接口级别,服务端 MethodSpecial,服务端接口级别。
    asyncallMethods

    asyncallMethods 为可选配置[List],含义为调用此服务时需 要采用异步调用的方法名列表以及异步调用的方式。

    默认为空集合,即所有方法都采用同步调用。

    maxWaitTimeForCsAddress配置这个,在服务订阅的时候,会在指定的时间内,等待 地址推送过来,避免地址为过来后,调用该服务出现找不 到地址的情况,超过指定时间未等到地址,将继续初始化 完成。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    标签配置示例: 

     

    HSF jvm 参数配置

    -Dhsf.server.port

    指定 HSF 的启动服务绑定端口,默认为 12200

    -Dhsf.serializer

    指定 HSF 的序列化方式,默认值为 hessian

    -DdefaultHsfClientTimeout

    指定 HSF 的客户端超时时间 ms,默认为 3000

    -Dhsf.server.max.poolsize

    指定 HSF 的服务端最大线程池大小,默认值为 600

    -Dhsf.server.min.poolsize 指定 HSF 的服务端最小线程池大小。默认值为 50

     

    HSF 基础开发

    参考下面的 demo 编写示例,来快速的开发一个基础版的 HSF 应用

    1 创建 Web 项目

    通过上面第一、二章节我们已经在开发工具中配置好对应的插件,并且搭建了本地服务注册 配置中心,下面我们以一个 demo 展开介绍 Hsf 开发的相关细节。

    以 eclipse 为例创建一个 maven web 项目。

    请点击 File -> New -> Project -> Maven Project -> maven-archetype-webapp ,在弹 出的界面输入 groupId、artifactId ,然后连续点击 Next,完成项目创建。项目目录结构 如图:

    2 添加 Maven 依赖

    在项目 pom.xml 中添加如下依赖:

    3 编写发布 HSF 的服务

    创建需要发布的服务接口:com.alibaba.edas.SampleService

    编写实现类:com.alibaba.edas.impl.SampleServiceImpl

    4 发布服务配置文件

    请按照以下步骤配置发布者的服务配置文件。

      1. 在 web.xml 中配置 spring 的监听器:

      

      2. 在 resources 目录下面添加 spring 配置文件:application-config.xml

        

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <import resource="hsf-provider-beans.xml"/>
    <!--<import resource="hsf-consumer-beans.xml"/>-->

      </beans>

      3. 在 resources 目录下面添加发布者的配置文件:hsf-provider-beans.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:hsf="http://www.taobao.com/hsf"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.taobao.com/hsf
    http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">

      <bean id="stationService" class="com.sgcc.echarge.stationserver.service.StationServiceHsfImpl"/>
       <hsf:provider version="1.0.0" group="grp_sgcc_xpcz_app" ref="stationService"
    id="stationSP" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/>

      </beans>

      到此发布者就编写好了。

    4. 右键点击创建的项目,点击 Run As,选择 Run configuration,在弹出页面选择 AliTomcat Webapp, 右键 new 新建,如下图:

      

    5. 填写好相关配置,点击 Run,启动应用,此时通过第二章节建的配置中心可以看到发布 的服 务,如下图:

       

    5 消费服务配置文件

    1. 在配置文件 application-config.xml 添加消费者配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <import resource="hsf-consumer-beans.xml"/>

    </beans>
    2. 在 resources 目录下面添加消费者的配置文件 hsf-consumer-beans.xml 配置:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:hsf="http://www.taobao.com/hsf"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.taobao.com/hsf
    http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">

    <hsf:consumer version="1.0.0" group="grp_sgcc_xpcz_app" clientTimeout="1000000"
    id="helloServiceConsumer" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/>

    </beans>
    3. 已经完成了消费者的定义

    6 Demo 下载地址
    通过如下地址下载: http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package%2Fedas-app-demo%2Fedas-ap p-demo.zip
    将下载下来的压缩包解开后,可以看到 itemcenter-api,itemcenter 和 detail 三个 Maven 工程。其中 itemcenter-api 工程提供接口定义,detail 工程是消费者应用,Itemcenter 工程是 服务提供者应用。

    转载于:https://www.cnblogs.com/yaweizhang/p/11088552.html

    展开全文
  • HSF简介

    2019-08-20 11:16:19
    阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被很多技术爱好者所熟知,目前已经支撑着近 2000 多个应用的运行。 其对应早期的开源项目 Dubbo(因为某些原因,...

    阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被很多技术爱好者所熟知,目前已经支撑着近 2000 多个应用的运行。

         其对应早期的开源项目 Dubbo(因为某些原因,Dubbo 项目在 2012 年年底,阿里巴巴就停止了对此开源项目的更新),则更是在互联网领域有着非常高的知名度和广泛的使用。

         本文通过对阿里巴巴 HSF 服务框架的介绍,让大家能对这类分布式服务框架架构设计、运行原理,以及如何实现作为一个 SOA 架构需要满足的各个特性有一个清晰的认识。

    HSF 服务框架主要组件

    1、服务提供者

         在服务框架中真正提供服务功能实现的应用实例,为了保障服务提供的高可用性,一般均是集群部署。

         每一个 HSF 的应用均是以 War 包的形式存在,运行在阿里巴巴优化定制后的 Tomcat 容器中,在 Tomcat 容器层已经集成了 HSF 服务框架对服务提供者或服务调用者进行配置服务器发现、服务注册、订阅、失效转移等相关功能,所以不管是在服务提供者还是调用者开发时,只需要进行服务相关的配置操作,应用中无需引入任何 HSF 相关的 Jar 依赖包。

            考虑到应用故障的隔离、更方便的服务管控,目前淘宝内部大部分应用的部署方式还是一个虚拟机(对应一个操作系统)运行一个 Tomcat 容器,每个 Tomcat 运行一个服务应用,随着近几年以 Docker 容器技术的发展和流行,现在阿里巴巴内部也正在进行应用容器化部署的工作,让服务器的资源利用更加科学和高效。

    2、服务调用者

          作为服务的消费者,大多数也是以 WAR 应用包的方式运行在 Tomcat 容器中,在阿里巴巴集团内部也有一部分是基于 C/C++、PHP、Node.js 等语言开发的服务调用者。

    3、地址服务器

        在 HSF 服务框架中,地址服务器肩负着给服务提供者和服务调用者提供部署环境中所有配置服务器和 Diamond 服务器的服务器列表信息,是由 Nginx( 是一个高性能的 HTTP 和反向代理服务器)提供该服务能力。

          在部署 HSF 服务环境时,会将整个环境中的配置服务器集群(服务器 IP 列表)和 Diamond 服务器集群信息设置在地址服务器上,在实际生产部署中,也会部署多台地址服务器提供负载均衡和高可用性的服务,服务提供者和调用者通过统一域名的方式访问这些地址服务器(比如“xxx.tbsite.net”),通过 DNS 轮询实现地址服务器访问的高可用性。

    4、配置服务器

          配置服务器在 HSF 框架中主要负责记录环境内所有服务发布(服务提供者的 IP 地址和服务端口信息)和服务订阅(服务调用者的 IP 地址和服务端口信息)信息,并将服务相关信息推送到服务节点上。为了追求服务发布和订阅的推送效率,所有的服务发布和订阅信息均是保存在内存中。

          配置服务器与所有服务者提供者和调用者均是长连接,采用心跳的方式可监控到各服务运行节点的状况,一旦出现服务提供者服务节点出现故障时,会自动推送更新后(将出问题的服务提供者服务节点信息从列表中删除)的服务提供者列表给相关的服务调用者端。

           在生产环境中,会部署多台配置服务器,用于服务发布、订阅、推送的负载均衡,在多台配置服务器间会进行实时的数据同步,保证服务发布和订阅信息尽快能同步到各服务节点上。

            某种程度上,配置服务器在 HSF 框架中扮演了服务调用调度的指挥官,通过给服务调用者端推送不同的服务提供者列表就可以轻易的调整服务调用的路由,这一特性在淘宝平台实现单元化(即某一客户在访问淘宝时,访问请求一旦路由到某一个淘宝机房后,在淘宝上进行的所有业务的操作均可以在该机房完成,而无需访问其他机房的服务,也是实现异地多活的基础)、异地多活起到了至关重要的作用。

    5、Diamond 服务器

           本质上,Diamond 服务器是一个通用的统一配置管理服务,类似 ZooKeeper,给应用提供统一的配置设置和推送服务,使用场景非常广泛,在阿里巴巴内部有很多的产品在需要进行配置的保存和获取时都会使用 Diamond 服务器。

         在 HSF 服务框架中,则主要承担了服务调用过程中对于服务调用安全管控的规则、服务路由权重、服务 QPS 阀值等配置规则的保存,所有的信息均是持久化保存到了后端的 MySQL 服务器中,在生产环境中,会有多台 Diamond 服务器提供负载均衡的服务。

    使用 Diamond 服务器进行服务相关设置的典型场景如下:

    通过设置白名单(服务调用者所在服务节点 IP 地址)的方式设置某些服务或服务中的方法只能让特定 IP 地址的服务器调用;
    通过用户认证的方式控制服务是否能够调用;
    按照不同的服务器权重设置服务调用者对多个服务提供者服务节点的访问;
    设置某些服务的 QPS 能力上限值,一旦该服务的 QPS 达到该阀值,则拒绝服务的继续调用,这也是实现服务限流的技术实现,在平台进行大促或秒杀场景时,保障平台的稳定的重要屏障。
            通过这样规则的设置,Diamond 除了将这些规则保存在自身的数据库中外,会自动将这些规则推送到相关的服务节点上(实际实现上是服务节点会定时从 Diamond 服务器上同步相关配置信息),使这些规则能立即在服务运行环境中生效。

          如图 3-5 所示是阿里巴巴 HSF 服务框架的工作原理,按照服务注册发布、服务订阅、服务规则推送、最终服务提供者和服务调用者间的服务交互的顺序说明了 HSF 服务框架中每个组件在整个框架中所扮演的角色。

    img

    图 3-5 HSF 服务框架工作原理示意图

    1)服务节点对配置服务器列表的获取。

           服务调用者和服务提供者在随着 Tomcat 容器启动后,会以域名(比如“xxx.tbsite.net”)的方式获取到可用的地址服务器,通过向地址服务器分别发送获取配置服务器和 Diamond 服务器服务 IP 列表请求的方式,在容器启动完成后,就已经在该服务节点上获取到了配置服务器和 Diamond 服务器的 IP 列表信息。整个过程如图 3-5 中的步骤①②。

    2)服务的注册发布。

          作为服务提供者,当获取到配置服务器的服务器列表后,则向配置服务器发送当前应用中包含的服务提供者相关信息(这些信息均是从应用的配置文件中获取到,比如服务的接口类全名、服务版本、所属服务组等信息),联同当前服务器的 IP 地址、服务端口等信息进行服务注册发布,如图 3-5 中的步骤③。这个步骤在每一个有服务提供的应用启动时都会自动执行,比如现在有 5 个提供同一服务的应用启动后,此时在配置服务器上就已经保存了提供这一服务的 5 个服务器相关信息。

    3)服务的订阅。

          当作为服务调用者的应用启动时,同样在完成配置服务器列表的获取后,就进行与配置服务器的交互,发送服务消费者相关信息(同样包含了服务的接口全名,服务版本、所属服务组)到配置服务器进行服务的订阅,此时在配置服务器上会通过服务接口全名+服务版本作为匹配条件在当前配置服务器的内存中进行搜索,一旦获取到对应的服务注册信息,则将对应的服务提供者的服务器组 IP 地址及端口返回给服务调用者所在的应用节点上,此时也就完成了服务调用者端对于它所需要调用的服务提供者服务器列表信息,用于在服务真正交互时使用。服务订阅过程如图 3-5 中的步骤④⑤。

    4)服务规则的推送(如果需要)。

          如果没有上文提到对于服务安全管控、流量控制等需求的时候,对于 Diamond 服务器的使用并不是必需的,在有这样的需求场景时,可通过 Diamond 提供的规则设置界面,可以对指定服务的服务提供者和调用者设置相关的规则,一旦保存规则后,则此规则配置将会在 5 秒内推送到与所设置服务相关的服务节点上。如图 3-5 中的步骤⑥。

    5)服务交互。

           在应用进行业务请求处理过程中,出现了服务调用者对服务提供者的调用时,服务调用者会从已经保存在该应用节点上的服务提供者服务器列表中选择(阿里巴巴内部使用随机模式)其中一台进行服务请求的发送,服务交互期间完全是服务调用者和服务提供者间两台服务器间的,无需通过中间服务器的中转,这就是相比于“中心化” ESB 模式,所有服务交互都需要“中心” ESB 进行服务路由,而当前这种架构称为“去中心化”的主要原因。如图 3-5 中的步骤⑦。

          阿里巴巴的分布式服务框架核心是以服务化的方式构建整个应用体系的同时,要保证在高并发的情况下,服务具备高效交互、高可用性和扩展能力。接下来对于 HSF 框架如何给服务提供以上能力具体加以说明。

    1、HSF 框架采用 Netty + Hession 数据序列化协议实现服务交互

          HSF 框架中采用如今流行的网络通信框架 Netty 加上 Hession 数据序列化协议实现 HSF 服务间的交互,主要考虑点是在大并发量时,服务交互性能达到最佳。这类 RPC 协议采用多路复用的 TCP 长连接方式,在服务提供者和调用者间有多个服务请求同时调用时会共用同一个长连接,即一个连接交替传输不同请求的字节块。它既避免了反复建立连接开销,也避免了连接的等待闲置从而减少了系统连接总数,同时还避免了 TCP 顺序传输中的线头阻塞(head-of-line blocking)问题。

         Hessian 是 HSF 框架中默认使用的数据序列化协议,在数据量较小时性能表现出众,Hessian 的优点是精简高效,同时可以跨语言使用,目前支持 Java, C++, .net, Python, ruby 等语言。另外 Hessian 可以充分利用 Web 容器的成熟功能,在处理大量用户访问时很有优势,在资源分配、线程排队、异常处理等方面都可以由 Web 容器保证。

          HSF 框架同时也支持切换使用 Java 序列化,Hession 相比 JDK 标准的序列化方式(即基于 Serializable 接口的标准序列化),在典型场景中,其序列化时间开销可能缩短 20 倍。虽然 Hessian 不是最快的序列化协议,但它对于复杂业务对象的序列化正确率、准确性相较于最稳定的 Java 序列化并不逊色太多。

    业界还有一些比 Hessian 更快的序列化协议,但它们相对于 Hessian 在复杂场景下的处理能力还是会差一些,所以 Hessian 是在性能和稳定性同时考虑下最优的序列化协议。

    阿里巴巴当时在对多种通信协议和数据序列化组件等测试中,Netty + Hession 的组合在互联网高并发量的场景下,特别是在 TPS 上达到 10w 以上时,性能和效率远比 REST 或者 Web Service 高。

    2、HSF 框架的容错机制

         因为要保证服务的高可用性,所以在生产环境部署中一定会有多个应用实例作为服务提供者提供某一相同服务。

          基于之前所提到的服务框架的运行原理的说明,在进行服务调用时,服务调用者端已经保存了它所需要调用的服务提供者的服务器列表信息(如图 3-6 中为例,则保存了三台服务提供者所在服务器的列表)。

         当采用随机方式获取其中一台进行服务交互时(如图 3-6 步骤①),不管是第一台服务器已经某种故障造成了服务请求无法响应,还是该服务器已经接收了服务请求,在进行服务请求处理过程中出现了服务器故障(比如宕机、网络问题),造成该服务器没有在规定的时间(一般服务调用会设置到期时间)返回服务处理的结果,服务调用者端则会获取到服务调用失败的反馈(如图 3-6 步骤②)。

          在 HSF 服务调用的代码中会立即从剩下的服务提供者服务器列表中选择另外一个服务器再次进行服务请求(如图 3-6 步骤③),这一次这个服务提供者实例正常提供了此次服务的请求(如图 3-6 步骤④),从而保证了在个别服务提供者出现故障时,完全不会影响该服务正常提供服务。

    img

    图 3-6 HSF 服务框架实现服务高可用性原理示意图

          同时,因为配置服务器是采用长连接的方式与服务节点进行网络通讯,一旦发现有服务提供者实例出现故障,配置服务器在秒级就会感知到(如图 3-6 步骤⑤),此时会将出问题这台服务提供者的信息从该服务的服务器列表中删除,并将更新后的服务器列表采用推送的方式同步给与该服务相关的所有服务调用者端(如图 3-6 步骤⑥),这样当下次服务调用者再进行此服务的调用时,就不会因为随机的方式再次对已经停止服务提供的服务器发起服务的调用。

    3、HSF 框架的线性扩展支持

         作为 HSF 框架设计之初,最为重要的一个特性就是服务能力的可扩展性。也就是真正的做到某个服务的业务处理能力能随着服务器资源的增加得到线性的增长。

           其实在传统架构中一直也会强调平台的扩展能力,但均会程度不一的出现服务节点数量到达一定量后,出现阻碍平台服务能力扩展的问题,有的是出现网络传输的瓶颈、也有服务节点接入数量上的限制,前文所描述的 ESB 架构带来的“雪崩”效应也均是这类架构给服务能力的扩展带来影响的原因所在。

           如图 3-7 中所描述的场景,当服务面对较大的服务调用压力或将要面临如天猫双11大促、秒杀等活动前,已有的服务提供者各服务器水位(CPU、内存、IO等)处于比较高的情况或现有服务能力满足不了业务访问量的要求时,则需要通过增加服务节点数量的方式提升该服务的服务处理能力。

    img

    图 3-7 HSF 服务框架对服务能力线性扩展支持1

          此时,只需要通过增加该服务的服务提供者实例(如图 3-8 所示,增加了一个服务),基于 HSF 框架的运行机制,新增加的服务提供者实例一旦应用启动完成后,可在几秒内开始进行服务请求的处理(主要完成服务注册发布、更新后服务列表推送到服务调用者端),从而达到分担其他服务器实例压力的作用,实现服务能力整体水位恢复到正常的状态(如图 3-9)。

    img

    图 3-8 HSF服务框架对服务能力线性扩展支持2

    img

    图 3-9 HSF 服务框架对服务能力线性扩展支持3

       正是基于 HSF 框架这一特性,从而真正实现了只要增加服务实例就能实现该服务能力扩展的目标,目前在阿里巴巴共享服务事业部中多个服务中心在天猫双 11 那天各自所部署的服务实例节点数量均超过 2000,即同一个服务由超过 2000 个服务实例同时提供负载均衡的服务。
     ———————————————— 
    版权声明:本文为CSDN博主「九月木码」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/laomumu1992/article/details/86636757

    展开全文
  • 分布式服务框架原理与实践(Dubbo,HSF)_李林锋著
  • hsf

    2019-03-27 17:26:00
    hsf 参考文章: 1.HSF源码剖析 2.Http和RPC区别 3.分布式服务框架HSF 4.高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架 5.HSF的原理分析 6.阿里云 ...
    展开全文
  • HSF应用开发

    2019-11-22 19:18:02
    HSF的缺点是其要使用指定的JBoss等容器,还需要在JBoss等容器中加入sar包扩展,对用户运行环境的侵入性大,如果你要运行在Weblogic或Websphere等其它容器上,需要自行扩展容器以兼容HSF的ClassLoader加载。...
  • HSF源码剖析

    2018-08-16 12:00:16
    HSF是一个分布式的远程服务调用框架,其实我更喜欢把分布式几个字去掉,因为HSF本身并不是一个单独的服务(指一个进程),他是附属在你的应用里的一个组件,一个RPC组件(远程过程调用——Remote Procedure Call,是...
  • HSF 服务是什么

    2021-04-07 22:01:30
    HSF简介(摘自《企业IT架构转型之道》) HSF 概述
  • HSF学习总结

    2018-10-12 19:57:00
    HSF其实是一个RPC框架,RPC是Remote Procedure Call,就是远程服务调用. 这个功能为什么要写个框架而不是十几行代码呢,因为在分布式场景下并不是这种点对点通讯的模式。 rpc要素:where how 地址:注册中心Config...
  • summercool-hsf Automatically exported from code.google.com/p/summercool-hsf 1.目前为止性能最高的RPC远程通讯框架 2.也可以做为手机长连接的Server,经测试已经达到了50W以上的性能长连接 (需调整linux内核...
  • 谈谈HSF在Spring中的应用HSF简介HSF的应用场景什么是二方包服务提供方怎么提供服务?服务调用方怎么订阅服务? HSF简介 HSF即高可用服务框架(High-speed Service Framework),是在阿里巴巴广泛使用的分布式RPC...
  • 您可以使用 EDAS-SDK 开发 HSF 应用,实现服务注册发现,还可以实现隐式传参、异步调用、泛化调用、调用链路 Filter 扩展等高级 HSF 特性,以及 HSF 单元测试。 快速开始 介绍如何使用 EDAS-SDK 快速开发 HSF ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,107
精华内容 2,842
关键字:

hsf