2.2.6 字节跳动在 Go 网络库上的实践
字节跳动在 Go 网络库上的实践 何晨 字节跳动 基础架构 – 研发 应用层 Netpoll – 面向 RPC 场景的网络库 Go net Netpoll 网络层 RPC 框架 HTTP 框架 KiteX Hertz Netpoll – 性能表现 Environment CPU: 4 cores Memory: 8GB Go: 1.15.4 Netpoll0 码力 | 42 页 | 3.19 MB | 1 年前32.5 Go在猎豹移动的应用
毛剑 Why Go? 优雅简洁,少就是多; 性能好、系统级语言; 静态语言、强类型约束; 交叉编译&部署; 网络模型&并发同步模型; 标准库、内置工具强大支持; 开源&社区活跃; 我们做了啥? 业务 猎豹移动全球passport体系; 游戏开放平台; 游戏支付体系; 平台 基于redis sentinel的smart client; rpc框架; gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 避免劫持、失效,dns提供商故障; 协议压缩:pb+gzip; 节约流量; 协议设计:职责单一不适用; 合并请求; TCP Handshake影响RTT;0 码力 | 24 页 | 4.26 MB | 1 年前3Golang大规模云原生应用管理实践
• 就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性0 码力 | 23 页 | 7.70 MB | 1 年前32.1.7 谈如何构建易于拆分的单体应用
0 码力 | 27 页 | 13.04 MB | 1 年前3使用Go与redis构建有趣的应用
混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 主多从,内建⾼高可⽤用) • 拥有⽆无限可能性的扩展模块系统:神经⽹网络、全⽂文搜索、JSON 数据结构等等。 数据结构 data structures 索引 0 1 2 3 4 5 6 7 8 9 10 11 字符 ‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘ ’0 码力 | 176 页 | 2.34 MB | 1 年前31.1 Go语言游戏项目应用情况汇报
0 码力 | 21 页 | 1.63 MB | 1 年前3Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 mysql-group mysql-group mysql-group SQL (requests) zookeeper dbmointer • 系统框架图 整套系统致力于提供一套mysql分布式解决方案,上层应用就跟使用单机mysql 一样接入本系统(部分SQL语句不支持)。 6 系统整体方案 • 系统功能 • 读写分离。 • 平滑上下线Mysql。 • 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表0 码力 | 17 页 | 4.02 MB | 1 年前31.每秒百万数据点 Go 应用监控系统演进
每秒百万数据点 Go 应用监控系统演进 张平 AfterShip 高级 SRE 关于 AfterShip 拥抱云原生和开源系统 目 录 监控架构概览 01 如何监控 Go 应用? 02 Metrics 系统架构演进 03 Why VictoriaMetrics so good? 04 总结与展望 05 监控架构概览 第一部分 监控系统架构概览 -- 数据源 监控系统架构概览 监控系统架构概览 -- 告警配置 监控系统架构概览 -- 告警通道 如何监控 Go 应用? 第二部分 基于 Prometheus Go 应用监控接入流程 确定指标 为应用埋点 部署应用 配置服务发现 监控展示 指标类型 ● Go 运行时指标 ○ Goroutine 数量 ● 应用层指标 ○ infra_http_request_total ● 业务指标 ○ 总 Tracking 查询量 压缩传输内容,降低磁盘性能要求 ● 根据可用物理内存限制对象的总量,避免 OOM ● 区分 fast path 和 slow path Gorilla 压缩算法 压缩算法优化 ● 改进 XOR,通过应用 10^X 乘数将 value 浮点值转换为整数值 ● 根据具体情况选择压缩算法 ○ 数值相同,那么只存储第一个值 ○ 数值是等差数列,那么只存存储第一个值和 Delta 值 ○ Gauges0 码力 | 42 页 | 2.32 MB | 1 年前31.2 Go 在分布式系统开发中的应用
0 码力 | 20 页 | 131.34 KB | 1 年前32-6-Golang 在 Baidu-FrontEnd 的应用-陶春华
Golang在BFE的应用 百度运维部 陶春华 taochunhua@baidu.com 2016年4月 个人简介 • 陶春华,运维部,Baidu Front End团队 –2010年,天津大学,计算机专业博士 • 2013年7月,加入百度 –使用GO开发的项目 • 7层流量代理GO-BFE • 应用层防火墙WAF • 百度GOLANG委员会成员 内容提要 • 后台程序开发的需求和难点 通过Array减少引用计数 OBJ1 OBJ2 OBJ3 OBJ1 OBJ2 OBJ3 困境 • 减小对象数的困境 –常态下需要保持几十万的连接 => 几十个ms –修改golang网络库,重写基本数据结构 • 不使用让go管理内存 –通过Cgo手工维护,很危险 (go中调用c代码) –不能解决问题:大量go对象难以避免 车轮大战! 轮转GC方案 • 基本思路 –关闭GC 存在 • 需要根据线上运行实际情况来做选型 协议一致性问题 • GO-BFE 参考了Go的http库 • 基于Go的http实现是否完善,符合rfc标准 –没有大规模的应用的例子 • 需要一些方法来验证 –网络协议一致性测试是难点 协议一致性 • Macaroon框架 Mock client GO-BFE Mock server •Tcpcopy线上引流对比 RealServer0 码力 | 35 页 | 730.17 KB | 1 年前3
共 68 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7