分布式服务框架HSF
最近在读阿里巴巴中台战略思想与架构这本书,so和大家分享一些我get到的东东。
HSF是阿里巴巴内部的分布式服务框架,这个大家都很熟悉了,先上一张HSF的工作原理图:
这个图说明了HSF框架中每个组件在整个框架中扮演的角色,下面分别介绍下:
(1).服务节点对配置服务器列表的获取。伴随着web容器的启动,服务提供者和服务调用者向地址服务器获取配置服务器和Diamond服务器的ip列表信息,过程见上图的1、2步骤。
(2).服务的注册发布。服务提供者获取配置服务器列表后,将服务的相关信息(接口类全名、服务版本等)包含当前服务器的ip地址、端口等信息注册到配置服务器,即上图的3步骤。
(3).服务的订阅。当服务调用者的应用启动并获取配置服务器列表后,发送服务消费的相关信息(服务接口全名、服务版本等)到配置服务器订阅,然后配置服务器会通过“服务接口全名+服务版本”作为条件在内存中搜索,一旦获取到服务注册信息,就将对应的服务提供者的ip和端口发送到服务调用者的节点上,即上图的4 、5步骤。
(4).服务规则推送(如果需要)。如果对服务安全管控和流量控制有需求时,可以通过Diamond服务器提供规则设置界面,对指定的服务提供者和服务调用者设置相关规则,规则保存后,会在5秒内推送到与设置相关的服务器节点上。
(5).服务交互。在应用进行业务请求处理过程中,出现服务调用者对服务提供者的调用时,服务调用者会从已经保存在该应用节点上的服务提供者服务器列表里选择(阿里巴巴内部使用随机模式)其中一台服务进行请求的发送,服务交互期间是调用者和提供者两台服务器间的调用,无需通过中间别的服务器,这就是称为“去中心化”的主要原因,即上图中的步骤7
接下来具体介绍HSF框架的高效交互、高可用性和扩展能力。
1.HSF框架的采用Netty+Hession数据序列化协议实现服务交互
HSF采用网络通信框架Netty+Hession数据序列化协议实现服务间的调用,主要考虑点在大并发量时,服务的交互性达到最佳。这类RPC协议采用多路复用的TCP长连接方式,即在服务调用者和服务提供者之间有多个服务请求同时调用时会共用一个长连接,一个长连接交替传输不同请求的字节块。它既避免了反复建立连接开销,也避免了连接的等待闲置从而减少了系统的连接总数,同时还避免了TCP顺序传输中的线头阻塞问题。
2.HSF框架的容错机制
为了保证服务的高可用性,在生产环境中相同的服务往往会有很多个应用实例来提供服务,在进行服务调用时,服务调用者端已经保存了它需要调用的服务的服务器列表信。假如有三台服务器提供了相同的服务,当采用随机方式获取其中一台进行服务交互时,不论这台服务器已经发生故障无法回应请求,还是该服务器已经接收了请求,在服务请求处理过程中出现了服务器故障(宕机、网络问题)造成该服务器没有在规定的时间(一般服务调用会设置超时时间)内返回处理结果,则服务调用端会获取服务调用失败的反馈,会立即从剩下的两台机器中选择一台进行服务调用。从而保证了个别服务提供者出现问题,完全不影响该服务提供正常的服务。因为配置服务器是采用长连接的方式与服务器节点进行通信,一旦发现有服务实例出现故障,此时会将这台服务器提供者的信息从服务器的服务列表中删除,然后将更新后的服务列表以推送的方式同步给予该服务相关的所有服务调用者端,这样当下次进行服务调用时,就不会因为随机而对已经停止提供服务的服务器发送请求。
3.HSF框架的线性扩展支持
HSF最为重要的一个特性就是服务能力的可扩展性,真正做到某个服务的业务处理能力随着服务器资源的增加得到线性的增长。基于HSF框架的运行机制,面对超级大的服务调用压力时,新增的服务提供实例(即增加一台服务器)可在几秒内(完成服务的注册发布、更新后的服务列表推送到服务调用端)开始进行服务请求处理,达到分担其他服务器实例压力的作用,实现服务能力整体水位恢复到正常的状态。据说双十一的时候阿里的多个服务中心所部署的服务实例节点数量超过2000个,即同一个服务由超过2000个服务实例同时提供负载均衡的服务。w(゚Д゚)ww(゚Д゚)w
分布式服务框架HSF的更多相关文章
- 阿里巴巴分布式服务框架HSF
HSF称之为高速服务框架HSF(High-speed Service Framework),是在阿里巴巴广泛使用的分布式RPC服务框架. HSF连通不同的业务系统,解耦系统间的实现依赖.HSF从分布式 ...
- 分布式服务框架HSF学习
HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础:1.标准Service方式的RPC 1).Service定义:基于OSGI的Service定义方式 ...
- 分布式服务框架选型:面对Dubbo,阿里巴巴为什么选择了HSF?
转载:http://www.sohu.com/a/141490021_268033 阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被 ...
- 003-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-分布式服务框架的选择
3.1.淘宝平台“服务化”历程 大约2007年,淘宝500人团队,维护一个war包,200多个功能模块. 1)项目团队协同成本高,业务响应越来越慢 2)应用复杂度超出人的认知负载. 3)错误难于隔离[ ...
- 阿里巴巴分布式服务框架 Dubbo 介绍
Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点.Dubbo自2011年开源后, ...
- 【转】阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访
原文链接:http://www.iteye.com/magazines/103 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ ...
- 微软开源 WCF 分布式服务框架,并入 .NET 基金会项目
微软北京时间2015.5.20 在其 .NET Foundation GitHub 开源项目页中开放了 WCF 分布式服务框架的代码.WCF突然之间成为一个热门话题,在各大网站上都有不同的报道:dot ...
- 使用dubbo分布式服务框架发布服务及消费服务
什么是DUBBO DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案. 准备工作 安装zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服 ...
- 阿里巴巴分布式服务框架dubbo学习笔记
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的 ...
随机推荐
- 解析Visual C# 7.2中的private protected访问修饰符
去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private pro ...
- Excel IF函数怎么用
本例主要介绍Excel表格中IF函数的用法,包括基本用法.单条件.多条件表达及在数组函数中的用法和在数组函数中怎么表达多条件和单条件. 工具/原料 Excel IF函数语法介绍: 1 IF函数 ...
- VM及centOS系统安装
虚拟机安装linux及配置
- QT 创建一个具有复选功能的下拉列表控件
最近研究了好多东西,前两天突然想做一个具有复选功能的下拉列表框.然后在网上"学习"了很久之后,终于发现了一个可以用的,特地发出来记录一下. 一.第一步肯定是先创建一个PROJECT ...
- generator生成器iterator遍历器和yield
generator方法()返回一个iterator 使用generator时永远先去调用generator()方法 for of对iterator的调用过程(babel参照) 1,_iterator. ...
- 1-3 Spring Bean 的属性值设置
详见http://www.cnblogs.com/chenssy/archive/2013/03/17/2964593.html 1.注入普通的属性值 <bean id="Cat&qu ...
- Logback.xml 给变量指定默认值
随着通用日志组件转入 Slf4j,logback 也变成了默认的日志实现,像 log4j 一样,logback.xml 中也可以使用系统属性或环境变量,如 ${catalina.home}.在 log ...
- RabbitMQ第四篇:Spring集成RabbitMQ
前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> ...
- 实现Windows程序的数据绑定
1.创建DataSet对象 语法: DataSet 数据集对象 =new DataSet("数据集的名称字符串"); 语法中的参数是数据集的名称字符串,可以有,也可以没有.如 ...
- oracle、导出、导入
一.数据库导入: No1.查询所有表中那些是空表. select table_name from user_tables where NUM_ROWS=0; No2.拼接字符串生成SQL执行语句. s ...