小米 Go 开发实践——用 Go 构建高性能数据库中间件

前言

在 2019年第五届 Gopher China 大会上,小米科技基础服务高级研发工程师徐成选做了题为《用 Go 构建高性能数据库中间件》的技术演讲,详细介绍了小米开源的数据库中间件 Gaea 的整体架构、内部模块和一些具体实践。以下为演讲实录。

No.0

自我介绍

大家下午好,很荣幸能有这个机会跟大家分享一个用 Go 开发的数据库中间件项目。在之前先做一下自我介绍,我是2015 年年初开始用 Go,最早是用 Python 和 C 比较多,接触 Go 后就立刻喜欢上了这门语言。后来一直用 Go 做了一些项目,包括微服务、数据库和缓存中间件等,还有一些偏业务的基础服务,比如说库存中间层、ID生成器之类的。

640?wx_fmt=png

No.1

 Go in XiaoMi

首先简单介绍下 Go 在小米的一个使用情况,虽然部门分散,缺乏具体的数字,但是可以看到覆盖面还是非常广的。

640?wx_fmt=png

小米 2014 年引入 Go,最早解决商城日志收集问题。后面感觉表现挺不错,开始大力推广,像现在商城、云平台、金融、IoT 都是用 Go 都是比较多的。用 Go 做的项目有中间件、微服务(比如说我们商城有微服务框架是 koala,这个2016年投产了,目前有几百个微服务),还有更多的业务系统包括订单、活动、运营、API 接入层等都是用 Go 开发的。

中间件很多,NewSQL 发展迅速,为什么还需要 Gaea 这样一款中间件?个人感觉,作为一个单机时代的解决方案,DB proxy 还是有一定的存在价值,再就是也跟我们内部一个现状有关系。

640?wx_fmt=png

第一,我们内部其实是在用 MyCAT,但是了解很少,使用过程中出问题得不到及时解决,比如说连接过多、连接超时、load 过高和内存溢出等。

第二,这个配置比较麻烦,我们维护了 MyCAT 的一个内部版本,配置有一些写在表里,还有一些写在其他地方,这个很痛苦,易出错、难管理。

第三,还有一些 haproxy、kingshard 等充当了代理角色,不够统一。

基于以上三个原因,并且我们还要做 DB 服务化,所以诞生了 Gaea 这一整套系统。

1. Gaea 特性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值