美团点评2018技术年货缓存的方案,都无法彻底解决服务中心化 和服务抖动的问题。通过接入的SDK化,可以做到数据的本地缓存更新机制,解除对中心化服务的依赖, 大大提升服务的稳定性和性能。同时整个APPKIT服务变成可水平扩展,在扩展过程中也不会影响中心服 务的稳定性。 四、APPKIT架构 四、APPKIT架构 APPKIT运营配置系统整体框架如下(数据流向如箭头所示)。从功能角度,大体上分为四层:数据层、 服务层、接入层和监控层。 美团技术团队 4.4 监控层 4.4 监控层 APPKIT-SDK运行在业务机器上,这里就涉及到多台机器的数据一致性问题。同时,随着业务接入运营 数据的增多,SDK对机器内存势必有一定消耗。基于服务的稳定性考虑,我们对SDK运行时的投放内容进 行监控,其主要监控两个指标:运营位数及每个运营位的配置总数。这样做可以带来以下几个好处: 1. 对接入的业务数及机器数进行统计。 2. 通过SDK的配置总数监控,防止数量超过最大限制。 时,用户可以通过扫描二维码加入到 测试用户名单,可对处于审核流程中的数据进行预览,用美团、大众点评App查看上线后实时效果,其实 现的数据流如下: 七、稳定性的演进 七、稳定性的演进 稳定性是一个运营配置平台最重要的能力,没有稳定性,其他任何功能都会失去实际意义。运营系统的稳 定性经历了不同的迭代时期,总结起来,可概括为以下三个阶段: 7.1 经典方案 7.1 经典方案 这是APPK0 码力 | 229 页 | 61.61 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索AST Bit code VM Source Code Python code Pros Cons 简单易上手 生态丰富 研发效率高 性能问题 无法满足自动化系统需求 稳定性问题 None 空对象,属性不存在等运行时错误 我们遇到了哪些问题? 1. Go, Python, Rust 性能对比 为什么选择 Rust? > https://github 越来越多的基础设施选择 Rust 3. 更好的性能和稳定性 4. 通过 FFI 暴露 C API 供多语言使用和扩展、方便集成 5. WASM 支持友好 6. 智能合约语言? 为什么选择 Rust? 03 重写的收益 稳定性和性能提升 IDE:用户体验提升 源于 Rust 强大的编译检查和错误 处理方式, 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase Case2: Konfig模型 + 用户定义 > https://github0 码力 | 25 页 | 3.50 MB | 1 年前3
2022年美团技术年货 合辑Prediction。它们都是时间序列 问题,前者是预测未来两天的污染物浓度以及变化,后者是预测未来几个小时高速 交通情况和变化。它们的共同点一是传统行业问题,实际意义强;二是存在各种突变 性、稳定性低;三是都涉及到多地域、多空间问题,需结合时空进行建模。它们的异 同点是污染物浓度突变需要一个短期时间才能发生,数据在突变时存在一定规律性, 但交通突变具有强偶发性,交通道路容易受到偶发性车祸、偶发性地质灾害等影响, 基于交叉验证降噪的极值点优化模型融合方案: (1)基于交叉验证的降噪,由于在线仅能进行一天一次的提交,并且最终的评测会由 A 榜测试集切到 B 榜测试集,并且由于 A 榜数据集小在线评测指标存在不稳定性, 故而离线迭代验证的方式就显得尤为重要。为了能使离线迭代置信,我们采用两种验 证方式进行辅助,第一种是下一天同时间段验证,我们在训练集最后 M 天上对每一 天都取在线同一时间段的数据集,得到 来确定排名,最终排名将根据最后 5 个数据集的 平均排名来评估。综上,本次比赛需要在未见过的 5 个数据集上直接执行自动化图学 习方案,参赛者当时面临着以下挑战: ● 图模型具有高方差、稳定性低等特点。 ● 每个数据集都有严格的时间预算和内存算力限制。 50 > 2022年美团技术年货 基于代理模型的自动化多层次模型优化 [14] 图 10 AutoHEnsGNN 框架 多类别层次化图模型优化:0 码力 | 1356 页 | 45.90 MB | 1 年前3
微服务容灾治理微服务容灾治理 1. go-zero稳定性能⼒概览 经过这么多年⼤流量服务端架构设计的沉淀,go-zero在保护服务的稳定性上下⾜了功夫,不管是 CPU密集型还是IO密集型服务,go-zero都能很好的保护服务在如下场景不被拖垮或卡死: • 远超服务容量的突发⼤流量 • CPU打满 • 上下游故障或者超时 • MySQL、MongoDB、Redis等中间件故 障或者超负载(典型的是CPU飙⾼) 如图,我们从三个⽅⾯来保护系统的稳定性: • 服务端⾃适应过载保护 • 服务端⾃适应熔断 • 客⼾端⾃适应熔断 当然,我们还有⾃动适配后端服务能⼒的负载均衡算法,对稳定性进⼀步保驾护航。本⽂主要讲解⾃ 适应过载保护的原理、场景和表现。 2. ⾃适应过载保护压测 ⽤过Windows的同学对这个界⾯应该都不陌⽣,这就是典型CPU打满服务不可⽤的表现。此时,我 HPA的CPU阈值⼤于go-zero 的过载保护CPU阈值,否则可能会抑制HPA的⽣效。 当然整个系统并不是链路上所有服务和中间件都可以⾃动或及时扩容的,这⾥就牵出另⼀个稳定性能 ⼒-⾃适应熔断了。有了⾃适应过载保护和⾃适应熔断的双重加持,流量再⼤(上限是所有CPU都⽤ 在降载熔断等能⼒上),服务也不会挂。后续⽂章我会深度分析⾃适应熔断的场景压测和实现原理。0 码力 | 13 页 | 1.68 MB | 1 年前3
6.从 0 到 1 搭建十亿级包裹 API Versioning产品提供某一领域的解决方案的软件服务,本质是提供订阅服 务。 1.1 SaaS 产品的特点 AfterShip 属于国际 SaaS 的 B2B2C 产品 1.1 SaaS 产品的特点 - 产品定位 - 稳定性影响 - 稳定性承诺 SaaS 2B 和 2C 的差异 国内 SaaS 和国际 SaaS 的技术规划的差异 - 专注和极致 - 规范和标准 - 安全合规 - 全球化 1.2 API 的重要性 API 的稳定性要求避免破坏性的更改。在进行更新或修改时,应 保持对现有功能的支持,以防止影响已部署的应用程序或客户端。 1.3 API 变更面临的挑战 挑战二、新功能缺少调试环境 What Part 2/4 1. 本质 2. 实现效果 2.1 本质 我们以为的 API Versioning v1, v2, v3 就是版本化.. 2.1 本质 向后兼容 - API 的稳定性要求避免破坏性的更改。在进行更新或修改时,应保0 码力 | 28 页 | 2.26 MB | 1 年前3
聊聊 Node.js 构建部署时我们要关心的数据‣ 前端构建工具 / 版本 ‣ 红黑榜 ๏构建产物大小 ๏构建成功率 ๏构建耗时 ๏… ‣ 应用健康分 应用健康分 应⽤用稳定性 基线健康度 构建部署质量 代码质量量 用户感知层 线上启动时 日常迭代 代码质量 ‣ 应用稳定性 ‣ 页面加载时长 ‣ 可用时长 ‣ apm ‣ … ‣ 基线健康度 ‣ 框架视角:Node.js 版本 / 框架版本等先进性内容 部署启动:成功率、时长等 ‣ … ‣ 代码质量 ‣ CI 覆盖率 ‣ 代码安全扫描 ‣ 代码巡检市场 应用健康分 应⽤用稳定性 基线健康度 构建部署质量 代码质量量 用户感知层 线上启动时 日常迭代 代码质量 ‣ 应用稳定性 ‣ 页面加载时长 ‣ 可用时长 ‣ apm ‣ … ‣ 基线健康度 ‣ 框架视角:Node.js 版本 / 框架版本等先进性内容0 码力 | 47 页 | 5.80 MB | 1 年前3
Nacos架构&原理
在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服 务才能生效。 当应用程序实例比较少的时候还可以维护。如果转向微服务架构有成百上千个实例,每修改⼀次配 置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本。 那么如何能够做到服务不重启就可以修改配置?所有就产生了四个基础诉求: 需要支持动态修改配置 需要动态变更有多实时 变更快了之后如何管控控制变更风险,如灰度、回滚等 节点定时请求当前最新的集群成员节 点列表信息即可。 Nacos 架构 < 62 因此,通过地址服务器这种模式,大大简化了 Nacos 集群节点管理的成本,同时,地址服务器是 ⼀个非常简单的 web 程序,其程序的稳定性能够得到很好的保障。 未来可扩展点 集群节点自动扩缩容 目前,Nacos 的集群节点管理,还都是属于人工操作,因此,未来期望能够基于寻址模式,实现集 群节点自动管理的功能,能够实现新的节点上 可以扩展到很大规模,因为都是点对点的数据同步,但是从我们对 Eureka 的运维经验来看, Eureka 集群在扩容之后,性能上有很大问题。 集群扩展性的另⼀个方面是多地域部署和容灾的支持。当讲究集群的高可用和稳定性以及网络上的 跨地域延迟要求能够在每个地域都部署集群的时候,我们现有的方案有多机房容灾、异地多活、多 数据中心等。 77 > Nacos 架构 图 8 Nacos 的多机房部署和容灾 首先是双机房容灾,基于0 码力 | 326 页 | 12.83 MB | 9 月前3
2020美团技术年货 算法篇服务及实验平台中,模型训练平台 Poker 和 在线预估框架 Augur 是搜索 AI 化的核心组件,解决了模型从离线训练到在线服务的 一系列系统问题,极大地提升了整个搜索策略迭代效率、在线模型预估的性能以及排 序稳定性,并助力商户、外卖、内容等核心搜索场景业务指标的飞速提升。 算法 2 > 美团 2020 技术年货 首先,让我们看看在美团 App 内的一次完整的搜索行为主要涉及哪些技术模块。如 下图所示, 然,必要的时候可以 落入本地,方便问题的定位。 ● 方便问题的定位:系统监控不用多说,美团内部的 Cat& 天网,可以构建出完 善的监控体系。另一方面,特征的监控也很重要,因为特征获取的稳定性决定 了模型预估的质量,所以我们构建了实时的特征分布监控系统,可以分钟级发 现特征分布的异常,最大限度上保证模型预估的可靠性。 ● 丰富的接口:除了预估接口,还需要有特征抽取接口、模型打分 随着 Augur 和 Poker 的成熟,美团搜索与 NLP 部门内部已经有超过 30 个业务方已 经全面接入了预估平台,整体的概况如下图所示: 预估框架使用迁移 Augur 后,性能和模型预估稳定性上均获得了较大幅度的提升。 更加重要的是,Poker 平台的在线预估服务管理和 Augur 预估框架,还将算法同学 从繁复且危险的上线操作中解放出来,更加专注于算法迭代,从而取得更好的效果。 以点评搜索为例,在0 码力 | 317 页 | 16.57 MB | 1 年前3
Golang大规模云原生应用管理实践准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 5 6 7 Custom resources Scheduler Scheduler extension Custom controller Network plugins Storage plugins 统筹规划, 降低成本 自动化运维, 提升稳定性 非业务逻辑剥离, 提升交付效率 Golang与云原生生态(CNCF) 项目数占比: 214/1512(14.2%) Github star数占比:1265737 / 2458072(51.5%)市值占比: K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver0 码力 | 23 页 | 7.70 MB | 1 年前3
使用 TEX 写文档Press, Cambridge University Press, etc. AMS, IEEE, Springer, LNCS, etc. “We Prefer to LATEX”; 超常的稳定性 几乎没有任何错误,内核很少改动 ($1.28 ⇒ $327.68),极少崩溃,无论内存多少, 文件大小,都能正常处理; 高度的灵活性 自定义新命令和宏包等扩展系统,排版俄 文、德文、中文等多种语言,排版数学公式、 Press, Cambridge University Press, etc. AMS, IEEE, Springer, LNCS, etc. “We Prefer to LATEX”; 超常的稳定性 几乎没有任何错误,内核很少改动 ($1.28 ⇒ $327.68),极少崩溃,无论内存多少, 文件大小,都能正常处理; 高度的灵活性 自定义新命令和宏包等扩展系统,排版俄 文、德文、中文等多种语言,排版数学公式、 Press, Cambridge University Press, etc. AMS, IEEE, Springer, LNCS, etc. “We Prefer to LATEX”; 超常的稳定性 几乎没有任何错误,内核很少改动 ($1.28 ⇒ $327.68),极少崩溃,无论内存多少, 文件大小,都能正常处理; 高度的灵活性 自定义新命令和宏包等扩展系统,排版俄 文、德文、中文等多种语言,排版数学公式、0 码力 | 65 页 | 1.07 MB | 1 年前3
共 159 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16













