文章目录

  • HSF(服务框架)
    • 简介
    • 架构设计
      • Provider——服务提供者
      • Consumer——服务消费者
      • ConfigServer——配置服务器
      • Diamond——持久化配置中心
      • addressServer——地址服务
      • 元数据存储

HSF(服务框架)

文章地址

简介

高速服务框架 HSF (High-speed Service Framework),是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。

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

架构设计

HSF 纯客户端架构的 RPC 框架,本身是没有服务端集群的,所有的 HSF 服务调用都是服务消费方(Consumer)与服务提供方(Provider)点对点进行的。然而,为了实现整套分布式服务体系,HSF 还包含了其他组件,完整的组件如下:

Provider——服务提供者

通常是某个业务系统,提供相关的业务服务,一般都是个服务集群。业务系统初期使用HSF,通过引入SDK的方式。后期阿里定制化改造了容器(tomcat/docker),通过配置完成HSF的接入使用,作为架构中的服务提供方。对业务系统本身(war/jar)不造成侵入性。

Consumer——服务消费者

通常也是某个业务系统集群,跟服务提供者非常类型,只是服务、消费角度区别。

ConfigServer——配置服务器

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

  • 注册与订阅

    服务注册——在服务提供方启动时,完成该服务的注册——上报当前服务的ip:port、服务类名方法名、版本号、分组等信息。

    服务订阅——在服务消费方启动时,完成某些服务的订阅——通过订阅的服务标识(类名+方法名+版本号等),在内存中查找相关服务,一旦找到则将服务提供者的IP端口等信息推送给当前服务消费方,以便消费。

  • 长连接与内存级
    服务提供方与服务消费方均与配置服务器保持长连接,一旦服务提供方发生变化,会立即被通知,更新内存中的列表数据,并同步给订阅该服务的服务消费方。

Diamond——持久化配置中心

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

当需要时,用户通过在界面上设计规则,Diamond会快速的将新的规则推送给相关的服务提供方

addressServer——地址服务

地址服务器的职责是保存上文的ConfigServer与Diamond服务器的地址列表。在consumer、provider启动时,会首先以域名访问的方式访问地址服务器,从地址服务器获取到ConfigServer与Diamond服务器的地址列表信息,以便访问。

元数据存储

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

完成初始化后,服务调用者内保存了相关的服务信息,通过内部设置的调用方式(如随机访问一台,权重等)可以进行点对点的调用。
其内部通过NIO多路复用(Netty)+Hessian序列化实现RPC调用,使用Hessian主要是压测表现出稳定性以及高效的综合特性。

http://gg.gg/1281kt 关注威信 praticeinaction 一起交流

阿里HSF(服务框架)相关推荐

  1. 阿里分布式服务框架Dubbo的架构总结

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  2. node.js——阿里企业级服务框架Egg搭建

    egg是阿里开源的企业级框架,主要设计理念为平衡团队之间的技术差异,专注于提供 Web 开发的核心功能和一套灵活可扩展的插件机制.通过 Egg,团队的架构师和技术负责人可以非常容易地基于自身的技术架构 ...

  3. dubbo 分布式服务框架 介绍

    Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点.Dubbo自2011年开源后, ...

  4. 分布式服务框架HSF学习 Dubbo VS HSF

    HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础: 1.标准Service方式的RPC   1).Service定义:基于OSGI的Service定义方式 ...

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

    一.简述 HSF(High-speed Service Framework),是在阿里巴巴内部广泛使用的分布式 RPC 服务框架. HSF 连通不同的业务系统,解耦系统间的实现依赖.HSF 从分布式应 ...

  6. hsf 架构_分布式服务框架HSF

    最近在读阿里巴巴中台战略思想与架构这本书,so和大家分享一些我get到的东东. HSF是阿里巴巴内部的分布式服务框架,这个大家都很熟悉了,先上一张HSF的工作原理图: 这个图说明了HSF框架中每个组件 ...

  7. 分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?

    最近,开源社区发生了一件大事--使用最广的开源服务框架之一Dubbo低调重启维护,并且3个月连续发布了3个维护版本.这3个维护版本不仅解决了社区关心的一系列问题和需求,还让整个社区的活跃度得到了大幅提 ...

  8. 分布式服务框架HSF学习

    HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础: 1.标准Service方式的RPC   1).Service定义:基于OSGI的Service定义方式 ...

  9. 服务框架HSF分析之一容器启动

    大家平时都在用这个服务框架.简单阅读了下代码,了解其原理可以方便解决一些常见hsf的问题.限于篇幅,整个分析将分几个系列发布.第一篇将简单介绍Hsf的启动和各组件之间关系. 一.  Hsf总体架构 这 ...

  10. 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)

    目录 系列 更换成阿里云仓库 开通阿里云镜像服务 创建仓库 本地k8s切换成阿里云的镜像仓库 测试阿里云镜像 准备简单的微服务 eureka 应用配置 k8s配置: demo-a 应用配置 k8s配置 ...

最新文章

  1. 了解大数据的特点、来源与数据呈现方式
  2. 白话Elasticsearch64-zen discovery集群发现机制
  3. 第十一届河南省赛--A计划日
  4. while循环练习:
  5. 回文字符串—回文子串—中心扩散法
  6. 项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录
  7. 系统仿真平台SkyEye可替代国外Matlab/Sumlink等同类软件
  8. python requests 乱码_python3 requests 抓取乱码问题
  9. ant编译mysql驱动
  10. Java:集合,Array、Collection(List/Set/Queue)、Map的遍历,比如:ArrayList,LinkedList,HashSet,HashMap...
  11. 【JavaScript知识点五】javascript 流程语句
  12. SSH三大框架的整合(实例)
  13. 走进音视频的世界——新一代开源编解码器AV1
  14. 软件工程 选课系统的uml类图_软件工程课程设计-基于UML的学生选课系统的软件工程课程设计 精品推荐...
  15. linux中vim删除某个符号,在 Vim 中,删除 ^@ 符号的几种方法
  16. macbook/macos输入法乱跳
  17. 如何提高计算机打字,如何练电脑打字速度,教你如何科学提高打字速度
  18. 4.1图像分割之区域生长法
  19. 怎么录制视频声音,什么录音软件好用
  20. Android 启动其他应用的Activity或Service失败解决

热门文章

  1. Mac磁盘如何分区?教你Mac系统磁盘自由分区教程!
  2. 基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA
  3. button3 电脑上mouse,鼠标侧键设置工具(X-Mouse Button Control)
  4. c++ fbxsdk安装配置_Linux上安装软件 - coydone
  5. excel中自定义数据格式后,如何将其实际显示为自定义后的数据,不受原格式数据的限制
  6. IntelliJ IDEA 2017完全破解方法
  7. 利用宝塔面板部署SSM项目
  8. 【电子发票】电子发票OFD如何打开?OFD版式阅读器
  9. C++题解:矩阵快速幂 求 斐波那契数列
  10. 如何建立企业员工满意度测评指标体系