1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台
基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 release_id: ${release:id} pipeline.yml 定义 - 屏蔽掉流⽔线定义的复杂度 - 丰富的通⽤Action,开箱即⽤ - Action 扩展规范,任意扩展 Workload 管理 - Create - Update - Delete - Describe - Scale - Restart services: trade-server: ⾃动发现并识别 services、 jobs 和 addons - 兼容 telegraf 和 prometheus 协 议 - 即将⽀持 skywalking 和 opentelemetry 弹性监控架构 模块化开发框架 第四部分 什么是 Erda Infra 开发框架 Erda Infra 是⼀套轻量级 Go 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。0 码力 | 40 页 | 8.60 MB | 1 年前3Golang大规模云原生应用管理实践
云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 … 权限 K8s Istio Envoy Tekton Argo 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升0 码力 | 23 页 | 7.70 MB | 1 年前32.5 Go在猎豹移动的应用
链路追踪,参考Google Dapper论文,核 心思路是关键库植入代码,因为缺乏 AOP编程支持,我们使用golang blog推 荐的依赖context对象; 服务发现、负载均衡依赖ZK; 弹性调度的支持,降级处理、动态扩容; RPC选型 是否多语言支持?net/rpc不支持 性能如何? thrift num:111324, time:30s, num/s:3710; 能要求极致的,我们使用go map缓存信 息,使用COW保证无锁更新和访问; 使用redis作为核心的cache store; 使用hash mod region方式对cache进行 扩展; goconf xml,yaml,json,ini? 阶段1:逐idc,逐机器配置修改; 阶段2:svn统一提交修改,每个idc一份; 阶段3:配置统一管理化(agent模型);0 码力 | 24 页 | 4.26 MB | 1 年前31.6 resource scheduling & container technology for financial service_yujun
请的资源暂时无 法保证时,为应用程序预留一个节点上的资源直到累计释放的空 闲资源满足应用程序需求),这种机制会造成浪费,但不会出现 饿死现象 ⑥ Mesos 和 YARN的调度器的扩展和定制在开发上都比较繁琐。 Gopher China 2015 求解之路的探索 n 他们是否解决了我们的问题? n No ① Kubernetes 自主研发的资源分配和动态调度调度算法 自主研发SWF核心算法 (基于场景的加权均衡算法) 两级作业调度框架 自主研发Gardener – Seed 作业调度系统 服务弹性伸缩 自主研发Lighthouse智能服务伸缩模型 分布式高可用控制系统 基于Raft/Chubby算法和GOSSIP协议的分布式高可用控 制系统与服务发现 0 码力 | 21 页 | 27.20 MB | 1 年前3Go 入门指南(The way to Go)
Go 1 版本开始,gc 和 gccgo 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 Go 语言的标准库(第 9.1 节)包文件在被安装后就是使用这种格式的文件。 展都不是很成熟。不过目前还是有一些 IDE 能够较好地支持 Go 的开发,有些开发工具甚至是跨平台的, 你可以在 Linux、Mac OS X 或者 Windows 下工作。 你可以通过查阅 编辑器和 IDE 扩展 页面来获取 Go 开发工具的最新信息。 3.1 Go 开发环境的基本要求 这里有一个你可以期待你用来开发 Go 的集成开发环境有哪些特性的列表,从而替代你使用文本编辑器写 代码和命令行编译与链接程序的方式。 Windwos 下工作,这样就可以专注于一个开发环境。 9. 最好是免费的,不过有些开发者还是希望能够通过支付一定金额以获得更好的开发环境。 10. 最好是开源的。 11. 能够通过插件架构来轻易扩展和替换某个功能。 Go入门指南 - 20 - 本文档使用 看云 构建 12. 尽管集成开发环境本身就是非常复杂的,但一定要让人感觉操作方便。 13. 能够通过代码模版来简化编码过程从而提升编码速度。0 码力 | 380 页 | 2.97 MB | 1 年前3云原生go-zero微服务框架设计思考
如何无痛切换 go-zero是什么? ● Web & RPC微服务框架 ● 微服务代码生成工具goctl ● 通用API定义规范 go-zero的设计原则 ● 保持简单,第一原则 ● 弹性设计,面向故障编程 ● 工具大于约定和文档 ● 尽可能约束做一件事只有一种方式 ● 对业务开发友好,封装复杂度 go-zero是如何设计的 客户端 API端 Service端 缓存层 基于滑动窗口,防止毛刺 ● 有冷却时间,防止抖动 ● 实践检验,配合K8S弹性伸缩 ● http/rpc框架内建 自适应降载 ● 超时 ● 级联调用 ● 跟客户端超时配合 ● 重试 ● 指数退避 ● 流量quota ● 超时相关性 更多组件 Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪0 码力 | 29 页 | 5.70 MB | 9 月前3Go 入门指南(The way to Go)
1 版本开始,gc 和 gccgo 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 2.1 平台与架构 - 26 - 本文档使用 很成熟。不过目前还是有一些 IDE 能够较好地支持 Go 的开发,有些开发工具甚至是跨平台的,你可以在 Linux、Mac OS X 或者 Windows 下工作。 你可以通过查阅 编辑器和 IDE 扩展 页面来获取 Go 开发工具的最新信息。 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 Windows 下工作,这样就可以专注于一个开发环境。 9. 最好是免费的,不过有些开发者还是希望能够通过支付一定金额以获得更好的开发环境。 10. 最好是开源的。 11. 能够通过插件架构来轻易扩展和替换某个功能。 12. 尽管集成开发环境本身就是非常复杂的,但一定要让人感觉操作方便。 13. 能够通过代码模版来简化编码过程从而提升编码速度。 14. 使用 Go 项目的概念来浏览和管理项0 码力 | 466 页 | 4.44 MB | 1 年前305. OpenKruise镜像预热实践_王思宇
Lyft、Bringg、Arkane Systems、Spectro Cloud、Linkedin OpenKruise 能做什么 为什么说人人都需要镜像预热 第二部分 Pod创建过程 用户的期望: • 极致弹性 • 秒级扩容 • 弹出即可用 实际创建过程: create schedule attach/mount volume cni allotate pull image for sidecar0 码力 | 28 页 | 5.78 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 异构部署问题 性能扩展问题 之困局 ? n 机构间数据难打通,不愿打通 n 公网内网、网关网闸情况复杂 n 业务组织形式不同,异构链/系统难适配 n 数据量、网络复杂度指数上升,架构难扩展 16 趣链科技 版权所有 ©2016-2021 主链 节点 节点 锚节点 锚节点 节点 节点 同构⼦链 同构⼦链 主链 • 存证 • 权限控制 基础⼦链 扩展⼦链 • 同构⼦链直接通过主链互通0 码力 | 39 页 | 56.58 MB | 1 年前32.1.1 Golang主动式内存缓存的优化探索之路
QL一样的灵活的查询模式 支持多种维度的查询 提供类似SQL的查询模式 支持灵活的信息过滤条件 内存不够用怎么办? 03. 冷热可交换、策略可定制、内存可扩展,多种冷数据淘汰组件,自由组合 存储扩展,冷热数据交换 可自定义冷热数据交换策略 还能提供什么帮助? 04. 降低硬件成本,降低依赖,保证稳定性 同样的性能,需要更少的硬件资源,降低成本 01 核心数据在本地,依赖少,更稳定 核心数据在本地,依赖少,更稳定 02 • 千万级内存对象,GC严重耗时,如何解决? • 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 业务快速增长 存储如何无限扩展? 存储扩展 05. 业务数据已经超过1000万,海量数据下,如何实现冷热数据的交换 冷 热 新 系 统 历 史 数 据 冷数据、数据量多 缓存成本大、命中低、收益小 热 数 据 当前系统中的热点数据 命中率高 系 统 新 增 数 据 近期新增数据,较大概率命中 存储空间 缓存性能 冷热可交换,引擎可扩展 06. 冷热数据交换,通过栈式缓存结构,实现多级缓存策略0 码力 | 48 页 | 6.06 MB | 1 年前3
共 51 条
- 1
- 2
- 3
- 4
- 5
- 6