vitess源码阅读笔记笔记之起因和编码风格
2012-04-05 13:22 ngaut 阅读(1488) 评论(0) 编辑 收藏 举报初学golang,找个项目作学习一下
1. why golang?
这个问题总是免不了无休止的争论,不想多说,如果你有如下体验,自然知道我在说什么,否则也不要问。
编译巨慢的模板,特别是让人又爱又恨的boost
逻辑拆分得支离破碎的asio
侵入性巨强的share_ptr
查过项目中内存泄漏,句柄泄漏
不受控的异常抛出
多线程程序的如履薄冰
过多层次的抽象
2. why not xxx?
erlang ? 不可否认非常强大,本人也很欣赏二郎的设计,无奈中c的毒太深,不适应erlang的语法
scala ? 尽管很强大,还有自己喜欢的actor,但静态语言设计得有必要这么复杂么,能一眼就看明白代码是干啥的不
有人说喜欢一个人不需要理由,但讨厌一个人有无数条理由。我要是喜欢golang的理由:
goroutine, interface, defer, closure, 多返回值,不用敲多于的分号,还有舒服的网络库等。
不可否认golang目前的缺点也很明显:库还不够完善,gc还不够理想。goroutine调度还不够快,这些慢慢会得到解决的。
别指望golang是银弹。
3. why vitess?
vitess是当前开源的golang项目中规模相对较大的一个项目(严格来说是大部分golang加少量的python) ,而且youtube也在用
回到正题先来看看编码风格和设计习惯
由于vitess的源码也在快速变化,因此这里的日记随时会跟不上官方的代码,但代码风格应该不会有大的变化。
1. 每个文件夹一个包(package),文件夹名就是包名
关于监控系统运作状态
vitess的多个模块都通过http的方式导出内部状态(json格式)来辅助调试和监控系统的运行状况 。
这年头不能通过浏览器监控系统的运作状态都不好意思跟别人讲啊。