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在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 Go语法简练;没有学习压力 • 开发效率高;语言描述能力接近于脚本语言 • 性能高;接近于C/C++,充分利用资源 • 容易部署;可执行程序,编译时解决上线部署、运行时的依赖 • 强大的标准库、丰富的第三方库、go test、pprof • 自动内存管理;内存泄漏与野指针是C/C++语言开发者的噩梦 • Go routine + channel;简单的并发与简易的数据同步 5 系统整体方案 平滑上下线Mysql。 • 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表 • 分表设计——按照范围分表(年、月、日、整形) • 数据库表在多个mysql实例间平滑扩容 • 大表拆分为多个子表情况下的平滑扩容 7 系统整体方案 • 现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高0 码力 | 17 页 | 4.02 MB | 1 年前34.GPT 与数据库的生态整合
GPT 与数据库的生态整合 王琦智 PingCAP TiDB 开发者生态高级工程师 目 录 自然语言到 SQL 01 自然语言到图表 02 GPTs 调用数据库 API 03 总结 04 自然语言到SQL OSS Insight 自然语言到图表 Thoughts to insights made easy(with AI) GPTs 调用数据库 API Thank You0 码力 | 21 页 | 3.33 MB | 1 年前3Go 构建大型开源分布式数据库技术内幕
Go 搭建大型开源分布式数据库技术内幕 shenli@PingCAP 关于我 ● 申砾 (Shen Li) ● TiDB 技术负责人 ● 网易有道 / 360搜索 / PingCAP ● Infrastructure software engineer 为什么需要一个新的数据库? 从单机数据库到 NewSQL ● 关系型数据库 ● NoSQL ● 中间件 ● NewSQL Processing) ● 24/7 availability, even in case of datacenter outages ● Open source, of course 如何构建分布式数据库? 原则 ● 分层 ● Make it right and make it fast. ● 测试很重要 ● 简单易用 ● 和社区结合 架构 TiKV TiKV TiKV TiKV Raft0 码力 | 44 页 | 649.68 KB | 1 年前3使用Go与redis构建有趣的应用
使⽤用 Go 和 Redis 构建有趣的程序 ⻩黄健宏 @ huangz.me 关于我 • ⻩黄健宏,⽹网名 huangz ,⼴广东清远⼈人。 • 计算机技术图书作者和译者,偶尔也写⼀一点⼩小程序⾃自娱⾃自乐。 • 精通 Go、 Python 、 Ruby 、 PHP、 C 等数⼗十种语⾔言……的 Hello World ! • 著作:《Redis 设计与实现》,《Redis 使⽤用教程》(写作中)。 使⽤用教程》(写作中)。 • 翻译:《Go Web 编程》,《Redis 实战》。 • 开源⽂文档:《Go 标准库中⽂文⽂文档》,《Redis 命令参考》,《SICP 解题集》等。 • 个⼈人⽹网站: huangz.me 。 路路线图 路路线图 ⼀一. Redis 简介 路路线图 ⼀一. Redis 简介 ⼆二. 使⽤用 Redis 构建锁 路路线图 ⼀一. Redis 这些⽅方法。 • 最后,不不同实现的效率和功能通常也会有所不不同,我们要根据⾃自身的情况进⾏行行选择,不不要盲⽬目的 相信所谓的“最优解”。 多谢⼤大家,得闲饮茶! thank you! ©⻩黄健宏, 2017 · 保留留所有权利利,禁⽌止未经许可的转载和商⽤用0 码力 | 176 页 | 2.34 MB | 1 年前32.1 gofmt 的文化演变
1:3999/gofmt-cn.slide#1 2/34 gofmt Go源代码格式化工具 定义了“标准“格式 golang.org代码库中所有提交的Go代码都必须通过gofmt格式化过 除了gofmt之外,相同功能可以通过go/format库获得 不需要设置! 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 错误的结论:自动格式器必须要有很多选项! 但是有很多选项的格式器其实违背他们的目的 此外,支持很多选项是难的 尊重用户的想法是最关键的 处理注释是很难的 语言本身也会增加很多额外的复杂度(比如,C的宏) 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 7/34 格式化Go 4/21/2015 gofmt 的文化演变 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 10/34 处理源代码 使用`go/scanner`, `go/parser`及其相关的库 给每一个go文件生成一个抽象语法树 每一个语法结构都有相应的AST节点 // Syntax of an if statement. IfStmt = "if" [ SimpleStmt ";"0 码力 | 34 页 | 9.97 MB | 1 年前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
Runtime API FaaS runtime … 36 是不是感觉有点像? 别急, 再看看他们面临的设计问题…… 另一种视角看待 Runtime API 37 设计OS kernel: 宏内核(Monolithic Kernel) 还是 微内核(Micro Kernel)? Kernal mode User mode FS IPC VM Multiplex shell ls app app …… Different Hardware System call Monolithic Kernel 另一种视角看待 Runtime API 38 设计OS kernel: 宏内核(Monolithic Kernel) 还是 微内核(Micro Kernel)? Kernal mode User mode FS IPC VM Multiplex shell ls app0 码力 | 63 页 | 880.85 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景 忽略了许多细节。 这对鼓励新手Go程序员学习和使用Go非常有好处, 但另一 方面,这也使许多Go程序员对他们的Go知识掌握程度过度自信。 从长远看, 这不利于一个Go程序员更好地理解和使用Go。 标准库包中声明的某些函数和类型没有得到详细的解释。很多时候这是可以理 解的。 因为很多细节解释起来很拗口和微妙,有时很难找到适当的措词来清楚 地解释它们。 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go0 码力 | 608 页 | 1.08 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景 而忽略了许多细节。 这对鼓励新手Go程序员学习和使用Go非常有好处, 但另 一方面,这也使许多Go程序员对他们的Go知识掌握程度过度自信。 从长远 看,这不利于一个Go程序员更好地理解和使用Go。 标准库包中声明的某些函数和类型没有得到详细的解释。很多时候这是可以理 解的。 因为很多细节解释起来很拗口和微妙,有时很难找到适当的措词来清 楚地解释它们。 少量但准确的描述比大量但不准确的描述要好。但这确实也0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景 了许多细节。 这对鼓励新手Go程序员学习和使用Go非常有好处, 但另一方面,这 也使许多Go程序员对他们的Go知识掌握程度过度自信。 从长远看,这不利于一个Go 程序员更好地理解和使用Go。 标准库包中声明的某些函数和类型没有得到详细的解释。很多时候这是可以理解 的。 因为很多细节解释起来很拗口和微妙,有时很难找到适当的措词来清楚地解释 它们。 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go程序员们留0 码力 | 591 页 | 21.40 MB | 1 年前3
共 58 条
- 1
- 2
- 3
- 4
- 5
- 6