内容简介:官方给出的 vttablet 定义如这个系列的文章,主要面向
vitess 是 facebook 开源的一款 mysql 数据库中间件,在业界有广泛应用,并且 github 上的库也在持续更新。这里,我选择其中最具代表性的 vttablet 模块,针对 go 语言开发的源码,对其具体实现进行分析。
官方给出的 vttablet 定义如 链接 ,简而言之,一个 vttablet 往下对接一个 MySQL 实例,往上对接 vitess 的其余中间件模块,是一个 MySQL 数据库的必经出入口。深入了解 vttablet 模块的源码,必将让我们对 MySQL 有进一步的了解。
这个系列的文章,主要面向 go语言 和 MySQL 数据库 有一定基础的朋友,会讲解得尽量详尽。当然,如果只是对 MySQL 感兴趣的朋友,也能收益不少。
解析主程序
1. 命令行入参
-
MySQL 相关
db_socket db_host db_port db_ssl_*
-
userKey 相关
app dba repl
- tabletenv 相关: 用于数据库查询、事务提交等配置
- mycnf 相关: 用于解析 mycnf 文件
解析入参时,会有一个打印 version 的控制项,包括 git、Jenkins 等环境信息,是通过 Makefile 中的 -Ldflags 的方式传入的。感兴趣的朋友可以参考 链接
Tips
这里有个很好用的小技巧,当传入未知参数时,用于强行退出
args := flag.Args() if len(args) > 0 { flag.Usage() log.Exitf("%s doesn't take any positional arguments, got '%s'", cmd, strings.Join(args, " ")) }
2. 参数校验
-
tabletenv 中的参数校验提供默认值
DefaultQsConfig
- 针对 实际运行 和 dry run(演练) 两种场景
-
校验内容分两类:
- 先校验配置是否冲突,例如对 transaction 的限制分为四种,必须选择其一
- 根据分类,再检验入参的数值是否满足要求
Tips
写程序时,对参数校验的逻辑要清晰,一方面是代码的逻辑,另一方面是参数的分类。
3. package 的初始化
-
tabletenv 的初始化
- 根据是否有 url 的参数输入,会初始化 查询日志 和 事务日志 的 HTTP 服务,用于返回对应的结果
- 返回结果支持 text 与 json 这两种格式
-
servenv 的初始化
- 当前 Linux 用户检查: vitess 认为用 root 用户运行程序毫无意义,必须为非 root 用户(在权限控制这块很有意义)
-
runtime 官方库中的参数
- runtime.MemProfileRate 默认为 512kb,即 512*1024。这是个参数一般是在 pprof 工具分析性能时,认为采样不够细致,可以调低这个参数,但是会导致性能下降。
- runtime.SetMutexProfileFraction(rate int) 默认为0,即不开启。开启后,可以在 pprof 上查询到互斥锁的持有者。
-
Gauge 参数设置
Getrlimit
-
Hook 中注册的函数运行
init()
-
tabletPath
从命令行传入的 tablet 别名,格式为<cell>-<uid>
,cell 和MySQL的拓扑结构相关,uuid 必须为整数 -
连接参数检查
如果无连接参数,那么就加载本地的 my.cnf 文件(在第 1 步中加载) -
注册ACL控制
- 服务初始化
-
查询服务初始化
- 新建拓扑服务 目前只支持 zookeeper,etcd和consul三种
- 注册函数 注册函数到 run 和close 中
-
Mysqld 初始化
包括 dba 和 app 的连接池初始化 -
action agent 初始化
- 将传入的多项服务进行初始化
- 所有产生的后台服务共用一个 context
-
程序运行
运行注册在 hook 里的函数,调用 servenv 包,运行程序
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 架构集成导读
- Golang 源码导读 —— channel
- Golang 源码导读 —— chann
- Golang 源码导读 —— channel
- [译] 可观察性导读:所见即所得
- Substrate代码导读:node-template
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Master Switch
Tim Wu / Knopf / 2010-11-2 / USD 27.95
In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!