微服务容灾治理## 微服务容灾治理 ### 1. go-zero 稳定性能力概览 经过这么多年大流量服务端架构设计的沉淀,go-zero 在保护服务的稳定性上下足了功夫,不管是 CPU 密集型还是 IO 密集型服务,go-zero 都能很好的保护服务在如下场景不被拖垮或卡死: 远超服务容量的突发大流量 CPU 打满 • 上下游故障或者超时 • MySQL、MongoDB、Redis 等中间件故障或者超负载(典型的是 6113db2ae442f78/p1_1.jpg) 如图,我们从三个方面来保护系统的稳定性: 服务端自适应过载保护 服务端自适应熔断 • 客户端自适应熔断 当然,我们还有自动适配后端服务能力的负载均衡算法,对稳定性进一步保驾护航。本文主要讲解自适应过载保护的原理、场景和表现。 ### 2. 自适应过载保护压测 用过 Windows 的同学对这个界面应该都不陌生,这就是典型 CPU 打 这个模拟 CPU 的代码本身不重要,就不做介绍了。 ### 2.2 压测场景 #### 2.2.1 场景一(不开启过载保护) Timeout: 1000 Middlewares: Breaker: false Shedding: false 服务跑在两核的容器内 - 不开启过载保护 超时1s loops 2 hey -c 200 -z 60m "http://localhost:8888/ping"0 码力 | 13 页 | 1.68 MB | 2 年前3
2.1.1 Sentinel&OpenSergo:下一代微服务治理标准与实践不稳定服务依赖 慢SQL查询卡爆连接池 第三方服务不响应,卡满线程池 业务调用持续出现异常,产生大量的副作用 流量控制 保障接口流量处于正常容量以内,多余流量进行拒绝或平滑 系统保护 自适应系统过载保护,基于系统指标与实时容量 并发控制 精准控制并发请求数,避免过多的慢调用占满线程池导致服务不可用 熔断降级 热点防控 针对不稳定的弱依赖服务自动进行熔断,或提前降级 针对自动识别的热点参数 品。这些突发的热点流量会击穿缓存,将DB打挂,影响了正常流量的业务处理。 解决方式 通过热点参数防护能力,自动识别参数中的Top N访问热度的参数值,并对这些参数分别进行统计与流控,避免单个热点访问过载;并且可以针对一些特殊热点访问(如极热门的抢购单品)配置单独的流控值。 参数可以是任意业务属性,可以来自调用端IP、RPC参数、 HTTP请求参数、header等,甚至是代码里的任意变量。 e, b 当其中一台机器挂了之后,本该由这台机器处理的流量被负载均衡到另外的机器上,另外的机器也被打挂了,引起系统雪崩。 希望有个全局的兜底防护,即使缺乏容量评估也希望有一定的保护机制。 结合系统指标和服务容量,自适应动态调控流量 ’ alt=‘OCR图片’/> 结合自适应过载保护,无后顾之忧 吞吐量最大化 稳定性最大化 noloadRT * maxQPS = estimated capacity (based on Little’s0 码力 | 36 页 | 6.55 MB | 1 月前3
从高并发到极端并发:百度 Feed 与春晚红包的高可用实践-吴永巍s/7/a/4/9/7a49fd8b2d598618d8439fe3a7db198e/p12_1.jpg) ✓多级异常容忍能力,自适应,层级化自治 · 动态参数,自适应 • 预测,online结合nearline召回 能屈能伸: ✓高效简化版本,实现过载兜底 ✓周边极致优化,无短板 Best Effort模式  动态取舍 多级模型降级 流量调度+cache 过载部分简化兜底 ## Feed信息流:能屈能伸,动态参数自适应 - 不变的: ✓可用机器资源有上限 ✓稳定性不可打折 - 可变的: ✓推荐效果尽可能好(Best Effort) ✓流量、并发等外部因素 - 自动参数调整 全局信息 • 智能监控 • 分布式Trace · 避免误报 • Root cause定位 • 实时处理 • 事件关联 • 自动选择预案 • 止损第一 · 风险最小原则 · 动态自适应策略 • 隔离+多集群调度 · 柔性处理不雪崩 • 架构设计权衡的艺术:自愈 不等于 100% 全自动,可结合人工辅助 ## 除了基本的设计与实现,还有哪些关键工程实践? • 弹性资源供给和动态调度0 码力 | 28 页 | 58.98 MB | 2 年前3
2022年美团技术年货 合辑技术也以模型视角来理解,同样存在模型复杂度越高越容易过拟合的问题,迭代中的一个关键问题不是评估效果的好坏,而是方案是否存在不必要的超参数等信息,能否不断地简化 AutoML 的建模,不断地自动化,自适应适配各类问题。 最后,也特別感謝 Convolution Team、Nomo Team、Getmax Team、Aister Team 等队伍的队友们。 ## 总结 本文基于笔者7次算法比赛的 在所属子图中的贡献度。 · 考虑到 POI 子图是由 Session 构建的,用户的行为序列存在差异,相应地 POI 信息表达在不同用户序列中也存在差异,POI 子图信息应该在不同行为上下文序列中自适应表达。 - 为了捕捉这种差异性,在子图卷积的过程中,我们将中心节点与当前行为序列中其他节点做聚合,从而建模行为上下文场景关联性。 中心节点不仅受到序列和子图影响,也受到当前候选 POI 的影响。 ing),通过距离相似度衡量用户对候选广告的潜在兴趣。在图神经网络的选型上,我们使用带 Attention 结构的 GAT $ ^{[5]} $ ,使得邻居信息的贡献度可以根据其对源节 点的重要性自适应调节,抑制误点击等带来的噪声;使用 Jumping Knowledge Network $ ^{[11]} $ ,根据节点的连接性自助调整其聚合网络范围,避免热门节点由于其广泛的连接性聚合范围过大损失了个性化信息。0 码力 | 1356 页 | 45.90 MB | 2 年前3
领域驱动设计&中台/用状态机封装领域逻辑加微信时烦告知尊姓大名 ## 作用 ➢都以为自己在做正常的事情, 系统却出问题了 ➢ 强制封装保护信息完整性 条件语句?泛化?不重要了 对象  状态保护 逻辑内移 ## 作用 专家原则、可视原则 减少get/set Open 接口变简单0 码力 | 30 页 | 1.75 MB | 2 年前3
美团点评2018技术年货a/35ea1e7659ba76c4ea2f0c80ce7a723a/p23_3.jpg) LruCache 达预设上限,添加数据 线程安全的LruCache在读写操作中,全部使用锁做临界区保护,确保缓存使用是线程安全的。 ## LruCache在美团DSP系统的应用场景 在美团DSP系统中广泛应用键值存储数据库,例如使用Redis存储广告信息,服务可以通过广告ID获取广告信息。每次请 6c4ea2f0c80ce7a723a/p78_2.jpg) 自旋锁在JDK1.4.2中引入,使用-XX:+UseSpinning来开启。JDK 6中变为默认开启,并且引入了自适应的自旋锁(适应性自旋锁)。 自适应意味着自旋的时间(次数)不再固定,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机 在,网络延迟、丢包现象非常严重。 ### 3. 代码及应用 开发语言瓶颈、代码质量及系统架构等都会影响系统性能,常见的代码及应用问题有: - 架构不合理。业务发展超越架构支撑能力而导致系统负荷过载,进而导致出现系统奔溃、响应超时等现象。另外不合理的架构如:单点、无cache、应用混部署、没有考虑分布式、集群化等也都会影响性能。 研发功底和经验不足。开发的App、Server效率和性能较低、不稳定也是常见的事情。0 码力 | 229 页 | 61.61 MB | 2 年前3
TiDB v7.1 中文手册减少网络流量,提升 MPP 查 询性能。 更多信息,请参考用户文档。 • 支持自适应副本读取缓解读热点 #14151 @sticnarf @you06 在读热点场景中,热点 TiKV 无法及时处理读请求,导致读请求排队。但是,此时并非所有 TiKV 资源都已 耗尽。为了降低延迟,TiDB v7.1.0 引入了负载自适应副本读取功能,允许从其他有可用资源的 TiKV 节点 读取副本,而无需在热点 TiKV 4.13.3.6 典型场景 本节以查询规则为例,介绍集成 TiDB 与 ProxySQL 能带来的一些优势。 459 4.13.3.6.1 查询规则 数据库可能会因为高流量、错误代码或恶意攻击而过载。因此,审核 SQL 是必要的。使用 ProxySQL 的查询规 则,你可以有效地应对这些问题,例如通过重路由、改写 SQL 或者拒绝查询等方式。 图 34: proxysql-client-side-rules , 将结果填写至上一步的配置模板中。 • TiKV 进行配置优化 – readpool 线程池自适应,配置 readpool.unified.max-thread-count 参数可以使 readpool.storage 和 readpool.coprocessor 共用统一线程池,同时要分别设置自适应开关。 * 开启 readpool.storage 和 readpool.coprocessor:0 码力 | 4369 页 | 98.92 MB | 2 年前3
Hyperledger Fabric 1.4.8 Documentation0 码力 | 483 页 | 7.48 MB | 2 年前3
PyArmor Documentation v5.6.00 码力 | 107 页 | 352.50 KB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版哈希表的实用性越高。 · 均匀分布:哈希算法应使得键值对平均分布在哈希表中。分布越平均,哈希冲突的概率就越低。 实际上,哈希算法除了可以用于实现哈希表,还广泛应用于其他领域中。 密码存储:为了保护用户密码的安全,系统通常不会直接存储用户的明文密码,而是存储密码的哈希值。当用户输入密码时,系统会对输入的密码计算哈希值,然后与存储的哈希值进行比较。如果两者匹配,那么密码就被视为正确。 数据完整 暴力搜索的优点是简单且通用性好,无须对数据做预处理和借助额外的数据结构。 然而,此类算法的时间复杂度为 $ O(n) $ ,其中n为元素数量,因此在数据量较大的情况下性能较差。 #### 10.5.2 自适应搜索 自适应搜索利用数据的特有属性(例如有序性)来优化搜索过程,从而更高效地定位目标元素。 · “二分查找” 利用数据的有序性实现高效查找,仅适用于数组。 · “哈希查找”利用哈希表将搜索数据和目标 需要额外的时间和空间开支。  自适应搜索算法常被称为查找算法,主要关注在特定数据结构中快速检索目标元素。 #### 10.5.3 搜索方法选取 给定大小为 n 的一组数据,我们可以使用线性搜索、二分查找、树查找、哈希查找等多种方法0 码力 | 375 页 | 30.68 MB | 2 年前3
共 591 条
- 1
- 2
- 3
- 4
- 5
- 6
- 60













