【开源访谈】Kingshard 作者陈非访谈实录

孔小菜 发布于 2015/08/03 14:31
阅读 9K+
收藏 31

【项目简介】

Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。

作者陈非近照

【正文】

1.请简单地介绍一下你自己(技术背景、学习经历、工作经历)。

大家好,我叫陈非(@flikecn )。 2013年硕士毕业于电子科技大学,同年加入奇虎360的Web平台部,从事Atlas数据库中间件的设计与研发工作。2015年初加入了珠海金山WPS 云平台团队。新团队主要以Go作为开发语言,正是由于在新的工作中体会到了Go语言的开发效率很高,才让我萌发了写一个简单好用的Go版本的MySQL Proxy的念头。


2.开发 Kingshard 项目是基于怎样的缘由?

现在能够找到的开源MySQL Proxy项目应该有5-6个,这些项目大部分都有公司背景,很多功能的加入都结合了公司的业务场景,所以有时候显得并不是那么灵活好用。现在大部分公司 都会用到MySQL数据库,随着业务的增长,每个公司都不得不面对如何快速扩容、缩容,故障切换及负载均衡等诸多问题。开发kingshard的就是为了 让DBA借助于kingshard能够很方便地解决这些难题。


3.请您简单介绍下 Kingshard 的开发过程。

由于是kingshard是个人项目,上班不会花时间写kingshard相关的代码。主要开发集中在周末和下班后的闲暇时间,珠海的夏天太阳比较大,所以 我周末通常不怎么出门,这样就有机会宅在家里写代码了。周末的时间比较集中,主要用于kingshard的功能实现。平时下班,如果感觉状态还不错的话, 就会对kingshard进行bug修复。值得欣喜的是,已经有热心的网友开始加入到kingshard的开发中来了。


4.Kingshard 有哪些优势和特点?

现在来看,我觉得kingshard的优势和特点主要由以下几个方面:

(1). 可以轻松地应对mysql扩容和缩容。由于kingshard的采用了两级映射的分表方案(https://github.com/flike /kingshard/blob/master/doc/KingDoc/kingshard_sharding_introduce.md),相对于其 他开源Proxy,在扩容和缩容方面有很大的优势。

(2).kingshard的安装和使用不依赖于其他第三方组件,这样使得kingshard更容易部署和使用。

(3).kingshard还打算在降低管理和运维后端DB方面做出努力,目前该功能还在开发中。相信再过几个月,会有更多的新特性,大家可以期待一下。:)


5.Kingshard 适合应用在哪些场景?

Kingshard 比较适合于互联网公司。一般互联网公司的数据量都比较大,并且数据增长也比较快,利用单台mysql根本存储不了所有数据,大多数公司都会选择将一张大表 拆分成若干张子表,并分布在不同的数据库上。例如,在某些购物狂欢节来领之际,为了满足访问量的激增,希望快速上线多个slave来满足大量用户的访问请 求。如果公司是在业务逻辑层写分表相关的代码的话,面对这种需求,业务开发人员可能不得不加班加点地修改业务代码了,而且这样临时地修改代码也会给业务带 来一定的风险。但通过使用kingshard使业务和数据库分离,让业务逻辑仅面对一个超级数据库(kingshard),后端的数据库升级对业务完全透 明,这样就能很好地解决上述问题。


6.Kingshard 未来发展方向如何?

Kingshard致力于成为一个使用简单,运维方便,并能很好地解决mysql扩容缩容的数据库中间件。能够让互联网创业公司通过kingshard并配合其他开源软件(例如:LVS,MHA)快速搭建出一套稳定可靠的mysql集群。


7.平常你是如何管理和推广 Kingshard 项目的?

Kingshard 从开源到现在差不多两周了,但在开源中国和github上的关注人数超过400人。说明这个项目还是有价值的。最开始推广是在开发者头条,后来通过朋友介 绍认识了@红薯 ,然后在开源中国上推广了一下。经过这两次推广,增加了不少关注度。我还为kingshard建立了一个QQ群,聚集了一批可以说是粉丝 吧,我相信通过他们的传播,也能扩大kingshard的知名度。


8.能否谈一下你对开源的理解,以及对国内开源技术和产品的看法?

我觉得开源不仅仅是免费,开源对于一个企业来说,从某种层面来说,也是一种企业文化的输出。通过开源,企业可以提升自己在开发者中的知名度。对于个人来说,开发并维护一个开源项目,我觉得这个过程就像一次创业,在这个过程中,作者需要扮演各种角色:

(1).充当产品经理,为项目收集各种需求,并从中提炼出能够解决用户痛点的需求。

(2).架构师,如何设计和架构整个项目,把软件的性能、稳定性和扩展性都合理兼顾。

(3).开发和测试工程师,个人开源项目,大部分开发和测试工作也都需要自己完成。

现在国内的开源项目越来越多,开源项目涉及到的技术也越来越核心。这说明企业和个人开源爱好者对开源的态度越来越开放了。


9.你对开源中国有何意见和建议?

我觉得大部分开发者来开源中国,更多地是来获取技术知识或者开源项目资讯。首页的动弹虽然提升了用户的粘性。但并不能给开发者带来比较有价值的信息。所以说可以考虑将动弹放在子版块中。


10.请聊聊任何你想谈的话题。

MySQL 数据库中间件相关的开源项目很多,这说明用户在这一领域的需求很多。kingshard项目希望给开发者带来与以往数据库中间件不一样的新意,至少只在某 些方面,能够有比较完善的解决方案。后续有企业希望开发一个满足自己定制化需求的数据库中间件,他们能够从kingshard项目中汲取灵感,我觉得这就 是kingshard项目的价值所在。


关于开源访谈

开源访谈是开源中国推出的一系列针对国内开源技术发展的访谈,以文字的方式记录并传播。我们希望开源访谈能全面的展现国内开源软件、开源软件作者的现状,着实推动国内开源软件的推广与应用。

加载中
0
q
qwertycy
必须沙发支持啊,回头看看源码啊  牛逼啊
0
waylau
waylau
"首页的动弹虽然提升了用户的粘性。但并不能给开发者带来比较有价值的信息。"

hahaha~
0
OpenIoT
OpenIoT
有没有用在ms sql server上面的?
0
d
datousir
不错,加油
0
haitaosoft
haitaosoft

如果有架构示意图就好了。。。

对于客户端,只有1个数据库服务端。实际是1个写服务端+n个读服务端?

客户端的读请求,是n个里的任意一个返回的?写请求是同时写入到1+n个的??

这样,似乎,读的压力可以降低很多,但是写的压力基本还是一样。。。

另外,如果 pgsql也有这样的proxy,就好了!

flikecn
flikecn
后续我会写一篇介绍架构的文章的。
0
江南若水
江南若水

mycat类似?

这类型的个人框架一般公司不敢用啊。。

江南若水
江南若水
回复 @徐飞 : redis是个人项目?我记得是一个还算知名网站的线上解决方案吧。
flygogo
flygogo
例如 redis
flikecn
flikecn
看需求吧,有很多个人开发的项目也在大规模使用。
0
长宁楚王陈涉
长宁楚王陈涉

引用来自“waylau”的评论

"首页的动弹虽然提升了用户的粘性。但并不能给开发者带来比较有价值的信息。"

hahaha~
然而并没有什么卵用,OS 不会改掉。
0
flygogo
flygogo

只支持 主键 id的 sharding方案吗? 一般需求可能是 userid。

还有关于两级 sharding除了key 和 数量之外,可以考虑 两级 key sharding(因为数据的固定量一般差距一点并没有问题,但是可能是 userid + time 可能是两级需求更强烈的)

0
uestudio
uestudio
有没有应用实例,在实际应用过程中有没有碰到什么问题?
返回顶部
顶部