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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

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

综述

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

2.1、HSF简介

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

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

服务治理

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

2.2、HSF双11准备与优化

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

  • 精简日志输出

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

  • 流量限制

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

  • 解决应用依赖冲突

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

小结

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
16天前
|
消息中间件 存储 RocketMQ
消息中间件-RocketMQ技术(二)
消息中间件-RocketMQ技术(二)
|
16天前
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
3月前
|
中间件 数据处理 Apache
|
2天前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
12 1
|
2月前
|
存储 中间件 PHP
Python编程入门:从零到一的代码实践深入理解 PHP 中的中间件模式
【8月更文挑战第28天】本文旨在通过浅显易懂的方式,向初学者介绍Python编程的基础知识,并结合具体代码示例,带领读者一步步实现从零基础到能够独立编写简单程序的转变。文章将围绕Python语言的核心概念进行讲解,并通过实例展示如何应用这些概念解决实际问题。无论你是编程新手还是希望扩展技能的专业人士,这篇文章都将为你打开编程世界的大门。 【8月更文挑战第28天】在PHP的世界中,设计模式是构建可维护和可扩展软件的重要工具。本文将通过浅显易懂的语言和生动的比喻,带领读者深入理解中间件模式如何在PHP应用中发挥魔力,实现请求处理的高效管理。我们将一步步揭开中间件的神秘面纱,从它的定义、工作原理到
|
3月前
|
JSON 中间件 数据处理
实践出真知:通过项目学习Python Web框架的路由与中间件设计
【7月更文挑战第19天】探索Python Web开发,掌握Flask或Django的关键在于理解路由和中间件。路由连接URL与功能,如Flask中@app.route()定义请求响应路径。中间件在请求处理前后执行,提供扩展功能,如日志、认证。通过实践项目,不仅学习理论,还能提升构建高效Web应用的能力。示例代码展示路由定义及模拟中间件行为,强调动手实践的重要性。
50 1
|
3月前
|
设计模式 中间件 测试技术
PHP中的中间件模式解析与实践
【7月更文挑战第11天】在现代Web开发中,中间件模式已成为设计高效、可维护应用程序的关键。本文深入探讨了PHP环境下中间件模式的实现方法,并提供了一个实际示例来演示如何利用中间件优化请求处理流程。
33 1
|
3月前
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
22 0
|
3月前
|
缓存 监控 安全
中间件在Python Web框架中的角色与应用场景
【7月更文挑战第21天】中间件在Python Web开发中作为服务器与应用间的软件层,拦截、处理请求和响应,无需改动应用代码。它扩展框架功能,复用跨应用逻辑,加强安全,优化性能。如Django中间件处理请求/响应,Flask通过WSGI中间件实现类似功能,两者均在不触及核心代码前提下,灵活增强应用行为,是现代Web开发关键组件。
42 0
|
3月前
|
中间件 数据库 开发者
解析Python Web框架的四大支柱:模板、ORM、中间件与路由
【7月更文挑战第20天】Python Web框架如Django、Flask、FastAPI的核心包括模板(如Django的DTL和Flask的Jinja2)、ORM(Django的内置ORM与Flask的SQLAlchemy)、中间件(Django的全局中间件与Flask的装饰器实现)和路由(Django的urls.py配置与Flask的@app.route()装饰器)。这些组件提升了代码组织和数据库操作的便捷性,确保了Web应用的稳定性和可扩展性。
54 0