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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
简介:

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

综述

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

2.1、HSF简介

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

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

服务治理

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

2.2、HSF双11准备与优化

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

  • 精简日志输出

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

  • 流量限制

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

  • 解决应用依赖冲突

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

小结

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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
12天前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
44 1
|
3月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
11月前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
173 1
|
消息中间件 存储 RocketMQ
消息中间件-RocketMQ技术(二)
消息中间件-RocketMQ技术(二)
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
中间件 数据处理 Apache
|
JSON 中间件 数据处理
实践出真知:通过项目学习Python Web框架的路由与中间件设计
【7月更文挑战第19天】探索Python Web开发,掌握Flask或Django的关键在于理解路由和中间件。路由连接URL与功能,如Flask中@app.route()定义请求响应路径。中间件在请求处理前后执行,提供扩展功能,如日志、认证。通过实践项目,不仅学习理论,还能提升构建高效Web应用的能力。示例代码展示路由定义及模拟中间件行为,强调动手实践的重要性。
154 1
|
设计模式 中间件 测试技术
PHP中的中间件模式解析与实践
【7月更文挑战第11天】在现代Web开发中,中间件模式已成为设计高效、可维护应用程序的关键。本文深入探讨了PHP环境下中间件模式的实现方法,并提供了一个实际示例来演示如何利用中间件优化请求处理流程。
116 1
|
存储 中间件 PHP
Python编程入门:从零到一的代码实践深入理解 PHP 中的中间件模式
【8月更文挑战第28天】本文旨在通过浅显易懂的方式,向初学者介绍Python编程的基础知识,并结合具体代码示例,带领读者一步步实现从零基础到能够独立编写简单程序的转变。文章将围绕Python语言的核心概念进行讲解,并通过实例展示如何应用这些概念解决实际问题。无论你是编程新手还是希望扩展技能的专业人士,这篇文章都将为你打开编程世界的大门。 【8月更文挑战第28天】在PHP的世界中,设计模式是构建可维护和可扩展软件的重要工具。本文将通过浅显易懂的语言和生动的比喻,带领读者深入理解中间件模式如何在PHP应用中发挥魔力,实现请求处理的高效管理。我们将一步步揭开中间件的神秘面纱,从它的定义、工作原理到
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
121 0

热门文章

最新文章