JavaOne美国之行–硅谷公司交流篇

趁着去旧金山的机会,参观下硅谷的一些公司也是重要的行程,这次我们主要拜访了位于旧金山城内的Terracotta,位于硅谷的Google和Facebook,和这些公司的交流确实让我们学习到了更多的东西,分别来看看。

趁着去旧金山的机会,参观下硅谷的一些公司也是重要的行程,这次我们主要拜访了位于旧金山城内的Terracotta,位于硅谷的Google和Facebook,和这些公司的交流确实让我们学习到了更多的东西,分别来看看。

    Terracotta


Terracotta最近的风头很盛,很多地方都能看到关于他们的BigMemory的介绍,BigMemory集成到了Ehcache,从而为开发人员提供了一个很透明的多层cache,层次为jvm堆内的cache–>jvm堆外的cache–>disk–>分布式的cache server,随着层次的增加,访问的速度越来越慢,但可缓存的数据则越来越多,这个层次设计的确实非常不错,同时带来的好处也非常明显,可缓存的数据就可以变得非常大了,jvm堆外的cache貌似其采用的是Direct ByteBuffer实现,因此当访问堆外的cache时,需要进行序列化/反序列化,速度会有所下降。
说到工作气氛方面,到Terracotta的时候,就看到了中间有个巨大的桶,放了很多冰冻的啤酒,开会的同学们每人一瓶啤酒,吃着零食,:)

    Google

Google是一个非正式的交流,因此在技术上没有太大的东西,了解到的信息只有:google的fellow是很少的,大概只有4–5个;系统的发布只需要点击下reload即可实现;通常不需要登录到生产环境机器查找问题,问题主要是通过monitor来报告,通过一个http的页面查看程序的具体运行状况来发现问题,不过每个team可能会不一样;如需要使用bigtable这类基础的东西,只需要申请即可,环境、运维等均由bigtable team来处理。
在Google吃了午饭,确实名不虚传,好吃呀,另外google的工作环境好像和传说中的有点不一样,工作区域是由一个又一个的透明房间组成,每个房间大概坐4个人,免费的饮料、零食到处都是,也很好吃,:),可以带宠物上班,午餐后很多人在遛狗,打沙滩排球,上班时间很弹性,一堆人都在10点后才开始上班。
著名的google自行车

google园区一

google园区二

google园区内的沙滩排球

    Facebook

和Facebook的交流非常不错,能感觉到他们技术人员获得的巨大成就感和荣耀感,并且这也是一家很open的公司,先后和他们开放平台的人、MySQL DBA以及自建DataCenter的人进行了交流,和开放平台交流的部分cenwenchu同学(http://blog.csdn.net/cenwenchu79/)会介绍,我还是说说和他们MySQL DBA以及自建DataCenter的人的交流。

和MySQL DBA的交流
他们的团队才4–5个人,太让人惊讶了,果然是典型的精英文化呀,在没招google的那个mysql高人之前,他们从来就不修改mysql的代码,而是由他们clever的工程师绕过各种各样的bug,但自从招了google的这位高人后,他们就在mysql上提交了一堆的patch(详细见www.facebook.com/mysqlatfacebook),其中就有最近很火的online schema change tool,这也是他们的文化:hire for good people,and listen to them。
为什么他们4–5个人能维护这么多的MySQL数据库呢,他们保障网站的可用性采取的两层团队,第一层是直接维护网站可用性的,当出现问题时他们可以处理大部分的问题;处理不了的问题将流转到mysql DBA,应用的owner,对于这些处理不了的问题MySQL DBA,应用的owner在之后都会想办法写一堆的tools来帮助第一层维护团队在以后能自助解决,因此在Facebook有一堆的工具,twitter最近也写了一篇文章(http://engineering.twitter.com/2010/09/tool-legit.html)来说他们对于工具的重视,在说网站的可用性保障这件事是,他们说到的另外一句话让我很感动,就是说到每个开发人员的心里都认为网站的可用性保障是他们的职责,因此都会把这事看得非常重要,并为之付出努力。
MySQL采用M-S结构,通过replication实现对等复制,之所以不采用不对等复制是为了避免维护的复杂,美国东西海岸的datacenter的延时大概为70ms。
Facebook网站严重依赖cache,差不多95%的流量会走入cache,剩下的5%才会走到MySQL,没有什么流量保护措施,因此一旦cache挂了,就会非常严重,这也就是9月23日Facebook出现的故障(http://www.facebook.com/note.php?note_id=431441338919),cache都是访问同datacenter的,一旦当前datacenter的cache出现问题,并不会调度到其他的datacenter。
交流时说到Facebook的一个活动,挺好玩,就是每隔一段时间,会在一个晚上让大家来做自己感兴趣的事,做一个通宵,然后通过演示来向大家讲解,好的东西就入选成为产品。

和自建DataCenter的人的交流
Facebook从今年开始了自建datacenter(http://www.facebook.com/prinevilledatacenter),以前的也都是租的,这个自建的datacenter大概会在明年年初上线,方式和google的基本一样,也是自己设计服务器,我问了下datacenter建设的人才是如何培养或招聘的,他们说美国这类人才其实还是比较多的,而服务器设计方面的人才主要还是来源于google。
Facebook的人说到,当服务器多了后,自建几乎就是必须的了,而且能源问题将成为巨大的问题。
在datacenter上耗费时间最多的是选址,因为涉及到能源问题,政府支持的问题,:)
Facebook很重视机器的使用效率,据说他们现在机器的使用效率比google还高。

Facebook的工作环境是开放式的,显示屏很大,应该都是30寸以上了,CEO就坐在中间一个透明的房子里,:),免费的饮料和零食也一样到处都是。
低调的Facebook门牌

Facebook参观者留言板

Facebook的球,参观者贴在身上的纸条最终将贴回到这个球上,这个很有意义,看看到Facebook上市那天,这个球会变成多大。

JavaOne美国之行–大会组织篇

一场成功的大会,除了一堆强劲的Session和Speaker外,大会的组织也至关重要,这次OOW+JavaOne总共4.1w人参加,JavaOne有380+个Session,分为两个主要的场所,同时开始的Session通常会有10多个,要组织好实在不是件容易事,来给大家分享下自己感受到的大会的组织,总体感觉的话组织的还是非常不错的,细节方面分成四个方面来讲下:Session的形式,session的指引,活动的组织以及午餐。

一场成功的大会,除了一堆强劲的Session和Speaker外,大会的组织也至关重要,这次OOW+JavaOne总共4.1w人参加,JavaOne有380+个Session,分为两个主要的场所,同时开始的Session通常会有10多个,要组织好实在不是件容易事,来给大家分享下自己感受到的大会的组织,总体感觉的话组织的还是非常不错的,细节方面分成四个方面来讲下:Session的形式,session的指引,活动的组织以及午餐。

    Session的形式

Session主要是这么四种形式:讲的;Speaker讨论的;开放式讨论的;动手实验以及自己组织的Session。
有点奇怪的是讲的竟然通常是两个人,甚至三个人讲的,反倒一个人讲的不多,本来一直觉得多个人讲一个Session,而且只是一个小时的Session挺难安排的,但惊奇的听到有几场的搭配是非常好的,例如GC MythBusters那场,Tony和他的搭档配合的非常不错,一人说一个tip,然后另一个来总结这个tip。
Speaker讨论的有好几场,这种场次的形式通常是PPT上列出几个问题,然后几个Speaker来分别表达他们的观点,例如最经典的就是JRockit、J9和Hotspot的主要作者一起讨论的那场,大家可以很清晰的听出几个JVM不同的发展重点,:)。
开放式讨论的就是由参加的人来向台上的一堆人提问,这个通常要求参加的人有所准备,又准备的人收获会比较多。
动手实验这个很经典,就是给参与者电脑,直接在电脑上操作,然后学会到一些东西,由于是现场操作,通常这个是一个快速学会东西的时候,例如这次JRockit Mission Control的HOL,就可以让参加的人很快的学会如何用JRMC来查一些问题,当然,这对Speaker要求其实比较高,因为要设计好HOL。
自己组织的Session就是放了一块公告牌,然后向自己讲的人可以贴上想讲的话题,然后大家去参与就可以了,这个也非常的好,尽管我没去…

    session的指引

在会场周边的路上会有各种各样的指引,例如地上的,路灯牌等。
地上的指引

这么多的场所在举办Session,如何让参与者尽快的找到自己要参加的Session的地方,这是很重要的,Oracle主要是通过网站的schedule builder,让你知道你要参加的session的地点,然后当你走入相应的hotel的时候,都会看到一堆的指示牌,让你知道你要去的房间在哪里,而在每个房间的门口都有一个大显示屏,告诉你这个房间正在或将要进行的session,speaker,如你在网站上已选了这个session,那么你就可以直接扫描自己的与会卡,然后进去,如果没注册过,刷卡的时候会显示黄色,这个时候就只能等待了,通常要等待到开场后,看看人是否已满,如果满了的话就去不了了,我觉得这非常的好。
大显示屏

对于少数需要去较远场所参加的session,都有专车接送的,这个也是相当方便的,而且车的数量是很充足的。
不过这个唯一的不好就是schedule builder的那个网站访问的速度实在是太慢,而且还经常出现访问不了的现象,另外就是session以及地址总是变,还好是一般都会另外再发邮件告诉你你所选的session变更的信息。

    活动的组织

这次JavaOne除了Session以外,还组织了一些活动,例如在旁边一个街道上搭起的帐篷,大家可以进去聊聊天,玩玩google赞助的lego,或者是找java.net上的一些projects的人聊聊。
还有就是几乎每晚都有酒会,酒会的形式多数是自助餐,然后一些酒,最经典的是22号晚上,oracle给所有参会者的答谢party,在旧金山的金银岛上召开,里面有一堆的游乐设施,例如摩天轮等,然后就是自助餐,还有就是请了著名的黑眼豆豆乐队以及前老鹰乐队的灵魂人物来现场,可惜我不知道黑眼豆豆,后来知道感兴趣的同学是非常非常的兴奋,都觉得Oracle的这个party办的非常的好,尽管据之前在美国呆了挺长时间的同事说美国公司的年会差不多都这样,但对于我这种土包子这个party还是很震撼的。
party 娱乐设施

party 乐队现场

    午餐

午餐对参会者很重要,而且多数情况下中午都只有半小时吃饭的时间,还好国外的东西通常几分钟也就吃完了,这次午餐感觉组织的一般,经常会出现一个会场排队排了一会后被告知没有午餐的现象。

最后,就是会场的无线网络还是非常不错的,这个太重要了,:)