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 年前3Go Web编程
WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3 1.Go环境配置 1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 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 1 GO环境配置 1 GO环境配置 欢迎来到Go的世界,让我们开始探索吧! ,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻 量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生 了。 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 目录 目录 links links 目录 下一节:0 码力 | 295 页 | 5.91 MB | 1 年前303. Golang 在隐私计算平台建设中的实践 - 刘敬
分释放数据价值 02 隐私计算平台 架构 趣链科技版权所有©2016 – 2021 9 平台体系 • 区块链协同层 数据共享⽬目录,数据确权授 权、追溯审计以及联盟治理理 • 隐私计算⽹网络 多节点通过p2p组⽹网,并基于安 全多⽅方计算、联邦学习、可信执 ⾏行行环境按照数据隐私密级进⾏行行价 值共享 • 业务应⽤用层 基于SDK接⼊入上层业务系统 趣链科技版权所有©2016 doubleEncrypt edDatasetA) 对应 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 趣链科技版权所有©2016 – 2021 15 嵌套调⽤用其他算法 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流0 码力 | 37 页 | 6.20 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
PoS DPoS 可编程货币 可编程⾦融 可编程社会 合约层 智能合约脚本 算法机制 合约执⾏引擎 哈希算法 数字签名 P2P⽹络 传播机制 验证机制 默克尔树 轮胎、悬架等 基础硬件配置 电路油路 等传导系统 引擎、动⼒系统 汽油等润滑系统 车载⾃动化功能 公路、越野等具体场景 公有链基础架构⾃下⽽上分为六层:数据层、⽹络层、共识层、激励层、合约层与应⽤层。如果将区块链⽐作⼀ 版权所有 ©2016-2021 ⼤�模⾼性能区��架构⾯�的�� 大规模高性能 区块链架构设计 网络连通问题 数据孤岛问题 异构部署问题 性能扩展问题 之困局 ? n 机构间数据难打通,不愿打通 n 公网内网、网关网闸情况复杂 n 业务组织形式不同,异构链/系统难适配 n 数据量、网络复杂度指数上升,架构难扩展 16 趣链科技 版权所有 ©2016-2021 主链 节点 节点 锚节点 不同分区(Namespace)间共识、执行、存储、网络完全独立;借助分区,一方面可实现业务隔离,保障 数据隐私安全;另一方面可实现交易并行处理,提升系统整体性能。 功 能 特 性 分区机制 业务分区而治 • 通过Namespace进行业务划分 • 业务数据对其他分区不可见 分区性能优异 运维灵活便捷 • 单次部署节点、灵活配置分区,降低运维成本 • 支持分区及分区成员的动态管理,快速适应业0 码力 | 39 页 | 56.58 MB | 1 年前31.5 Go 语言构建高并发分布式系统实践
性能满⾜足需要: 线上单机最⾼高160w⻓长连接 (24核 E5-2630 @ 2.30GHz 64G内存 ) qps在2~5w(取决于协议版本,业务逻辑,接⼊入端⺴⽹网络状况) 测试环境,可以通过300w⻓长连接压测(⺴⽹网络,连接稳定,⽆无带宽限制,实际可以更⾼高 ,决定于⼲⼴广播时候业务内存开销的cpu消耗带来的⼼心跳或者业务延时能否接受) 以360消息推送系统为例 ⾼高并发、通信交互复杂 Flash Iframe for ever 消息系统简要架构 单实例,单端⼝口,多协议复⽤用 全双⼯工,单客户端,多app复⽤用服务单通道 适⽤用于复杂环境下的⺴⽹网络的接⼊入策略 协议完备、简单、数据安全、可扩展、省流量 接⼊入层 ���� DES+RSA/ ECC+AES/ crossdomain.xml/ � ������/ ������ buffer和 对象不复⽤用 问题与瓶颈 问题与瓶颈 瓶颈 散列在协程⾥里⾯面的io 问题与瓶颈 奔放的协程使⽤用 ⺴⽹网络环境不好 引起激增 问题与瓶颈 2~3s的GC 瓶颈 散列在协程⾥里⾯面的io 问题与瓶颈 奔放的协程使⽤用 接⼝口响应速度0 码力 | 39 页 | 5.23 MB | 1 年前3Go 入门指南(The way to Go)
产环境与软件开发之间的主要矛盾,并尝试设计一门全新的编程语言来解决这些问题。 以下就是他们讨论得出的对编程语言的设计要求: 能够以更快的速度开发软件 开发出的软件能够很好地在现代的多核计算机上工作 开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发 和多核应用的基本技巧的讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 Web 应用 中的相关网络技巧(第 15 章)。 我们会在本书的第四部分向你展示许多 Go 语言的开发模式和一些编码规范,以及一些非常有用的代码片 段(第 18 章)。在前面章节完成对所有的 Go 语言技巧的学习之后,你将会学习如何构造一个完整 衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。 因此,Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进 行指针运算。 Go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多 核的计算机,这一点对于谷歌内部的使用来说就非常重要了。设计者通过 goroutine 这种轻量级线程的概 念来实现这个目标,然后通过0 码力 | 380 页 | 2.97 MB | 1 年前3Go 入门指南(The way to Go)
通道、超时和计时器(Ticker) 14.6 协程和恢复(recover) 14.7 新旧模型对比:任务和worker 14.8 惰性生成器的实现 14.9 实现 Futures 模式 第 15 章 网络,模板和网页应用 15.1 tcp服务器 15.2 一个简单的网页服务器 15.3 访问并读取页面 15.4 写一个简单的网页应用 第 16章 常见的陷阱与错误 16.1 误用短声明导致变量覆盖 字符串 18.2 数组和切片 18.3 映射 18.4 结构体 18.5 接口 18.6 函数 18.7 文件 18.8 协程(goroutine)与通道(channel) 18.9 网络和网页应用 18.10 其他 18.11 出于性能考虑的最佳实践和建议 - 6 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《Go入门指南》 由 进击的皇虫 使用 试设计一门全新的编程语言 来解决这些问题。 以下就是他们讨论得出的对编程语言的设计要求: 能够以更快的速度开发软件 开发出的软件能够很好地在现代的多核计算机上工作 开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。0 码力 | 466 页 | 4.44 MB | 1 年前32.5 Go在猎豹移动的应用
毛剑 Why Go? 优雅简洁,少就是多; 性能好、系统级语言; 静态语言、强类型约束; 交叉编译&部署; 网络模型&并发同步模型; 标准库、内置工具强大支持; 开源&社区活跃; 我们做了啥? 业务 猎豹移动全球passport体系; 游戏开放平台; 游戏支付体系; 平台 基于gopush的推送平台&goim; 基于redis sentinel的smart client; rpc框架; gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 避免劫持、失效,dns提供商故障; 协议压缩:pb+gzip; 节约流量; 协议设计:职责单一不适用; 合并请求; 扩展; goconf xml,yaml,json,ini? 阶段1:逐idc,逐机器配置修改; 阶段2:svn统一提交修改,每个idc一份; 阶段3:配置统一管理化(agent模型); 一处修改,统一管理; 节点状态查看、回滚配置; 数据安全、强一致性; goconf /config/ | service/0 码力 | 24 页 | 4.26 MB | 1 年前3基于open-falcon的平安云监控
argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 背景 Ø 应对云主机快速增长 Ø 打造用户自助服务的监控平台 Ø 适应内部的三级网络架构 背景 云管区 公共服务区 可用区 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø 数据查询 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 告警配置 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 插件脚本下发 alarm gitlab 问题&目标 Ø 问题 Ø 没有异地容灾 Ø 跨区域上报数据,会产生大量专线流量 Ø 隔离性不好 Ø 目标 Ø 异地容灾、高可用 Ø 节省专线带宽 Ø 支持三级网络架构 Ø 支持按照租户进行隔离 Ø 运维入口统一 argus的架构 可用区 云管区(主备) 公共服务区 云管区(深圳、上海、廊坊) agent gateway proxy transfer0 码力 | 30 页 | 10.40 MB | 1 年前305. OpenKruise镜像预热实践_王思宇
parallelism: 10 completionPolicy: type: Never pullPolicy: backoffLimit: 3 timeoutSeconds: 300 特点: • 不配置 selector,默认全集群范围 • 集群中新增节点自动触发预热 • 采用 Never 策略长期运行 采用 Never 策略下,ImagePullJob 每隔 24h 左右会触发在范围内的所有节点上重试 activeDeadlineSeconds: 1800 ttlSecondsAfterFinished: 300 pullPolicy: backoffLimit: 3 timeoutSeconds: 300 特点: • 不配置 selector,默认全集群范围 • 采用 Always 策略一次性预热(也可以配 置为 Never,视场景而定) 整个 job 预热超时时间 30min job 完成后,过 5min 自动清理 pullPolicy: backoffLimit: 3 timeoutSeconds: 300 selector: matchLabels: resource-pool: faas 特点: • 配置 selector 为特殊业务对应资源池范围 • 资源池中新增节点自动触发预热 • 采用 Never 策略长期运行 03. 特殊业务镜像 – 资源池维度预热 版本前瞻:原地升级与预热的结合0 码力 | 28 页 | 5.78 MB | 1 年前3
共 61 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7