孙立:去哪儿网Java生态环境演进之路

个人简介 孙立,2011年加入去哪儿网,负责运维、DBA和公用系统开发团队, 目前在酒店事业部担任高级系统架构师。专注系统架构,性能优化,后端研发。将近十年的互联网从业经验和程序开发,对高并发,大数据量网站系统架构优化,高 可用性,可伸缩性,分布式系统缓存,数据库分表分库(sharding),大型复杂系统重构等有丰富的经验,并且对运维监控和自动化 运维控制有经验。国内NoSQL数据库的实践先驱者,开源消息队列Fqueue的作者。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 你好,孙立,我是InfoQ的编辑郭蕾,欢迎您来到QCon,很荣幸能够采访您,请您先自我介绍一下吧?

孙立:是来自去哪儿网的孙立,我现在在这边是在酒店,是这边的高级系统架构师,目前在这边负责一些系统架构方面的工作。

   

2. 我看到您的演讲主题是去哪儿网的生态环境的演进,我想问一下,去哪儿网一开始就是用Java吗?去哪儿网在Java的演进道路上经历了哪几个阶段?

孙立:我们去哪儿网从最开始的时候就是一直用的就是Java,我们从05年一直到现在,其实我们经历了大概有几个阶段,最开始的时候,因为我们是做搜索的,然后是以性能为主,所以说我们没有引入任何的框架,所有的开发都是基于最原生的,比如说我们页面就直接用Servlet,直接用JSP这样的方式在开发,然后到后面一个阶段的时候,我们开始引入,比如说那个Ant这样的编译方式来做一些编译,然后再到后面的时候,我们就,这边有产出交易系统,我们业务变得更加的复杂,那么用那个JSP,还有Servlet原生的方式的时候,我们遇到了很多的问题,所以说我们就引入了比如SpringMVC、MyBatis这些业界比较流行的框架来做我们业务系统的开发,然后到目前为止,我们公司的开发人员接近一千人,那么在这个人员规模的情况下,那我们要把大家的开发流程,包括所有的这些遇到这些问题都很好的去解决的话,那我们也产生了很多的工具,很多的系统来做支撑,那么我次就主要分享这些工具和系统,为我们带来一些帮助。

   

3. 就是您刚才提到了一个框架,框架的选择,我想问一下,您公司在那个框架的选择上是,在开源和自己研发这个上面是怎么抉择的,或者哪些是用开源的,哪些会自己研发?

孙立:我们公司的理念是说更倾向于使用现有成熟的开源产品,因为我们觉得现有成熟的开源产品,他在已知的一些Bug上可能解决的已经差不多了,如果我们都自己去开发,第一是成本问题,第二,我们可能会重新走一遍别人走过的路,所以我们更倾向于用现有的开源的产品,如果说现有的开源产品满足不了我们的需求的情况下,那么我们可能去改造它,另外一个,如果现有没有这些开源产品的时候,我们可能才会自己去研发一些东西。

   

4. 我在您的博客上看到您有写过一个开源的框架FQueue

孙立:这个Fqueue是一个开源的一个消息系统,应该说是开源的一个队列系统,他是我在上一家公司开始有这个想法的时候,它主要是为了解决一个高性能的这样一个队列这样一个问题的,然后它,我当时做的时候似乎是比那个LinkedIn那个Kafka好像还要早一点。

   

5. 看到这名字,FQueue,您当时为什么前面带点个F,这个名字是怎么来的呢?

孙立:F就是Fast的意思,比较快的意思。

   

6. 那你当时写这个系统的时候参考了哪些系统呢?

孙立:我们当时在做FQueue的时候,我们最开始是用内存在做,用内存后来出现问题,当我机器挂掉了,数据就会丢,后来我们就想用持久存储来做,就是存到磁盘上,当时我们调研了行业内的一些开源的一些队列系统,发现他们性能都不是太高,后来突然一天我们一想在磁盘上,比如我们现在的机械磁盘它的顺序写性能是非常高的,所以我们根据这个原理,就是在把它用到FQueue里边去,后来我们测试下来,其实QPS能达到30万,性能已经非常高了,也能满足我们我们比较高的这个性能方面的一些要求。

   

7. 你刚才还是提到了其他公司的FQueue,我这块特别关心就是,你研发这个FQueue有什么优势,它有什么优点或者是特点?

孙立:FQueue有几个特点,第一个是说,它是基于Memcache协议的,也就是说现有的这些各种语言,能用Memcache的各种语言都是可以用的,它兼容Memcache协议,这是它的一个优点。第二个是说,它的持久存储,它是用持久存储,并且是顺序写的方式,它不会因为那个队列里面堆积的消息,或者你写的消息的多少,而影响它的写入速度,它写的速度是恒定的,这是它的一个优势。第三个,就是它的性能比较高,这也是算它的一个比较大的一个优势。

   

8. 然后这个FQueue在你还在维护吧?

孙立:现在还在维护。

   

9. 它现在在Github上开源,它大概的Star量有多少呢?

孙立:现在还在Google上面,在Google Code上面维护的。

   

10. 然后呢,在你的讲题里头,我听到您有聊去哪儿网的自动化发布系统?能具体介绍一下吗?

孙立:我们去哪儿网的自动化发布系统,它是为了解决我们曾经手工发布,手工编译,通过脚本往线上发布,导致了一些问题,我们产生这样一个发布系统,我们的发布系统它把我们的代码管理,我们的发布流程,包括一些权限,还有线上发布这个过程全都给有效的管理起来了,它就是来解决我们这些问题产生的。

   

11. 这个发布系统大概是什么时候开始做得?

孙立:发布系统应该是在我们11年的时候开始做得,到目前为止已经快三年的时间,我们都是持续在根据我们遇到的一些问题,来持续更新和维护的。

   

12. 那三年多的时间,应该来说还算比较稳定了是吧?

孙立:整个下来还是比较稳定,但是我们一直在增加功能,比如说我们最开始仅仅是为了发布我们的Java的Web项目到线上,后来我们也支持PHP的一些项目也可以,比如我们发布那个Maven包也可以,比如说我们现在也可以用来发布安卓的这些都可以。

   

13. 那这个系统考虑开源吗?

孙立:这个系统目前都是公司内部在用,可能它跟我们公司内部的这个开发方式有关系,开源目前可能没有考虑,可能公司得看一下情况。就是说它跟我们公司的生产环境的,有些机房的部署,包括我们公司的对SVN的管理,比如git管理这个规范它是有关系的,可能并不适用于每个公司。

InfoQ:那就这些,谢谢您。

   

14. 那挺酷的,就是在这个系统的推广过程中有没有遇到什么问题?

孙立:我们这个系统在公司推广是一个由上向下的,因为我们CTO让我们做这个,最后要用的过程当中,就是让大家所有人必须用,当然这中间肯定也遇到一些问题,比如说我们之前大部分项目没有用Maven,那我们这个系统,我们要把标准化Maven这样的项目,那大家就会有一些工作量,当然很多人可能就有一些不太乐意,因为有工作量的产生,后来也是,就是我们督促大家,或者说要强制大家往这边切,所有的系统切完了之后,所有人都是觉得这个东西是非常好的,还是值得的。

你可能感兴趣的:(孙立:去哪儿网Java生态环境演进之路)