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: 接⼝设计、以及拦截器 • 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼ VS 模块化开发原则 - ⾯向接⼝进⾏开发,⽽不是⾯向实现 - 模块拆分的粒度尽可能⼩ - 模块内聚,模块间松耦合 - 模块间的引⽤使⽤DI⽽不是直接依赖实现包0 码力 | 40 页 | 8.60 MB | 1 年前3
NSQ - 陈冶stream computing stream computing 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster 4. 正确消费确认 MQ stream computing Web Service stream stream computing stream computing Msg 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 使⽤案例 ⼴告点击数统计 Web Service MySQL cluster User Click User Click User Click 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 • MQ:分布式部署,排除⾃⾝单点故障 使⽤需求 • 数据缓冲,提⾼可⽤性 ,缓冲服务故障 • 数据⼴播,分发给多个服务 • 负载均衡,提⾼消费者的扩展性 • 消费反馈,确保消息不丢失 • MQ:分布式部署,排除⾃⾝单点故障 • MQ:具备横向扩展性,排除性能瓶颈 NSQ 是怎么⾯对这些问题的0 码力 | 37 页 | 2.49 MB | 1 年前3
基于open-falcon的平安云监控Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 系统定位 Ø 保证基础监控,提供监控通道 Ø 要求高可用、高可扩展 Ø 分离用户、平台管理员 角色 Ø 建设用户自助平台(看性能、配告警、收告警) Ø 保证告警覆盖率,按类型初始化通用告警策略 Ø 兼顾通用的和个性的监控要求 目录 Ø 团队介绍 Ø 背景 主机 主机 主机组 主机组 模板 模板 父模板 父模板 联系人 联系人 策略 策略 策略 策略 策略 策略 租户隔离 解读argus的架构 Ø 异地容灾,高可用 Ø 所有模块可横向扩展 Ø 性能数据分三地存储,节省大量专线带宽 Ø 运维入口唯一,用户友好 Ø 兼顾了通用、个性化的监控需求 Ø 做到租户隔离 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么0 码力 | 30 页 | 10.40 MB | 1 年前3
2.7 Golang与高性能DSP竞价系统© ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • MySQL 不适合OLAP类应⽤用 • MySQL和InfoBright横向扩展都不⽅方便 • 数据更新⿇麻烦 曝光统计服务: 问题 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 专为统计分析⽽而⽣生 • 列存储 • shared-nothing的分布式架构,可扩展性、⾼高可⽤用 • 秒级以内对⼗十亿⾏行级别的表进⾏行统计查询 • 对内存要求⾼高,相当于内存数据库 • JAVA系,开源 曝光统计服务: Druid 专业DSP解决⽅方案 ©0 码力 | 51 页 | 5.09 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 异构部署问题 性能扩展问题 之困局 ? n 机构间数据难打通,不愿打通 n 公网内网、网关网闸情况复杂 n 业务组织形式不同,异构链/系统难适配 n 数据量、网络复杂度指数上升,架构难扩展 16 趣链科技 版权所有 ©2016-2021 主链 节点 节点 锚节点 锚节点 节点 节点 同构⼦链 同构⼦链 主链 • 存证 • 权限控制 基础⼦链 扩展⼦链 • 同构⼦链直接通过主链互通0 码力 | 39 页 | 56.58 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路QL一样的灵活的查询模式 支持多种维度的查询 提供类似SQL的查询模式 支持灵活的信息过滤条件 内存不够用怎么办? 03. 冷热可交换、策略可定制、内存可扩展,多种冷数据淘汰组件,自由组合 存储扩展,冷热数据交换 可自定义冷热数据交换策略 还能提供什么帮助? 04. 降低硬件成本,降低依赖,保证稳定性 同样的性能,需要更少的硬件资源,降低成本 01 核心数据在本地,依赖少,更稳定 核心数据在本地,依赖少,更稳定 02 • 千万级内存对象,GC严重耗时,如何解决? • 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 业务快速增长 存储如何无限扩展? 存储扩展 05. 业务数据已经超过1000万,海量数据下,如何实现冷热数据的交换 冷 热 新 系 统 历 史 数 据 冷数据、数据量多 缓存成本大、命中低、收益小 热 数 据 当前系统中的热点数据 命中率高 系 统 新 增 数 据 近期新增数据,较大概率命中 存储空间 缓存性能 冷热可交换,引擎可扩展 06. 冷热数据交换,通过栈式缓存结构,实现多级缓存策略0 码力 | 48 页 | 6.06 MB | 1 年前3
Go Web编程13.如何设计一个Web框架 13.1 项目规划 13.2 自定义路由器设计 13.3 controller设计 13.4 日志和配置设计 13.5 实现博客的增删改 13.6 小结 14.扩展Web框架 14.1 静态文件支持 14.2 Session支持 14.3 表单支持 14.4 用户认证 14.5 多语言支持 14.6 pprof支持 14.7 小结 附录A 参考资料 5 bSlice 包含 aSlice[0], aSlice[1], aSlice[2] 也就是含有: d,e,f bSlice = aSlice[0:5] // 对slice的slice可以在cap范围内扩展,此时bSlice包含:d,e,f,g,h bSlice = aSlice[:] // bSlice包含所有aSlice的元素: d,e,f,g slice是引用类型,所以当引用改变其中元素 来定义对象的一组行为。 我们前面一章最后一个例子中Student和Employee都能Sayhi,虽然他们的内部实现不一样,但是那不重要,重要的是 他们都能say hi 让我们来继续做更多的扩展,Student和Employee实现另一个方法Sing,然后Student实现方法BorrowMoney而 Employee实现SpendSalary。 这样Student实现了三个方法:Sa0 码力 | 295 页 | 5.91 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
Go 入门指南(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 入门指南(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 年前3
共 49 条
- 1
- 2
- 3
- 4
- 5













