MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先

本次 MSE 治理中心在限流降级、数据库治理及同 AZ 优先方面进行了重磅升级,对微服务治理的弹性、依赖中间件的稳定性及流量调度的性能进行全面增强,致力于打造云原生时代的微服务治理平台。

前情回顾

在介绍升级能力之前,先简要回顾 MSE 产品的核心能力,分为开发态、测试态及运行态,其中在服务治理中较为常用的功能包括无损上下线、全链路灰度以及日常环境隔离三大功能。

  • 无损上下线方面

支持小流量服务预热,避免新启动应用被流量击垮;而预热模型支持动态调节,可满足复杂场景需求;并且,预热过程支持关联 Kubernetes 检查。

  • 全链路灰度方面

可进行泳道设置,支持网关、RPC、RocketMQ 等;具备流量一键动态切流能力,可通过监控查看切流效果;此外,提供了端到端的稳定基线环境,方便用户快速、安全地验证新版本。

  • 日常环境隔离功能

流量在 feature 环境内流转,实现高效的敏捷开发;各环境逻辑隔离,只需要维护一套基线环境,大幅降低成本;在 IDEA 中使用 Cloud Toolkit 的端云互联,可将本机启动的应用接入到开发环境,降低开发调测成本。

下面介绍流量治理、数据库治理及同 AZ 优先解决的问题和具体方案。

限流降级全面升级为流量治理

对应流量治理模型在流量防护方面形成可拓展闭环,围绕系统线上环境可能出现的各种问题,进行有效治理。模型始于‘故障识别’,发现不同层次的问题,如接口层的状态码与异常类型、操作系统层的指标异常;在识别出问题后,发出异常告警,方便用户进行针对性的流量治理,如进行自适应限流防护或场景化限流防护;防护规则设置后,系统便按照预设的阈值与防护手段保护系统,而系统防护的效果可通过监控查看,另一方面,也可通过监控反向审视流量防护规则设置的合理性,及时调整。

对于首次接入无历史数据参考的情况,可通过系统压测的方式,结合业务场景设置压测参数,为线上可能出现的问题配置流量治理规则,做好防护策略。

单机流量防护

首先看流量控制,其原理是监控应用或服务流量的 QPS 指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。本产品提供了提供单机限流、集群流控、分钟小时限流、关联限流等多种限流方式,支持滑动窗口、令牌桶、漏斗桶多种限流算法。

对于并发控制,当强依赖的方法或接口出现不稳定的时候,可以通过配置并发线程数来限制不稳定的强依赖并发数,起到隔离异常的效果。若运行该请求的响应时间变长,会导致线程的并发数变大。当并发数超过阈值以后,AHAS 将拒绝多余的请求,直到堆积的任务完成,并发线程数变少。达到将异常隔离,减小不稳定性的效果。

在系统保护方面,支持自适应流控或手动设置系统规则,自适应流控是根据系统的 CPU 使用率自动动态地调整应用程序的入口流量;系统规则是从整体维度手动设置规则,对应用入口流量进行控制。目的都是为了让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。

熔断防护可以监控应用内部或者下游依赖的响应时间或异常比例,当达到指定的阈值时立即降低下游依赖的优先级。在指定的时间内,系统不会调用该不稳定的资源,避免应用受到影响,从而保障应用高可用性。当指定时间过后,再重新恢复对该资源的调用。

主动降级防护可以指定对某些接口进行降级,被降级的接口会触发自定义的降级行为(如返回指定内容)而不会执行原有的逻辑。

热点防护通过分析资源调用过程中的调用次数较高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。

最后,当系统遇到一些非致命性的错误(如偶现的超时等)时,可以通过自动重试的方式来避免系统最终失败。

集群流量防护

其中集群流量防护用于解决单机流控存在流量不均匀、机器数频繁变动以及均摊阈值太小的情况导致限流效果不佳的问题,集群流控可以精确地控制某个服务接口在整个集群的实时调用总量。较适用于以下场景:

1. 服务调用流量不均,需要缓解的情况

流量到每台服务实例不均衡导致单机限流不够精确(总量上“提前限流”),从而无法精确控制总量

2. 集群小流量精确场景

对集群总流量限制比较小的情况,单机限流将失效(比如某个接口每秒总量不超过 10QPS,但机器数为 50 台,即便单机阈值设为 1,仍会超出阈值)

3. 业务集群流控

对于有业务含义的分钟小时级流量控制,可保护下游系统不被(如网关层限制每个用户每分钟调用某个 API 不能超过多少次)压垮。

集群流控具有场景丰富、使用成本低以及全自动管控等优势:

场景丰富:全面覆盖从网关入口流量精确防护、Web/RPC 服务调用精确流控到分钟小时级业务维度流量控制的场景

低使用成本:无需特殊接入方式,开箱即用

全自动管控:自动化管控与分配 server 资源,自动化运维能力保障可用性,无需用户关注资源准备与分配细节,只需关注业务

网关流量防护

网关流量防护则用于精确控制某个或某组 API 的流量,起到提前保护的作用,使多余流量不会打到后端系统。如果按照单机维度配置,一方面网关机器数变化难以感知,另一方面网关流量不均可能导致限流效果不佳。

网关防护具备四点核心能力:

1. API/Host 维度的实时监控与流量控制

2. 动态规则配置,实时生效

3. 集群流量控制,精确控制 API 调用总量

4. 请求参数/header 维度的流控、熔断

全链路&多语言

MSE 升级后的流量治理可应用于微服务的全链路,比如在流量入口层,可通过网关方式接入、在微服务层面不仅可保护微服务自身,也可以保护微服务依赖的中间件、如缓存、数据库等三方依赖、若您通过 ACK 或者 Agent 方式接入,则无需改造一行代码即可轻松接入,若您有高阶流量治理的需求,如自定义埋点,可通过 SDK 方式接入。

全新的数据库治理能力

典型治理场景

  • 某系统对外提供某查询接口,SQL 语句涉及多表 join,某些情况下会触发慢查询,耗时长达 30s,最终导致 DB 连接池/Tomcat 线程池满,应用整体不可用。
  • 应用刚启动,由于数据库 Druid 连接池还在初始化中,但是此时已经大量请求进入,迅速导致 Dubbo 的线程池满,许多现场卡在初始化数据库连接的过程中,导致业务请求大量报错。
  • 全链路灰度场景中,由于新的应用版本改了数据库表的内容,灰度流量导致线上数据库的数据错乱,业务同学连夜手动订正线上数据。
  • 在项目初期没有对 SQL 的性能做好考量,随着业务的发展,用户量级的增加,线上遗留老接口的 SQL 逐渐成为性能瓶颈,因此需要有有效的 SQL 洞察能力帮助我们发现遗留的 SQL,并及时进行性能优化。
  • SQL 语句处理时间比较长导致线上业务接口出现大量的慢调用,需要快速定位有问题的慢 SQL,并且通过一定的治理手段进行隔离,将业务快速恢复。因此在微服务访问数据层时,实时的 SQL 洞察能力可以帮助我们快速定位慢的 SQL 调用。

其实针对大多数的后端应用来讲,系统的瓶颈主要受限于数据库,当然复杂度的业务肯定也离不开数据库的操作。因此数据库问题,也是优先级最高的工作,数据库治的理也是微服务治理中必不可少的一环。

核心解决方案

  • 慢 SQL 治理

慢 SQL 是比较致命的影响系统稳定性的因素之一,系统中出现慢 SQL 可能会导致 CPU、负载异常和系统资源耗尽等情况。严重的慢 SQL 发生后可能会拖垮整个数据库,对线上业务产生阻断性的风险。线上生产环境出现慢 SQL 可能原因如下:

  • 网络速度慢、内存不足、I/O 吞吐量小、磁盘空间被占满等硬件原因。
  • 没有索引或者索引失效。
  • 系统数据过多。
  • 在项目初期没有对 SQL 的性能做好考量。
  • 连接池治理

连接池治理是数据库治理中非常重要的一个环节,通过一些链接池的实时指标,我们可以有效地提前识别系统中存在的风险,以下是一些常见的连接池治理的场景。

1. 提前建连

在应用发布或者弹性扩容的场景下,如果刚启动实例中的连接并有没完成建立,但此时实例已经启动完成,Readiness 检查已经通过,意味着此时会有大量的业务流量进入新启动的 pod。大量的请求阻塞在连接池获取连接的动作上,导致服务的线程池满,大量业务请求失败。如果我们的应用具备提前建连的能力,那么就可以在流量到达前,将连接请求数保证在 minIdle 之上,并且配合小流量预热的能力,那么就可以解决以上这个让人头疼的冷启动问题了。

2. "坏"连接剔除

有时候连接池中会存在一些有问题的连接,可能是底层的网络出现了抖动,也有可能是执行的业务出现了慢、死锁等问题。如果我们可以从连接池的视角出发,及时地发现异常的连接,并且进行及时地剔除与回收,那么就可以保证连接池整体的稳定性,不至于被个别有问题的业务处理或者网络抖动给拖垮。

3. 访问控

理论上并不是全部数据库表都可以随便访问的,在某些时候,有些重要的表可能对于一些不太重要的服务来说,我们希望它是一个禁写、只读的状态,或者当数据库出现抖动、线程池满的情况下,我们希望减少一些耗时的读库 SQL 执行,又或者有一些敏感数据的表只允许某个应用去进行读写访问。那么我们就可以通过动态的访问控制能力,实时下发访问控制规则,来做到对于个别方法、应用的 SQL 面向数据库实例、表的禁读禁写等黑白名单的访问控制。

  • 数据库灰度

微服务体系架构中,服务之间的依赖关系错综复杂,有时某个功能发版依赖多个服务同时升级上线。我们希望可以对这些服务的新版本同时进行小流量灰度验证,这就是微服务架构中特有的全链路灰度场景,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务进行灰度验证。MSE 通过影子表的方式,用户可以在不需要修改任何业务代码的情况下,实现数据库层面全链路灰度。

  • 动态读写分离

通过 MSE 提供的 SQL 洞察能力,结合我们对业务的理解,我们可以快速定位划分接口请求为弱请求。将对主库性能以及稳定性影响大的读操作,分流至 RDS 只读库,可以有效降低主库的读写压力,进一步提升微服务应用的稳定性。

以上这些是 MSE 即将推出的一个数据库治理能力的预告,我们从应用的视角出发整理抽象了我们在访问、使用数据库时场景的一些稳定性治理、性能优化、提效等方面的实战经验,对于每一个后端应用来说,数据库无疑是重中之重,我们希望通过我们的数据库治理能力,可以帮助到大家更好地使用数据库服务。

同 AZ 优先

同城的特点是 RT 一般处在一个比较底的延迟(< 3ms 以内),所以在默认情况下,我们可以基于同城的不同机房搭建起来一个大的局域网,然后把我们应用跨机房分布在多个机房中,以此来应对单机房出现故障时的流量受损风险。相比异地多活,这种基础设施的建设成本较小,架构变动也比较小。不过在微服务体系之下,应用之间的链路错综复杂,随着链路深度越来越深,治理的复杂度也会随之增加,如下图所示的场景就是前端流量很有可能因为在不同的机房相互调用而导致 RT 突增,最终导致流量损失。

使用场景

当应用部署在多个机房的时候,应用之间互相调用会出现跨机房的情况

机房 1 的 A 应用调用机房 2 的 B 应用,跨机房调用网络延时增加,导致 HTTP 响应时间增加。

开启同机房优先后,consumer 会优先调用同机房的 provider 服务:

解决方案

根据路由规则,自动识别同可用区,并优先选择同可用区减少调用时延,提升性能,并可实现容灾场景下的流量切换,保障可用性。

结语

MSE 治理中心在限流降级、数据库治理及同 AZ 优先方面的能力升级,有助于企业更便捷地做好系统弹性、及时感知系统 SQL 异常状态,做好针对性治理与防护,同 AZ 优先可提升系统整体性能,构建强健而稳定的运行环境。本次升级是治理中心升级的第一阶段,后续会不断推出治理手段,为您的系统保驾护航。

作者:流士

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于阿里云 Serverless 快速部署 Function 的极致体验

1.Serverless 前世今生 1.1 Serverless 背景介绍 云计算的不断发展&#xff0c;涌现出很多改变传统IT架构和运维方式的新技术&#xff0c;而以虚拟机、容器、微服务为代表的技术更是在各个层面不断提升云服务的技术能力&#xff0c;它们将应用和环境中很多通用能力变成了一种…

性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

​ 技术背景 网络信息传输的可靠性、机密性和完整性要求日渐提升&#xff0c;HTTPS 协议已经广泛应用。HTTPS 的 SSL/TLS 协议涉及加解密、校验、签名等密码学计算&#xff0c;消耗较多 CPU 计算资源。因此 CPU 硬件厂商推出过多种加速卸载方案&#xff0c;如 AES-NI、QAT、KA…

TiDB、OceanBase、PolarDB-X、CockroachDB 二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的&#xff0c;因此索引的写入需要与主键的写入放在一个事务当中&#xff0c;事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中&#xff0c;从使用体验的角度看…

EMQX + PolarDB-X 一站式 IoT 数据解决方案

本文整理自 EMQX 产品经理李国伟&#xff0c;在PolarDB开源社区中关于EMQX与PolarDB-X构建一站式IoT数据解决方案的分享。本篇内容主要分为四个部分&#xff1a; 1. IoT数据特性 2. EMQX介绍 3. EMQX与PolarDB-X集成 4. EMQXPolarDB-X方案DEMO 一、IoT数据特性 物联网应用场景…

阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题

大家好&#xff0c;我是君哥。 今天来聊一聊阿里巴巴 Seata 新版本&#xff08;1.5.1&#xff09;是怎么解决 TCC 模式下的幂等、悬挂和空回滚问题的。 TCC 回顾 TCC 模式是最经典的分布式事务解决方案&#xff0c;它将分布式事务分为两个阶段来执行&#xff0c;try 阶段对每…

10分钟部署一个别人可以访问的在线网站(文末有礼

你是否幻想过拥有自己的个人网站&#xff1f;但是不会编程&#xff0c;没有任何网站搭建经验&#xff0c;搭建的时候也不知道怎么去选择系统…… 等等这一系列疑惑让大部分人还没开始就选择放弃&#xff0c;本期教大家用一个最简单的方式&#xff0c;在10分钟内搭建一个线上的…

菜鸟 CPaaS 平台微服务治理实践

背景 CPaaS&#xff08;cainiao platform as a service&#xff09;是以公有云为基座&#xff0c;结合先进的云原生理建设的企业级 DevOps 的 PaaS 平台&#xff0c;CPaaS 主要目前主要支持的场景&#xff1a;菜鸟生态的云上研发运维、菜鸟公有云 SaaS 化的能力透出、菜鸟商业…

RocketMQ 消息集成:多类型业务消息-普通消息

引言 Apache RocketMQ 诞生至今&#xff0c;历经十余年大规模业务稳定性打磨&#xff0c;服务了 100% 阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案&#xff0c;RocketMQ 从创建之初就一直专注于业务集成领域的异步通信能力构建。本篇将从业务…

【总结】字符串匹配: KMP 和 拓展KMP

比起ac自动机,kmp就一个next数组,理解了如何初始化next后就可以搞一些模板题了,下面是还不错的学习资料,清晰易懂,自己用的模板也来自它: http://chaoswork.com/blog/2011/06/14/kmp%E7%AE%97%E6%B3%95%E5%B0%8F%E7%BB%93/ kmp模板 next[0]-1;j-1; for(i0;i<m;) {while(j>…

最小生成树(普利姆算法、克鲁斯卡尔算法)

给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. 求最小生成树的算法 (1) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. (2) 普里姆算法 图…

《数字化与碳中和(园区篇)》报告正式发布,助力加快推进国家“双碳”战略实施

2021年10月&#xff0c;国务院印发《2030年前碳达峰行动方案》&#xff0c;明确提出要建设绿色低碳园区&#xff0c;并选择100个具有典型代表性的城市和园区开展碳达峰试点建设&#xff0c;在政策、资金、技术等方面对试点城市和园区给予支持。此后&#xff0c;碳达峰、碳中和正…

基于开放共享的自主研发—MaxCompute 持续增强生态与开放性建设

MaxCompute产品与生态架构 MaxCompute是一个具有先进架构的Serverless云数据仓库&#xff0c;自从商业化后&#xff0c;使用的用户涉及各个行业的头部客户。在生态上需要支持主流的开源产品以及阿里云云产品。其主要包括以下几个方面&#xff1a; 数据接入生态。目前官方提供…

构建数据中台的组织架构

一、中台是一种企业架构 1.TOGAF企业架构标准 TOGAF是一套企业架构标准。企业架构是指整个公司或企业的软件和其他技术的整体观点和方法。企业架构又细分为业务架构、应用架构、数据架构、技术架构几个方向。 其中业务架构的定义是“定义业务战略和组织&#xff0c;关键业务…

源于加速,不止加速——10年沉淀,破局改变

20余年技术&#xff0c;面临破局。CDN(Content Delivery Network&#xff0c;内容分发网络) 是一个超大规模的分布式系统&#xff0c;为互联网各类App和Web站点提供动 / 静态内容、实时流媒体加速以及网络安全防护等能力。在线购物、直播、音乐、游戏、社交等等一切&#xff0c…

5分钟让你在大火的多模态领域权威榜单VQA上超越人类

ModelScope上开源了达摩院众多业界最强多模态模型&#xff0c;其中就有首超人类的多模态预训练视觉问答模型mPLUG&#xff0c;小编激动的搓搓小手&#xff0c;迫不及待的体验了一下。 一探&#xff1a;浅草才能没马蹄 市面上有好多号称“用户上手简单”&#xff0c;“一步到位…

私有化输出的服务网格我们是这样做的

介绍 微服务开发的问题 微服务架构下我们在开发中遇到的常见的问题有以下 4 个&#xff1a; 多语言问题&#xff1a;有多种编程语言&#xff0c;node.js, JAVA, GoLang…微服务需要为每种语言都维护一种中间件 SDK升级推动难&#xff1a;SDK 升级需要推动业务应用进行代码修…

技术解读:Dragonfly 基于 P2P 的智能镜像加速系统

背景 网络下载 提起网络下载领域&#xff0c;你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接&#xff0c;服务器轮询监听 TCP 连接并依次响应&#xff0c;如下图&#xff1a; 上世纪末期&#xff0c;基于 C/S 模式的思想&…

Kruise Rollout:灵活可插拔的渐进式发布框架

前言 Kruise Rollout 是 OpenKruise 社区开源的渐进式交付框架。Kruise Rollout 支持配合流量和实例灰度的金丝雀发布、蓝绿发布、A/B Testing 发布&#xff0c;以及发布过程能够基于 Prometheus Metrics 指标自动化分批与暂停&#xff0c;并提供旁路的无感对接、兼容已有的多…

最小生成树的Prime算法的思想

Prime算法的核心步骤是&#xff1a;在带权连通图中V是包含所有顶点的集合&#xff0c; U已经在最小生成树中的节点&#xff0c;从图中任意某一顶点v开始&#xff0c;此时集合U{v}&#xff0c;重复执行下述操作&#xff1a;在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边…

一线技术人应该关注的四种思维能力

引言 作为长期奋战在一线的技术人&#xff0c;我深刻体会到如下几个思维能力对技术人成长的重要性&#xff0c;熟练运用这几种思维可以帮助我们快速的进入到新的领域&#xff0c;在分析、定位和解决问题上有很大帮助。 抽象思维&#xff1a;帮助我们快速抽取面对问题的关键要素…