 Go在数据库中间件的应用Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 平滑上下线Mysql。 • 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表 • 分表设计——按照范围分表(年、月、日、整形) • 数据库表在多个mysql实例间平滑扩容 • 大表拆分为多个子表情况下的平滑扩容 7 系统整体方案 • 现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高0 码力 | 17 页 | 4.02 MB | 1 年前3 Go在数据库中间件的应用Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 平滑上下线Mysql。 • 主备自动切换(主-主模式)。 • 分表设计——按照Hash分表 • 分表设计——按照范围分表(年、月、日、整形) • 数据库表在多个mysql实例间平滑扩容 • 大表拆分为多个子表情况下的平滑扩容 7 系统整体方案 • 现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高0 码力 | 17 页 | 4.02 MB | 1 年前3
 4.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 年前3 4.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 年前3
 Go 构建大型开源分布式数据库技术内幕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 构建大型开源分布式数据库技术内幕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
 Hello 算法 1.0.0b4 Golang版Table」通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,我们向哈 希表输入一个 key ,则可以在 ?(1) 时间内获取对应的 value 。 以一个包含 ? 个学生的数据库为例,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入 一个学号,返回对应的姓名”的查询功能,则可以采用哈希表来实现。 Figure 6‑1. 哈希表的抽象表示 除哈希表外,我们 com 146 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4. AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 � 为什么红黑树比 AVL 树更受欢迎? 红黑树的平衡条件相对宽松,因此在红黑树中插入与删除节点所需的旋转操作相对较少,在 节点增删操作上的平均效率高于 AVL 树。 7.6 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。0 码力 | 347 页 | 27.40 MB | 1 年前3 Hello 算法 1.0.0b4 Golang版Table」通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,我们向哈 希表输入一个 key ,则可以在 ?(1) 时间内获取对应的 value 。 以一个包含 ? 个学生的数据库为例,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入 一个学号,返回对应的姓名”的查询功能,则可以采用哈希表来实现。 Figure 6‑1. 哈希表的抽象表示 除哈希表外,我们 com 146 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4. AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 � 为什么红黑树比 AVL 树更受欢迎? 红黑树的平衡条件相对宽松,因此在红黑树中插入与删除节点所需的旋转操作相对较少,在 节点增删操作上的平均效率高于 AVL 树。 7.6 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。0 码力 | 347 页 | 27.40 MB | 1 年前3
 Hello 算法 1.1.0 Go版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树也是一种常见的平衡二叉搜索树。相较于 AVL 树,红黑树的平衡条件更宽松,插入与删除节点 所需的旋转操作更少,节点增删操作的平均效率更高。 7.6 小结 1. 重点回顾 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 问题“最小路径和”来举例。 Question 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格的代价。 机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角单元格。请返回 从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 hello‑algo.com0 码力 | 383 页 | 18.48 MB | 1 年前3 Hello 算法 1.1.0 Go版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树也是一种常见的平衡二叉搜索树。相较于 AVL 树,红黑树的平衡条件更宽松,插入与删除节点 所需的旋转操作更少,节点增删操作的平均效率更高。 7.6 小结 1. 重点回顾 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 问题“最小路径和”来举例。 Question 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格的代价。 机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角单元格。请返回 从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 hello‑algo.com0 码力 | 383 页 | 18.48 MB | 1 年前3
 Hello 算法 1.0.0 Golang版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树在许多应用中比 AVL 树更受欢迎。这是因为红黑树的平衡条件相对宽松,在红黑树中插入与删 除节点所需的旋转操作相对较少,其节点增删操作的平均效率更高。 7.6 小结 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 第 13 章 回溯 hello‑algo.com 287 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 为了更形象地展示解题步骤,我们使用一个经典问题“最小路径和”来举例。 � 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格 的代价。机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角 单元格。请返回从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 hello‑algo.com0 码力 | 382 页 | 17.60 MB | 1 年前3 Hello 算法 1.0.0 Golang版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树在许多应用中比 AVL 树更受欢迎。这是因为红黑树的平衡条件相对宽松,在红黑树中插入与删 除节点所需的旋转操作相对较少,其节点增删操作的平均效率更高。 7.6 小结 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 第 13 章 回溯 hello‑algo.com 287 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 为了更形象地展示解题步骤,我们使用一个经典问题“最小路径和”来举例。 � 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格 的代价。机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角 单元格。请返回从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 hello‑algo.com0 码力 | 382 页 | 17.60 MB | 1 年前3
 Hello 算法 1.0.0b5 Golang版node } 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树在许多应用中比 AVL 树更受欢迎。这是因为红黑树的平衡条件相对宽松,在红黑树中插入与删 除节点所需的旋转操作相对较少,其节点增删操作的平均效率更高。 7.6 小结 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 为了更形象地展示解题步骤,我们使用一个经典问题“最小路径和”来举例。 � 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格 的代价。机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角 单元格。请返回从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 图 14‑10 最小路径和示例数据 第一步:思考每轮的决策,定义状态,从而得到0 码力 | 379 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 Golang版node } 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树在许多应用中比 AVL 树更受欢迎。这是因为红黑树的平衡条件相对宽松,在红黑树中插入与删 除节点所需的旋转操作相对较少,其节点增删操作的平均效率更高。 7.6 小结 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 为了更形象地展示解题步骤,我们使用一个经典问题“最小路径和”来举例。 � 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格 的代价。机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角 单元格。请返回从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 图 14‑10 最小路径和示例数据 第一步:思考每轮的决策,定义状态,从而得到0 码力 | 379 页 | 30.70 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Go 版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树也是一种常见的平衡二叉搜索树。相较于 AVL 树,红黑树的平衡条件更宽松,插入与删除节点 所需的旋转操作更少,节点增删操作的平均效率更高。 7.6 小结 1. 重点回顾 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 问题“最小路径和”来举例。 Question 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格的代价。 机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角单元格。请返回 从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 www.hello‑algo0 码力 | 384 页 | 18.49 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Go 版com 170 3. 查找节点 AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。 7.5.4 AVL 树典型应用 ‧ 组织和存储大型数据,适用于高频查找、低频增删的场景。 ‧ 用于构建数据库中的索引系统。 ‧ 红黑树也是一种常见的平衡二叉搜索树。相较于 AVL 树,红黑树的平衡条件更宽松,插入与删除节点 所需的旋转操作更少,节点增删操作的平均效率更高。 7.6 小结 1. 重点回顾 约束满足问题:这类问题的目标是找到满足所有约束条件的解。 ‧ ? 皇后:在 ? × ? 的棋盘上放置 ? 个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 问题“最小路径和”来举例。 Question 给定一个 ? × ? 的二维网格 grid ,网格中的每个单元格包含一个非负整数,表示该单元格的代价。 机器人以左上角单元格为起始点,每次只能向下或者向右移动一步,直至到达右下角单元格。请返回 从左上角到右下角的最小路径和。 图 14‑10 展示了一个例子,给定网格的最小路径和为 13 。 第 14 章 动态规划 www.hello‑algo0 码力 | 384 页 | 18.49 MB | 10 月前3
 Go Web编程4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 6.1 session和cookie POST, PUT等method信息。 102 login函数中我们根据r.Method来判断是显示登录界面还是处理登录逻辑。当GET方式请求时显示登录界面,其他方 式请求时则处理登录逻辑,如查询数据库、验证登录信息等。 当我们在浏览器里面打开http://127.0.0.1:9090/login的时候,出现如下界面 图4.1 用户登录界面 我们输入用户名和密码之后发现在服务器端 下一章: 访问数据库 114 5 访问数据库 5 访问数据库 对许多Web应用程序而言,数据库都是其核心所在。数据库几乎可以用来存储你想查询和修改的任何信息,比如用户 信息、产品目录或者新闻列表等。 Go没有内置的驱动支持任何的数据库,但是Go定义了database/sql接口,用户可以基于驱动接口开发相应数据库的驱 动,5.1小节里面介绍Go设计的一些驱动,介绍Go是如何设计数据库驱动接口的。50 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 6.1 session和cookie POST, PUT等method信息。 102 login函数中我们根据r.Method来判断是显示登录界面还是处理登录逻辑。当GET方式请求时显示登录界面,其他方 式请求时则处理登录逻辑,如查询数据库、验证登录信息等。 当我们在浏览器里面打开http://127.0.0.1:9090/login的时候,出现如下界面 图4.1 用户登录界面 我们输入用户名和密码之后发现在服务器端 下一章: 访问数据库 114 5 访问数据库 5 访问数据库 对许多Web应用程序而言,数据库都是其核心所在。数据库几乎可以用来存储你想查询和修改的任何信息,比如用户 信息、产品目录或者新闻列表等。 Go没有内置的驱动支持任何的数据库,但是Go定义了database/sql接口,用户可以基于驱动接口开发相应数据库的驱 动,5.1小节里面介绍Go设计的一些驱动,介绍Go是如何设计数据库驱动接口的。50 码力 | 295 页 | 5.91 MB | 1 年前3
 02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力Service Mesh 回顾 Service Mesh 回顾 4 由开发了 Linkerd 的Buoyant 公司提出 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服 务网格负责在这些拓扑中实现请求的可靠传递。在实践中,服务网格通常实现为一组轻量 级网络代理,他们与应用程序部署在一起,而对应用程序透明。 Service Mesh 的初衷 5 图片来源:0 码力 | 63 页 | 880.85 KB | 1 年前3 02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力Service Mesh 回顾 Service Mesh 回顾 4 由开发了 Linkerd 的Buoyant 公司提出 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服 务网格负责在这些拓扑中实现请求的可靠传递。在实践中,服务网格通常实现为一组轻量 级网络代理,他们与应用程序部署在一起,而对应用程序透明。 Service Mesh 的初衷 5 图片来源:0 码力 | 63 页 | 880.85 KB | 1 年前3
共 37 条
- 1
- 2
- 3
- 4














