1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 第⼆部分 端点 PaaS 发展历程 有状态服务 Job / JobFlow 批计算 流计算 ⽆状态服务 DaemonSet Workloads 多集群调度 混合云调度 跨云迁移 多环境调度 业务数据统⼀调度 集群核⼼服务 Helm 镜像服务 Add-on filebeat / telegraf 监控 ⽇志 HPA Operator 注册中⼼ 配置中⼼ API API ⽹关 微服务拓扑 全链路追踪 错误分析 ⽇志分析 主动监控 浏览器监控 APP 监控 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务0 码力 | 40 页 | 8.60 MB | 1 年前3
2.2.2 深入理解BFE• 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 负载均衡器 vs 名字服务 基于负载均衡器 基于名字服务 方案对比 方案 对流量的控制力 资源消耗 对客户端的要求 APISIX Envoy 生态 • 最早用于 Service Mesh • 也可用于网关 • 代表:Envoy Go 生态 • 基于Go语言的生 态积累 • 更好的稳定性和安 全性 • 易于开发扩展功能 • 代表:BFE, Traefik API网关 七层负载均衡 BFE主要设计思想 • 转发模型优化 • 支持多租户 • 引入条件表达式,减少正则表达式使用 • 降低动态配置加载的难度 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
Golang大规模云原生应用管理实践云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 name: scaledobjects.keda.k8s.io 能力定义 • 工作负载 • 运维特征 • 作用域 组件 应用配置 = 组件+运维特征+作用域 简单开放 标准可扩展 可组合 可发现 https://github.com/oam-dev/spec EDAS的平台构建机制-KubeVela https://github.com/oam-dev/kubevela0 码力 | 23 页 | 7.70 MB | 1 年前3
2.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
1.每秒百万数据点 Go 应用监控系统演进无法查询超过 30 天的数据 ● 查询慢,平均时间超过 2 分钟 ● 跨集群指标无法聚合 ● Prometheus 集群经常崩溃 ● 维护时 Prometheus 会丢数据 ● 成本高,需要大容量 SSD 磁盘 2021-2022 核心需求 可跨集群查询 长期存储 兼容 Prometheus 扩展性强 无侵入性 Why Thanos VS VS 架构 S3 Thanos 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 VictoriaMetrics so good?0 码力 | 42 页 | 2.32 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣原则 – 扩展性 – 稳定性(最好不用升级) • 解决方法 – Protobuf(golang) – 接口设计分层 • 框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 Redis集群:codis集群方案 – Mysql集群:中间件方案 架构—灾备 • 这里的灾备主要指的是依赖的存储降级方案,涉及到存储 的主要两个模块 – Auth svr:cache(redis) + db(mysql) – Route svr:cache + cache(standy) 架构—异地双活 • 要求 – 正常情况下: • 任何一个机房可推送到所有机房app – 异常情况下: • 本机房内推送可达0 码力 | 31 页 | 1.67 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践⼀一定量级下服务稳定: 50+内部产品,万款开发平台app 实时⻓长连接数亿量级,⽇日独数⼗十亿量级 1分钟内亿量级⼲⼴广播,⽇日下发峰值百亿量级 400台物理机,9个独⽴立集群,国内外近10个IDC 运维管理的go语⾔言编写的常驻service服务实例接近3000个。 业务场景多样: ⽀支持聊天场景业务,稳定⽀支持多款聊天业务app 单通道多app复⽤用 上⾏行通道,回调⽀支持 消息系统简要架构 单实例,单端⼝口,多协议复⽤用 全双⼯工,单客户端,多app复⽤用服务单通道 适⽤用于复杂环境下的⺴⽹网络的接⼊入策略 协议完备、简单、数据安全、可扩展、省流量 接⼊入层 ���� DES+RSA/ ECC+AES/ crossdomain.xml/ � ������/ ������ ����/ ����/ ZooKeeper/ Keeper l 缓解GC压⼒力(gc时间减少40%) 按业务类型聚类,⼲⼴广播(io密集),多播,点对点(内部通信密集),聊天室(cpu密集) 分层服务,按层次扩展改为分集群(Set/Cell思想),各⾃自独⽴立,⼜又具备全被全部功能⼦子集群 l 按业务拆分(助⼿手,卫⼠士,浏览器) l 按功能拆分(push,聊天,嵌⼊入式产品) l 按IDC拆分 (zwt,bjsc,bjd0 码力 | 39 页 | 5.23 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路QL一样的灵活的查询模式 支持多种维度的查询 提供类似SQL的查询模式 支持灵活的信息过滤条件 内存不够用怎么办? 03. 冷热可交换、策略可定制、内存可扩展,多种冷数据淘汰组件,自由组合 存储扩展,冷热数据交换 可自定义冷热数据交换策略 还能提供什么帮助? 04. 降低硬件成本,降低依赖,保证稳定性 同样的性能,需要更少的硬件资源,降低成本 01 核心数据在本地,依赖少,更稳定 核心数据在本地,依赖少,更稳定 02 • 千万级内存对象,GC严重耗时,如何解决? • 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 缓存过期 定期同步 主动方式 监听数据变化 数据加载,更新 02. 全量数据加载,增量数据监听 • 每个应用服务分别消费数据变更消息 • 一个应用服务消费数据变更,应用服务集群内广播 Maxwell是一个能实时读取MySQL二进 制日志binlog,并生成JSON格式的消 息,作为生产者发送给Kafka、 RabbitMQ、Redis、文件或其它平台的 应用程序0 码力 | 48 页 | 6.06 MB | 1 年前3
基于amqp实现的golang消息队列MaxQ11:3999/maxq.slide#1 8/22 4. MaxQ - AMQP实现架构 按照协议spec自动生成frame encode/decode Exchange接口化 Queue接口化——MaxQ集群 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 9/22 MaxQ - 生产实现架构 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 10/22 5. MaxQ相关特性 1. 消息可靠性 2. 容错性 3. 扩展性 4. 高并发 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 11/22 消息可靠性 1) 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 15/22 扩展性 HA、Exchange和Queue动态扩展属性参数 Exchange、Binding、Queue支持自定义扩展, 如:x-message-ttl、x-expires、x-max- length、x-dead-letter-exchange 7/1/20170 码力 | 22 页 | 1.45 MB | 1 年前3
5 How to integrate Graph mode into RDBMS smoothly 为力 ● 单独部署图数据库集群 ● 部署运维两套数据库集群成本太高 ● 在两个不同的数据库中数据一致性不能保障 探索方向 01. 副标题 TiGraph 项目尝试验证在分布式关系型数据中无缝集成图模式: ● 同时包含关系型模型和图模型 ● 同一个事务中操作图数据和关系型数据的能力 ● 将图遍历作为 SQL 子查询(反之亦然) ● 在 SQL 中扩展出一个让 DBA 一眼就能学会的图遍历语法0 码力 | 26 页 | 1.14 MB | 1 年前3
共 55 条
- 1
- 2
- 3
- 4
- 5
- 6













