Go 构建大型开源分布式数据库技术内幕
还有一些你看不到的东西:调度 调度的目标 ● CPU ● IO ● 内存 ● 磁盘使用量 ● 网络流量 ● Location Awareness 调度的方法 ● PD 周期性根据 Cache 中的集群信息,生成调度计划(Operator) ● Operator 是作用于一个 Region 的一系列操作 ○ Transfer Leader:将 raft group 的 leader 转让给某个 生成 Operator 使之均衡 调度的难点 ● 难以评判什么样的数据分布情况是最优解 ○ 机器配置不同 ○ CPU、内存、磁盘、网络多种因素相互制约 ○ 用户场景多变 ● 调度所依赖的集群状态不一定是最新的 ● 调度本身也会带来系统负担 多副本管理策略 ● 使用多副本保证数据安全(Data safety) ● 维持数据副本数 ○ 副本数不足:AddPeer ○ 副本数过多:RemovePeer all on one platform ○ No need for ETL ○ Real-time query with Spark ○ Possiblility for get rid of Hadoop ● Embrace Spark echo-system ○ Support of complex transformation and analytics with Scala / Python0 码力 | 44 页 | 649.68 KB | 1 年前31.6 resource scheduling & container technology for financial service_yujun
Gopher China 2015 求解之路的探索 n 是否已经存在类似的解? n 传统: HPC中的PBS 和 Condor n 现代: Hadoop YARN,Apache Mesos,Google Kubernetes Gopher China 2015 求解之路的探索 n 他们是否解决了我们的问题 Scheduler和Fair Scheduler(借鉴了 Mesos的DRF)。 ② Mesos中的DRF调度算法过分的追求公平,没有考虑到实际的应 用需求。在实际生产线上,往往需要类似于Hadoop中Capacity Scheduler的调度机制,将所有资源分成若干个queue,每个 queue分配一定量的资源,每个user有一定的资源使用上限。 ③ Mesos采用了Resource0 码力 | 21 页 | 27.20 MB | 1 年前3分布式任务系统cronsun
Airflow 4. dkron 5. swoole-crontab 6. Saturn @Copyright Sunteng Technology Azkaban 批量工作流任务调度器(Hadoop) @Copyright Sunteng Technology Chronos Chronos 是一个运行在 Mesos 之上的具有分布式容错特性的作业调度器 @Copyright Sunteng0 码力 | 48 页 | 1.52 MB | 1 年前3Go vs. GoPlus(Go+)
Data (有限数据规模) • 数据科学不是基础设施,而是数学应用软件 • 全能力:统计/预测/洞察/规划/决策/… 数据科学的基建时期:大数据的兴起 • Map/Reduce (2004) • Hadoop (2006) • Spark (2009) • 大数据的兴起,是数据科学基础设施化的开始 • 以大规模处理能力为优先 • 功能上相对局限 数据科学的基建时期:深度学习的兴起 • TensorFlow/Python0 码力 | 54 页 | 1.82 MB | 1 年前32.2.2 深入理解BFE
• 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务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”) && req "deviceid", "x", false) Demo-D1 req_host_in(“www.c.com”) Demo-D 内网流量调度 • 使用场景 • 多数据中心 / 多容器云集群 • 内部服务故障 • 内部服务压力不均 健康检查 • 主动健康检查 • 负载均衡系统持续向RS发送探测请求 • 问题:在响应速度和发送压力间存在权衡 • 在分布式场景下问题更加明显 • 被动健康检查0 码力 | 26 页 | 1.78 MB | 1 年前32.7 Golang与高性能DSP竞价系统
Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • Server端:等待Redis官⽅方(当时还没有的) • Proxy中间代理:twemproxy,维护⽅方便,有⼀一定的性能消 耗 • Client端:配置、维护⿇麻烦,⼏几乎⽆无性能损耗 Redis集群 专业DSP解决⽅方案 Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 500个Redis实例 • 占⽤用600G内存 • 峰值QPS在50万 Redis集群 专业DSP解决⽅方案 • Redis没有集群,维护成本⾼高(嗯,当时是还没的) CookieMapping 第⼀一版 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 性能不⽐比Redis差 • SSD优化 • 完备的分布式集群 • ⼆二级索引 • 开源,企业版⽀支持跨机房的集群 • 99%的请求1ms响应0 码力 | 51 页 | 5.09 MB | 1 年前3云原生go-zero微服务框架设计思考
gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 服务发现 ETCD集群 Redis集群 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 ● No join, no pain! 用户 商品0 码力 | 29 页 | 5.70 MB | 9 月前305. 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 年前31.每秒百万数据点 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+ 业务指标数量0 码力 | 42 页 | 2.32 MB | 1 年前3Golang在接入层长连接服务中的实践-黄欣
框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 – Mysql集群:中间件方案 架构—灾备 • 这里的灾备主要指的是依赖的存储降级方案,涉及到存储 的主要两个模块 – Auth svr:cache(redis)0 码力 | 31 页 | 1.67 MB | 1 年前3
共 28 条
- 1
- 2
- 3