Golang大规模云原生应用管理实践
Golang⼤规模云原⽣应⽤管理实践 刘洋(炎寻) 关于我 • 毕业于中国科学技术大学,定居杭州 • 就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 … 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正想要的是策略:大象无形的基础设施,坚如磐石的中间件,丰富高效的应用PaaS平台 基础设施 云原生PaaS平台提供应用管理策略 基础设施 K8s 云原生生态(CNCF) 云原生应用 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 50 码力 | 23 页 | 7.70 MB | 1 年前3Go Module在又拍云的实践
0 码力 | 28 页 | 12.85 MB | 1 年前3Golang 入门笔记
字符常量是用单引号('')括起来的单个字符,例如 var c1 char = 'a', var c2 char = '中' var c3 char = '9' 2. Go 中有女婿使用转义字符 '\' 来将后面的字符串转变为特殊字符类型常量。例如:var c3 = '\n' // '\n' 表示换行符 3. Go 语言的字符串使用 UTF-8(英文字母1个字节,汉字3个字节) 4. 在 Go中, 字符的本质是一个整数, 运行时进行管理的。 goroutine 语法格式: go 函数名 (参数列表) 例子: go f(x, y, z) 通道(channel) 通道缓冲区 Go 遍历通道与关闭通道 包的基本概念 说明:Go与语言的每个文件都属于一个包,也就是说go 是以包的行是来管理文件和项目目录结构的。 作用 1. 区分相同名字的函数、变量标识符等 2.当程序文件很多的时候,可以很好的管理项目 30 码力 | 2 页 | 511.29 KB | 1 年前3Go Web编程
install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量。 Go使用Mercurial进行版本管理,首先你必须安装了Mercurial,然后才能下载。假设你已经安装好Mercurial,执行 如下代码: 假设已经位于Go的安装目录 $GO_INSTALL_DIR下 hg clone -u o已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境 变中是否包含了Go的安装目录。 第三方工具安装 第三方工具安装 GVM GVM gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便,安装gvm使用如下命令: bash < <(curl -s https://raw.github.com/moovweb/gvm/mast 面系统,使用apt-get命令来管理软件包,我们可以通过下面的命令来安装Go: sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable homebrew homebrew homebrew是Mac系统下面目前使用最多的管理软件的工具,目前已支持Go,可以通过命令直接安装Go:0 码力 | 295 页 | 5.91 MB | 1 年前31.2 基于 Golang 构建高可扩展的云原生 PaaS 平台
业务 数据 业务系统 C 业务 数据 业务系统 A 业务 数据 业务系统 B 资源管理在统⼀平台 应⽤运⾏在统⼀平台 构建标准的交付环境 交付产物标准化 - 业务配置 - 资源配置 - 依赖配置 - 流⽔线配置 配置即代码 : 实现⼤规模交付的部署过程可被验证 PaaS 平台:资源管理,容器编排,基础监控和告警 APM 监控:应⽤诊断,链路追踪,⽇志分析 微服务治理组件 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis Kafka 中间件 通⽤服务 ⾃定义服务 服务市场 Kubernetes Rancher Openshift 私有云 公共 物理机 虚拟机 微服务治理平台 DevOps 平台 边缘监控 边缘站点管理 制品 快速分发部署 边缘⽇志 边缘计算平台 边缘数据收集 边缘算⼒调度 ⽹络⾃动容错 平台产品 核⼼引擎 容器服务 基础设施 数仓设计 数据智能平台 智能预测 智能客服0 码力 | 40 页 | 8.60 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 ... 不同于 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 ... 不同于 业务分区而治 • 通过Namespace进行业务划分 • 业务数据对其他分区不可见 分区性能优异 运维灵活便捷 • 单次部署节点、灵活配置分区,降低运维成本 • 支持分区及分区成员的动态管理,快速适应业 务场景变化 • 不同分区交易并行执行,分区性能不随分区 数据增加而下降 分区机制 节点1 节点2 节点3 节点4 节点5 节点6 分区B 分区A 数据块 区块链平台关键技术-分区机制0 码力 | 39 页 | 56.58 MB | 1 年前33.云原生边云协同AI框架实践
保护数据隐私 SIG成员近年发表分 布式协同AI顶会论文 10+ SIG成员在AI顶会IJCAI 上分享分布式协同AI论文 Sedna斩获中国信通院云边协 同应用创新大赛最佳创新奖 ✓ 数据集管理 ✓ 模型管理 ✓ …… 基础框架 ✓ 协同推理 ✓ 增量学习 ✓ 联邦学习 ✓ 终身学习 训练推理框架 ✓ 主流AI框架 ✓ 模块算法 ✓ 可扩展算法接口 ✓ …… 兼容性 项目地址:https://github com/kubeedge/sedna 开源分布式协同AI框架KubeEdge-Sedna 1. GlobalCoordinator ⚫ 统一边云协同AI任务管理 ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function 增量训练 管理 数据集管理, 模型管理, 状态同步 协同推理 管理 联邦学习 管理 Local Controller Worker Worker Worker 边侧推理 Lib 边侧训练 Model Worker 云侧 推理 Lib 参数 聚合 云侧 训练 Model Global Manager AI任务协调 AI任务管理 模型/数据集管理 Cloud0 码力 | 37 页 | 2.36 MB | 1 年前32.4 Go 1.4 runtime
核心:自主管理,缓存复用,无锁分配。 page, span. 内存管理以页为基本单位,多个地址连续 页构成内存块。 VA 8K 8K 8K 8K 8K span1 span2 small, large. 以 32KB 为界,将对象分成大小两类。 span page object object object small large object 切分 管理 分配 size [1] [2] ... class heap, central, cache. 三级管理机构。 heap central[1] cache cache 向 OS 申请内存。 管理空闲 span。 每个对应⼀一种 sizeclass。 从 heap 获取 span,切分。 管理未全部回收的 span。 从 central 获取 span。 与线程绑定,⽆无锁分配。 cache span/objects span ref != 0 ref = 0 相邻合并 OS X fixalloc. 为管理对象分配内存,不占用预留地址。 arena mem cache span span ... span: 管理内存块的元数据。 allspans: 垃圾回收遍历。 2. Garbage Collector 垃圾回收器 gc. 阈值触发,并行标记,并发清理。0 码力 | 29 页 | 608.57 KB | 1 年前3如何用GO支撑海外电商的快速发展-吕梦楼
商品收藏 产品站 营销管理 优惠券/码管理 营销活动管理 商品管理 活动中心 抢购/秒杀 直播/抽奖 竞价/拼团 活动模版 数据服务 推荐服务 搜索服务 流量平台 其他服务 评论服务 积分服务 站内信 礼品卡服务 内容发布服务 SEO 站点管理 EDM/ Push Mobile POCO Android 用户画像 支付活动管理 PC Mobile 址等 页面渲染逻辑全部由前端处理,实现前后端分离 架构演变 07. 微服务化 目前已有部分电商服务接入网关,后续会持续推动电商服务的微服务接入 通过微服务网关,便于电商服务的接入、监控和管理 场景落地 第三部分 场景落地 01. 微服务网关 场景落地 01. 微服务网关 技术栈选型:GO + ETCD 场景落地 01. 微服务网关 场景落地 01. 微服务网关0 码力 | 33 页 | 3.80 MB | 1 年前32.1.1 Golang主动式内存缓存的优化探索之路
RabbitMQ、Redis、文件或其它平台的 应用程序 数据管理 如何像SQL一样灵活? 多维度查询 03. 业务数据的查询条件复杂,数据在内存中该如何组织 Q1:已开始的公益直播,且公开显示 直播1 Q2:2021-06-27 10:00:00之后 Q1 无数据 数据模型管理 04. 基于golang的struct tag实现正排、倒排结构的自动化管理 全数据扫描? 索引 主键 倒排 每次QPS掉底都与GC相关 GC较高的耗时对QPS的影响巨大 服务性能上不去,QPS剧烈抖动 代码实施 语言局限性,如何突破? 解决GC扫描耗时的问题 08. 基于cgo,定制化的内存管理,减少运行时对golang结构的gc扫描 Copy Copy 内存数据与golang结构间的桥梁 09. 自研MemoryTile(定制化的golang序列化反序列化),解决百万数据量级序列化反序列化耗时问题 数据存储、数据传输 带宽减少40% 2GB -> 1.2GB MaxwellConsumer 03. 通过golang接口的方式,实现业务与框架代码分离 DataManager 04. 工程化的通用数据管理器,提供正排、倒排等丰富的查询模式 数据存储 倒排更新过程 冷热数据交换后,DataManager中 部分数据可能交换到远端存储 本地没有数据实体,数据发生更新, 只知道变更后的新数据0 码力 | 48 页 | 6.06 MB | 1 年前3
共 53 条
- 1
- 2
- 3
- 4
- 5
- 6