庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

最近做的一些事情

Posted on 2012-01-15 12:50 dennis 阅读(5184) 评论(20)  编辑  收藏 所属分类: 涂鸦工作随笔

    很久没写blog了,写写最近做的一些工作,给感兴趣的朋友做参考。
    首先是我们的kafka的“复制品”metamorphosis做了1.4版本,实现了同步复制方案,broker本身也做了很多优化,总体而言meta是一个非常成熟可用的产品了。甚至可以说是我在淘宝做的最好的一个产品。有些朋友总是问我们为什么不直接用kafka,而要另写一个?这里做个统一的解答。
(1)kafka是scala写的,我对scala不熟悉,也不待见,考虑到维护和语言熟悉程度,用java重写仍然是最好的选择。
(2)其次,kafka的整个社区非常不活跃,发展太慢,而我又不愿意去学习scala来参与社区发展,那么唯一的出路就是自己写。
(3)kafka的一些工作不能满足我们的要求,比如一开始它连producer的负载均衡都没有,它的消费者API设计还是比较蛋疼的。它也不支持事务,没有考虑作为一个通用的MQ系统来使用。并且它也没有高可用和数据高可靠的方案。
(4)我们做了什么呢?
a.用java彻底重写整个系统,除了原理一致,整个实现是彻底重新实现的。
b.我们提供了生产者的负载均衡(仍然是基于zk),重新设计了消费者API,更符合 JMS的使用习惯。
c.我们提供了事务实现,包括producer和consumer端的,包括本地事务和符合XA规范的分布式事务实现。
d.我们提供了两种数据高可靠方案:类似mysql的异步复制和同步复制方案。通过将消息复制到多个节点上来保证数据的高可靠。
e.我们提供了http协议的实现,并且本身使用协议也是类似memcached的文本协议,内部也增加了很多统计项目,可以以memcached的stats协议的方式来获取纯文本的统计信息。整个系统运维很方便。
f.提供了很多扩展应用:广播消费者的实现,多种offset存储的实现(默认的zookeeper,还有文件和mysql),tail4j用于作为agent发送日志,log4j appender扩展用于透明地使用log4j发送消息,hdfs writer用于将消息写入hdfs,storm spout用于将消息接入storm做实时分析,基本上形成一套完整的工具链和扩展。
g.一些其他功能点:group commit提升数据可靠性和吞吐量,连接复用,集群下的顺序消息发送,消息数据的无痛迁移和水平扩展,web管理平台等。

    meta未来会走开源的路子,不过不会是我来推动的,估计是在今年会有进展。

    我最近还写了一些小项目值得一提,首先是aviator这个轻量级的表达式执行引擎发布了2.2.1版本,主要是这么几个改进:
(1)支持多维数组变量的访问,如a[0][0]
(2)添加Expression#getVariableNames()用于返回表达式的变量列表
(3)添加AviatorEvaluator#exec方法来简化调用
(4)bug修正等。
    maven直接升级:
 <dependency>
                        
<groupId>com.googlecode.aviator</groupId>
                        
<artifactId>aviator</artifactId>
                        
<version>2.2.1</version>
        
</dependency>

    其次,hs4j这个handler socket的客户端,由新浪微博的@赵鹏城实现了inc/dec协议,添加了incr和decr方法用于更新计数,感谢他的贡献,如果你需要这两个功能可以自己从github拉取源码并构建打包,暂时不准备发布到maven。

    第三,关注高可用的Transaction Manager实现的可以关注下我的ewok项目,这是一个基于BTM这个开源JTA实现,提供基于bookkeeper的高可用的TM项目。将事务日志写到高可用的bookkeeper上,并利用zookeeper来做到故障的透明迁移,某个TM挂了,可以在其他机器上从bookkeeper拉取日志并恢复。代码已经稳定并做了性能测试,没有做进一步的破坏性测试。BTM是一个比JOTM和atomikos更靠谱的开源JTA实现,并且性能也好上很多,代码质量更不用说,建议有兴趣的可以看一下。我也为它贡献了一个事务日志写入优化的patch,日志写入性能提升了近一倍。

    最后,我在clojure上做了一些事情,首先是为storm项目贡献了两个patch:利用curator做zookeeper交互和添加storm.ui.context.path选项,前者被作者接受,后者暂时只对我们有用。前者让storm跟zk的交互更可用,后者是为storm ui添加了可选的相对路径。你都可以在我fork的分支上尝试,curator的patch在storm 0.6.2上发布,现在还是snapshot状态。昨天晚上牙痛睡不着,半夜写了个clojure STM profiler,用于统计分析clojure STM运行状况,诸如事务运行次数和时间,事务的重试原因和次数等,可以针对每个dosync的form做统计,有兴趣也可以看下。不过我其实更想将这个功能加入到clojure核心,会尝试提交下pull request。

   还有个工作上的变迁,我将在2月1号正式从呆了近三年的淘宝离职,加入一支充满活力的创业团队。从稳定的大公司出来,去加入一家初创公司,不能说没有风险,但是我还是想去接受新的挑战,愿意更新我的知识结构,愿意向牛人们学习。我在某个blog上说我今年遇到了人生中最大的挑战和转折,并不是说这个事情,而是我的儿子今年患了一场重病,庆幸在很多人的帮助和关心下,他勇敢地挺了过来,度过最困难的一关,现在还在继续治疗。我要感谢很多人,感谢淘宝,感谢我的TL华黎和锋寒,感谢我的同事和朋友林轩,感谢我们的HR,感谢三年后打交道的很多同事。没有他们,我今年真的过不了关,没有他们,我也不能进入淘宝并呆上快三年。

   最后的最后,我要特别感谢我的儿子,谢谢你的降生,谢谢你今年的勇敢,谢谢你给我们全家带来的快乐,谢谢你继续陪着我们 ,也希望你新年继续勇敢地坚持下去,我们必将战胜一切。     
   

评论

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-15 14:52 by test
祝你的宝宝早日康复!!!

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-15 20:43 by xf
你真棒!加油

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-16 11:35 by xiaoyu
祝你的宝宝早日康复!!!

# re: 最近做的一些事情  回复  更多评论   

2012-01-17 10:04 by zhh2009
要向你学习,你实在是牛X,太棒了,哈哈

# re: 最近做的一些事情  回复  更多评论   

2012-01-17 13:07 by jwfing
期待你的加入,祝你家宝宝早日康复!!

# re: 最近做的一些事情  回复  更多评论   

2012-01-18 09:22 by xing kenny
祝你的宝宝早日康复!!!

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-19 10:12 by ghostzhang
牛人

# re: 最近做的一些事情  回复  更多评论   

2012-01-19 14:54 by BlackHawk
祝宝宝早日康复!一切顺心!

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-19 17:40 by matthew
metamorphosis 会开源不?

# re: 最近做的一些事情  回复  更多评论   

2012-01-19 18:54 by NathanLHB
祝福!

# re: 最近做的一些事情  回复  更多评论   

2012-01-19 23:29 by Raidery
祝宝宝早日康复!合家欢聚!

# re: 最近做的一些事情  回复  更多评论   

2012-01-29 16:20 by LionBule
Good luck!

# re: 最近做的一些事情  回复  更多评论   

2012-01-30 17:13 by hankesi2000
一直默默关注着你,我觉得你在淘宝的技术和当前的职位是不符合的,期待出去后能有更多的收获!

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-01-30 21:55 by stone
avos在北京?

# re: 最近做的一些事情  回复  更多评论   

2012-01-31 14:46 by scud
Bless

# re: 最近做的一些事情  回复  更多评论   

2012-02-01 13:31 by shuihan
good luck ! 祝新年快乐,万事如意,宝宝健健康康成长!

# re: 最近做的一些事情[未登录]  回复  更多评论   

2012-02-23 10:08 by alex
牛人,祝福你和你儿子,愿你宝宝健康成长,也祝你工作更上一层楼!!

# re: 最近做的一些事情  回复  更多评论   

2012-02-24 16:56 by jzy
愿你宝宝健康成长!你是我的偶像!

# re: 最近做的一些事情  回复  更多评论   

2012-05-18 11:18 by 潇湘小笔
多谢分享,祝你新的领域成功,宝宝茁壮成长。

# re: 最近做的一些事情  回复  更多评论   

2015-03-13 11:44 by Wuaner
想听楼主发表一下对Scala的看法,为什么对其不待见?

只有注册用户登录后才能发表评论。


网站导航: