基于open-falcon的平安云监控为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 为什么选用Go Ø 自带goroutine,容易实现高并发程序 Ø 标准库功能键全 Ø 方便引用第三次库 Ø 为工程化设计的语言 Ø Interface的设计 Ø 自带profile工具 Ø 自带单元测试框架 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø0 码力 | 30 页 | 10.40 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路数据存储、数据传输 带宽减少40% 2GB -> 1.2GB MaxwellConsumer 03. 通过golang接口的方式,实现业务与框架代码分离 DataManager 04. 工程化的通用数据管理器,提供正排、倒排等丰富的查询模式 数据存储 倒排更新过程 冷热数据交换后,DataManager中 部分数据可能交换到远端存储 本地没有数据实体,数据发生更新, 只知道变更后的新数据0 码力 | 48 页 | 6.06 MB | 1 年前3
GoFrame框架介绍及设计应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块?0 码力 | 37 页 | 8.84 MB | 1 年前3
2.2.3 Go语言的抢占式调度curg 的标志位置为 true 这之后的流程需要正在运⾏的 goroutine 来配合 协作式抢占的“协作”过程 检查当前栈空间是否⾜够,不够的话,需要申请新的栈空间 只要当 framesize > 0 时才会有栈空间检查 framesize ⼀般是由 locals 决定的 协作式抢占的“协作”过程 保存当前 goroutine 的运⾏现场,切换到 m.g0,执⾏ newstack morestack_noctxt morestack newstack 协作式抢占的“协作”过程 gopreempt_m 将当前的 goroutine 放进了全局队列 教练,我不⼲了! 我不配合你 卡⼀辈⼦ 缅怀曾经的痛 新版本的抢占实现 第五部分 信号式抢占 增强版 preemptone 信号式抢占 通过系统调⽤ tgkill,给特定的线程发信号 信号式抢占 这次你不配合也得配合0 码力 | 44 页 | 7.43 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了 便利 配套设施= 测试 + 调优 + 监控 + 运维 便利 = 原⽣生profiling⼯工具 + 开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 提供接⼝口给后台 Æ 所有组件都必须通过⺴⽹网络启动,通过agent调⽤用命令⾏行 架构迭代 总结回顾 go语⾔言在基于并发协作的,重业务逻辑的基础服务⽅方向⾮非常适⽤用 适⽤用 = 开发体验好 + 服务稳定 + 性能满⾜足需要 go语⾔言程序开发需要找到⼀一种平衡,既利⽤用协程带来的便利性⼜又做适当集中化处理 go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了便利 ⽣生态圈 = 测试 + 调优 + 监控 + 运维 便利 = 原⽣生profiling⼯工具 + 通信库集成监控+协程协作模拟业务压测 谢 谢 ! 北京奇虎科技有限公司0 码力 | 39 页 | 5.23 MB | 1 年前3
2.4 Go 1.4 runtimeGoroutine Scheduler 1. Memory Allocator 内存分配器 base on tcmalloc. 基于成熟方案,性能优秀。随着版本升级, 针对性改进,以期与垃圾回收器更好协作。 核心:自主管理,缓存复用,无锁分配。 page, span. 内存管理以页为基本单位,多个地址连续 页构成内存块。 VA 8K 8K 8K 8K 8K span1 span2 small 并发调度器 goroutine. 轻量级实现,支持创建成千上万并发任务。 线程多路复用。 极小自定义初始栈。 任务在多个线程间切换。 scheduler. 三种抽象模型协作。 M G P thread CPU core VM task scheduler thread processor goroutine max. 系统限制,允许调整。 runtime0 码力 | 29 页 | 608.57 KB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬区块链是由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构成的多中心 化系统 不可篡改(可信存证) ü 可对存储的文件、数据进行真实性校验 ü 可信追溯历史数据 去中心化共识(协作共享) ü 多方业务系统数据共享 ü 跨机构业务协作 核心特性 7 趣链科技 版权所有 ©2016-2021 7 趣链科技 版权所有 ©2016-2021 7 趣链科技 版权所有 ©2016-2021 7 区块链技术定义0 码力 | 39 页 | 56.58 MB | 1 年前3
Go持续集成可信赖 DevOps DevOps 是来源于 Development 和 Operations 的一个组合词, 顾名思义,是一系列过程、方法与系统的统称,旨在促进 开发、测试和运维人员之间的沟通与协作。 简单 激情 速度快 聚焦 极致 可信赖 ChatOps ChatOps 以聊天室,即沟通平台为中心,通过一系列的机器人去对接后台的各 种服务,工作人员只需要在聊天窗口中与机器人对话,即可与后台服务进行交0 码力 | 39 页 | 10.74 MB | 1 年前3
go web 框架 严清Why We Use Go Web Frameworks Web Service 框架解决的核⼼心问题 —— 严清 teambition 团队协作⼯工具创导者 关于我 • 五年年 JS ,⼀一年年 Go,也玩 Rust Github 满满绿格⼦子⻅见证我开发⽣生涯的⼀一⾯面 • 16 年年底组建 Go 团队,重构后端服务体 系,为此造了了⼀一些轮⼦子,如 Gear 框架0 码力 | 23 页 | 333.12 KB | 1 年前3
Hello 算法 1.1.0 Go版所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。 如图 4‑10 所示,在程序运行时,数据会从硬盘中被读取到内存中,供 CPU 计算使用。缓存可以看作 CPU 的 一部分,它通过智能地从内存加载数据,给 CPU 提供0 码力 | 383 页 | 18.48 MB | 1 年前3
共 15 条
- 1
- 2













