Golang大规模云原生应用管理实践提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 … 权限 K8s Istio Envoy Tekton Argo KEDA ES InfluxDB Promethues Knative Ingress Rook Kube eventer … 策略 机制 Jaeger 实例 调度策略 链路 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统 ation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 级以维持安全,高可用,高性能的状态;0 码力 | 23 页 | 7.70 MB | 1 年前3
04. GraphQL in Chaos Mesh 2.0 - 李晨曦GraphQL in Chaos Mesh 如何高效地控制集群中的 资源状态 李晨曦 GitHub: hexilee PingCAP R&D PingCAP 研发工程师,CNCF 开源项目 Chaos Mesh® 核心贡献者, 主要负责工程效率提升和 HTTP 故障注入功能的设计实现。并推动 GraphQL 在 Chaos Mesh 项目中的实践落地。 目录 1. Chaos Mesh chaos-mesh.org github.com/chaos-mesh Chaos Mesh 是什么 我们的目标 ● 建立一个完全闭环的云原生混沌工程平台 ● 让混沌工程变得更易用 问题与解决方案 集群中的状态 Chaos Mesh 本身的运行和注入的故障会 给各组件以及目标 Pod 带来各种状态。 cluster status Components Controller Daemon Dashboard Command Fds 集群中的状态 在实际混沌实验过程中,可能会出现注入的错误不符合预期,甚至完全没有效果的情况。能否高效 地获取各种状态则决定了故障诊断的效率。 集群状态大致可以分为两类,主要分类依据是能否通过 kubernetes API 直接查询。 k8s 可直接查询的状态 Kubernetes 和 Chaos Mesh 组件运行的状态均可直接通过 k8s API 查询。 cluster0 码力 | 30 页 | 1.29 MB | 1 年前3
3.云原生边云协同AI框架实践普杰 华为云边缘云创新Lab 高级工程师 KubeEdge SIG AI Tech Lead 目 录 Edge AI现状与趋势 01 Sedna:边云协同AI框架 02 Sedna-GM:K8S Operator 03 实践案例 04 Edge AI现状与趋势 第一部分 Why Edge AI? • Cloud中心化的AI计算范式不足以应对端上AI 应用对实时性、准确性和强交互性的需求 数据在边缘产生 边侧逐步具备AI能力 分布式协同AI 核心驱动力 分布式协同AI核心驱动力 • 随着边侧算力逐步强化,边缘AI持续演变至分布式协同AI 分布式协同AI技术挑战 1. 边缘资源碎片化 2. 边缘数据孤岛 3. 边缘样本少 4. 边缘数据异构 分布式协同AI 技术挑战 边云协同AI框架 第二部分 首个分布式协同AI开源项目Sedna 基于KubeEdge提供 Shallow Model Hard example mining Edge 3 App Shallow Model Hard example mining 边云协同推理: 边侧资源受限条件下,提升整体推理性能 EdgeNode 2 Sedna LC Cloud Edge Sedna GM EdgeNode 1 Feature Extraction Sedna0 码力 | 37 页 | 2.36 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台业务 数据 业务系统 C 业务 数据 业务系统 A 业务 数据 业务系统 B 资源管理在统⼀平台 应⽤运⾏在统⼀平台 构建标准的交付环境 交付产物标准化 - 业务配置 - 资源配置 - 依赖配置 - 流⽔线配置 配置即代码 : 实现⼤规模交付的部署过程可被验证 PaaS 平台:资源管理,容器编排,基础监控和告警 APM 监控:应⽤诊断,链路追踪,⽇志分析 微服务治理组件 第⼆部分 端点 PaaS 发展历程 有状态服务 Job / JobFlow 批计算 流计算 ⽆状态服务 DaemonSet Workloads 多集群调度 混合云调度 跨云迁移 多环境调度 业务数据统⼀调度 集群核⼼服务 Helm 镜像服务 Add-on filebeat / telegraf 监控 ⽇志 HPA Operator 注册中⼼ 配置中⼼ API JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis0 码力 | 40 页 | 8.60 MB | 1 年前3
云原生go-zero微服务框架设计思考gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 服务发现 ETCD集群 Redis集群 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 ● No join, no pain! 用户 商品 支持自定义fallback ● http/rpc框架内建 ● 自动触发,自动恢复 自适应熔断 ● K8S的HPA 80%触发 ● CPU>90%开始拒绝低优先级请求 ● CPU>95%开始拒绝高优先级请求 ● 基于滑动窗口,防止毛刺 ● 有冷却时间,防止抖动 ● 实践检验,配合K8S弹性伸缩 ● http/rpc框架内建 自适应降载 ● 超时 ● 级联调用 ● 跟客户端超时配合 跟客户端超时配合 ● 重试 ● 指数退避 ● 流量quota ● 超时相关性 更多组件 Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪 ● Logging ● Metrics ● 监控报警 可观测性 没有度量,就没有优化! ● 数据上报到控制台服务 ● 数据上报到prometheus0 码力 | 29 页 | 5.70 MB | 9 月前3
Go 构建大型开源分布式数据库技术内幕还有一些你看不到的东西:调度 调度的目标 ● CPU ● IO ● 内存 ● 磁盘使用量 ● 网络流量 ● Location Awareness 调度的方法 ● PD 周期性根据 Cache 中的集群信息,生成调度计划(Operator) ● Operator 是作用于一个 Region 的一系列操作 ○ Transfer Leader:将 raft group 的 leader 转让给某个 生成 Operator 使之均衡 调度的难点 ● 难以评判什么样的数据分布情况是最优解 ○ 机器配置不同 ○ CPU、内存、磁盘、网络多种因素相互制约 ○ 用户场景多变 ● 调度所依赖的集群状态不一定是最新的 ● 调度本身也会带来系统负担 多副本管理策略 ● 使用多副本保证数据安全(Data safety) ● 维持数据副本数 ○ 副本数不足:AddPeer ○ 副本数过多:RemovePeer and analytics with Scala / Python and R ○ Machine Learning Libraries ○ Spark Streaming TiDB on K8S TiDB with Kubernetes 1/3 ● Kubernetes 是容器编排的最佳方案 ● 难点 ○ Stateless is Easy, Stateful is Hard ○0 码力 | 44 页 | 649.68 KB | 1 年前3
2.2.2 深入理解BFEL4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 负载均衡器 vs 名字服务 基于负载均衡器 基于名字服务 方案对比 方案 对流量的控制力 资源消耗 对客户端的要求 适用场景 基于负载均 衡器 强。可以达到单个连 接 / 请求的粒度。 高。负载均衡器引 入了额外的资源消 耗。 低。客户端基本不 源消耗的角度); 应用场景对流量控 制要求高。 基于名字服 务 + 客户 端策略 弱。客户端直接访问 服务,没有可靠的卡 控点,无法实现精细 的流量控制测量。 低。不需要额外的 资源投入。 高。客户端需要支 持比较复杂的策略, 且涉及升级的问题。 总体流量规模较大; 应用场景对流量控 制要求低;无法使 用负载均衡器的场 景。 负载均衡器 • 负载均衡的趋势 BFE转发的主要概念 BFE的转发过程 BFE的路由转发 默认集群 基础转发表 Demo-E 匹配条件 目标集群 www.a.com/a/* Demo-A www.a.com/a/b Demo-B *.a.com/ Demo-C www.c.com ADVANCED_MODE 高级转发表 匹配条件 目标集群 req_host_in(“www.c.com”) && req0 码力 | 26 页 | 1.78 MB | 1 年前3
05. OpenKruise镜像预热实践_王思宇通过 OpenKruise 实现大规模集群 镜像预热&部署发布加速实践 王思宇(酒祝) 阿里云容器服务 技术专家 OpenKruise author & maintainer 目 录 前言:OpenKruise 简介 01 为什么说人人都需要镜像预热 02 OpenKruise 是如何实现镜像预热的 03 如何通过镜像预热加速部署&发布 04 版本前瞻:原地升级与预热的结合 05 拉取的重试次数,默认为 3 activeDeadlineSeconds: 1200 # [optional] 整个任务的超时时间,无默认值 # . . . node1 kruise-daemon CRI 集群维度预热定义 apiVersion: apps.kruise.io/v1alpha1 kind: ImagePullJob metadata: name: test-job spec: image: timeoutSeconds: 300 特点: • 不配置 selector,默认全集群范围 • 集群中新增节点自动触发预热 • 采用 Never 策略长期运行 采用 Never 策略下,ImagePullJob 每隔 24h 左右会触发在范围内的所有节点上重试 拉取一次。 01. 基础镜像 – 集群维度预热 常见预热使用场景 apiVersion: apps.kruise.io/v1alpha10 码力 | 28 页 | 5.78 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 – Mysql集群:中间件方案 架构—灾备 • 这里的灾备主要指的是依赖的存储降级方案,涉及到存储 的主要两个模块 – Auth svr:cache(redis) 常驻内存,内存中有个大连接对象map(资源问题) • 请求都是基于连接的(如果模块间存在资源的互相引用,当资源变更的情况 下,容易发生panic)(竟态问题) • 对象编程 – 封装:conn资源(包括goruntine)作为结构体封装起来,保证所有资源 销毁干净 – 解耦:保证其他模块不直接使用对象中资源 – 同步:竞态需要锁 特点:有状态,存在大量的公共资源并发访问 心得—coding—实现0 码力 | 31 页 | 1.67 MB | 1 年前3
1.每秒百万数据点 Go 应用监控系统演进2020 年底面临的问题 ● 无法查询超过 30 天的数据 ● 查询慢,平均时间超过 2 分钟 ● 跨集群指标无法聚合 ● Prometheus 集群经常崩溃 ● 维护时 Prometheus 会丢数据 ● 成本高,需要大容量 SSD 磁盘 2021-2022 核心需求 可跨集群查询 长期存储 兼容 Prometheus 扩展性强 无侵入性 Why Thanos VS VS Gateway Store Gateway Redis 2022 年底面临的问题 ● 超 100+ 倍数据点增长导致查询缓慢 ● 架构复杂,参数调优困难 ● 频繁 OOM ● 集群规模受制于 Prometheus ● 集群成本上升 2023 压测结果 VS ● CPU 使用低 1.7 倍 ● RAM 使用减少 5 倍 ● 存储空间减少了 3 倍 25K+ 1Mil 60Mil+ 业务指标数量 年底指标数据 VictoriaMetrics 收益 ● 高性能,看板加载时间从 120s 降低到 10s ● 兼容 Prometheus,可以无缝迁移 ● 成本更低,只需要 thanos 的 50% 资源 ● 扩展性强,所有组件支持水平扩容 2023 年底架构 VictoriaMetrics 架构 VMStorage VMSelect VMInsert Why VictoriaMetrics0 码力 | 42 页 | 2.32 MB | 1 年前3
共 55 条
- 1
- 2
- 3
- 4
- 5
- 6













