分布式服务框架——分布式服务的组织者

综述

06/07年以后,随着淘宝用户数量和网站流量的增长,应用系统的数量和复杂程度也急剧增加。诸多前台系统都需要使用一些公共的业务逻辑,这些业务逻辑通常具有共性的东西,比如,获取用户信息或查询宝贝详情等。如果将这些业务逻辑在各个系统内部都实现一遍,则大大增加了开发成本和后期维护成本。于是,像服务框架这类的中间件产品就应运而生。服务框架帮助各个系统将那些相似的业务逻辑抽离出来,单独部署,而前台系统在需要调用这些业务逻辑时,只需要通过服务框架远程调用即可,大大节约了前端系统的开发成本,也提高了系统的可维护性和可扩展性。

2.1、HSF简介

HSF是淘宝的分布式服务框架。服务框架从分布式应用层面以及统一的发布/调用方式层面为业务系统提供支持,从而可以让他们很容易地开发分布式应用并提供和使用公用功能模块,而不用考虑分布式领域中的各种细节技术,例如远程通讯、性能损耗、调用的透明化、同步/异步调用方式的实现等等问题。

服务框架的实现有三种角色:服务提供者、服务消费者和注册中心。服务提供者在服务可用的前提下,将地址注册到注册中心。服务消费者启动时,会订阅注册中心的相关服务,获取服务地址,通过一定的负载均衡策略调用服务。由于注册中心这个软负载集群的存在,服务提供者和服务消费者可以任意扩容和下线,注册中心可以实时将提供者地址的变更推送给消费者。

服务治理

服务治理是服务框架的核心功能。所谓服务治理,是指服务的提供方和消费方达成一致的约定,保证服务的高质量。服务治理功能,可以解决将某些特定流量引入某一批机器,以及限制某些非法消费者的恶意访问,和在提供者处理量达到一定程度时,拒绝接受新的请求等功能。

2.2、HSF双11准备与优化

在双11中,HSF主要通过精简日志输出、流量限制、解决应用依赖冲突等措施,保证了服务的稳定可靠。

  • 精简日志输出

消费者在调用过程中,容易因为网络问题或服务提供方等原因引起调用失败。如果没有足够的日志,有时候排查问题会很困难。因此,服务框架在生产环境使用时,往往将日志级别设置比较低或打印较多日志,记录下足够多的信息。这在平时没有问题,而且在遇到问题时也有足够的信息来排查问题。但是日志打印本身耗费性能,在双11这种高峰调用期间,尽量要减少日志的输出。为了达到灵活控制日志输出的目标,服务框架优化了日志打印,精简了日志输出。

  • 流量限制

虽然很多应用设置了流量限制等规则,但平时的流量远远低于阈值,只有在双11这种流量高峰,才会起到效果。在双11之前,我们检查了线上所有的限流规则,发现有不少配置错误或者配置不合理的情况,其中有些是由于HSF对于一些默认参数设置不合理造成的。通过性能测试,将不合理的规则和参数进行改正。

  • 解决应用依赖冲突

由于淘宝业务发展迅速,前端应用需要依赖越来越多的其他系统,这很容易造成应用依赖的冲突。服务框架引入了Pandora容器,对应用进行了依赖的隔离,防止应用和服务框架的依赖相互冲突。

小结

HSF已经经受了淘宝各种复杂、高并发的调用场景。今年来,HSF在易用性、服务治理和性能上有了很大的改进,是很稳定的分布式服务框架。作为淘宝中间件团队最早诞生的中间件框架之一,HSF将在未来继续发挥其巨大的作用。

中间件技术及双十一实践·服务框架篇相关推荐

  1. dubbo k8s 服务发现_工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇

    作者 | 张远征来源|阿里巴巴云原生公众号 导读:Dubbo 作为分布式微服务框架,众多公司在实践中基于 Dubbo 进行分布式系统架构.重启开源后,我们不仅看到 Dubbo 3.0 最新的 Road ...

  2. 大三后端暑期实习面经总结——SSM微服务框架篇

    博主现在大三在读,从三月开始找暑期实习,暑假准备去tx实习啦!总结下了很多面试真题,希望能帮助正在找工作的大家!相关参考都会标注原文链接,尊重原创! 目录 1. mvc.mvp.mvvm MVC架构 ...

  3. 高德SD地图数据生产自动化技术的路线与实践(道路篇)

    一.背景及现状 近些年,国内道路交通及相关设施的基础建设日新月异.广大用户日常出行需求旺盛,对所使用到的电子地图产品的数据质量和现势性提出了更高的要求.传统的地图数据采集和生产过程,即通过采集设备实地 ...

  4. Qt 框架性开发实践——基础框架篇

    基于 Qt 的组件合成框架https://blog.csdn.net/luansxx/article/details/120668676 基于 Qt 的消息总线https://blog.csdn.ne ...

  5. 你值得拥有!-阿里P8架构师荣耀典藏:Java多线程与Socket实战微服务框架笔记

    先赞再看,谢谢关注 小编分享的这份<Java多线程与Socket:实战微服务框架>,综合运用Java多线程.Socket.动态代理等技术来构建微服务框架 内容结构 本书从实战角度出发,首先 ...

  6. SpringCloud 微服务框架

    单体架构:将业务全部功能集中到一个项目中,打成一个war包存储,部署在一台服务器中,只有一个数据库 优点 :架构简单,部署成本低.适合小型项目 问题:高并发性能问题,开发时代码耦合问题,部署升级时停服 ...

  7. Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

    作者|泮圣伟.董建凯 服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势. Dubbo3. ...

  8. 阿里P9资深架构师:支付宝和蚂蚁花呗的技术架构及双十一实践

    每年"双11"都是一场电商盛会,消费者狂欢日.今年双11的意义尤为重大,它已经发展成为全世界电商和消费者都参与进来的盛宴.而对技术人员来说,双十一无疑已经成为一场大考,考量的角度是 ...

  9. 阿里资深架构师——支付宝和蚂蚁花呗的技术架构及双十一实践

    2019独角兽企业重金招聘Python工程师标准>>> 每年"双11"都是一场电商盛会,消费者狂欢日.今年双11的意义尤为重大,它已经发展成为全世界电商和消费者都 ...

最新文章

  1. 【带你重拾Redis】Redis事务
  2. 第十七届全国大学生智能车竞赛:英飞凌芯片第二批申请开放
  3. all index range ref eq_ref const system 索引type说明
  4. VTK:vtkSelectPolyData选择多数据用法实战
  5. boost::ratio_sign相关的测试程序
  6. boost::callable_traits的has_void_return的测试程序
  7. 数据结构(一)之链表
  8. 【jQuery】学习整理(一) 认识jQuery
  9. CSS3 常用选择器
  10. java 内部类 加载_Java 内部类基础介绍
  11. java完全自学手册 pdf_fortran教程下载
  12. JspStudy套件在部署java项目时,如何去掉项目名进行访问网址问题
  13. Nansen:你想知道的关于 NFT 的一切
  14. python精通 epub_跟老齐学Python:从入门到精通[azw3+epub+mobi][8.59MB]
  15. Flink Watermark机制
  16. linux压缩文件命令_Linux 系统压缩和解压 zip 格式文件
  17. Windows 内存映射
  18. 微软2016校园招聘4月在线笔试 总结
  19. 一名合格的大数据测试工程师,需要掌握哪些基本知识
  20. 登录学习通报错:浏览器没有开启cookie功能

热门文章

  1. Java线程池理解及用法
  2. FZU 1914 Funny Positive Sequence
  3. 使用VisualSVN Server自动发布站点
  4. CMD下查询Mysql中文乱码的解决方法
  5. 笔试题??智商题??(一)
  6. iOS 根据日期判断星座源代码
  7. Wing IDE 4.1破解教程
  8. 转:Excel导出问题(导出时不去掉前面的0)
  9. MFC-Tab Control控件使用
  10. 一种新的图像清晰度评价函数,数字图像清晰度评价函数的研究与改进