赞
踩
本文来自Zuhaib Siddique的一次专访,Zuhaib是群聊IM制造商HipChat的生产工程师,下面我们一起看Tod Hoff的整理。
以下为译文:
如果从企业应用的生存率来看,选择企业团队信息作为主要业务,HipChat的起点绝非主流;但是如果从赚钱的角度上看,企业市场的高收益确实值得任何公司追逐,这也正是像JIRA和Confluence这样的智能工具制造商Atlassian于2012年收购HipChat的原因。
同时,或许你不知道的是,在Atlassian资源和人脉的帮助下,HipChat已经进入了一个指数增长周期。12亿的信息存储意味着他们现在每隔几个月的信息发送、存储和索引量都会翻一番。
如此快速的增长给曾经充足的基础设施带来了很大的压力,HipChat给我们展示了一个通用的扩展思路。从简单开始,经历流量高峰,然后思考现在怎么办?使用更大的计算机通常是第一个和最好的答案,他们也是这样做的。这给了他们一些喘息空间去考虑下一步怎么做。在AWS上,在某一个拐点之后,你开始走向云特性,也就是横向扩展,这就是HipChat所做的事情。
然而HipChat的发展也并未是顺风顺水,安全性的担忧推动了HipChat的云(SaaS)版本之外内部部署版本的发展。
即使HipChat没有谷歌那么大规模,我们仍能从中学到好东西,比如他们如何及时索引和搜索十亿信息,这也是IRC之类和HipChat之间的关键区别。在负载下索引和存储信息,丢失信息是一个艰巨的挑战。
这是HipChat选择的路,我们一起展开……
统计
平台
产品
XMPP服务器架构
存储架构
常规
未来
经验教训
1. 企业应用程序是摇钱树。卖入一个企业是很痛苦的,销售周期长意味着太多的不确定性。但是如果你成功卖出,那就会获得丰厚的利润,所以你应该考虑企业市场。时代在变,企业却可能是滞后的,但是他们仍然采用新工具和新的做事方式,这其中就有机会。
2. 隐私在产品给企业推销时变得越来越重要,它会直接影响到产品的选择与否。HipChat正在做他们产品的备用版本,以使那些不相信公共网络的客户满意。对于一个程序员来说,云作为一个平台非常有意义。对于一个企业来说,云可以是魔鬼。这意味着你必须做出灵活的技术堆栈选择。如果你在服务上100%依靠AWS,那你的系统移动到另一个数据中心将变得几乎不可能。这对Netfix也许并不重要,但是如果你想卖入企业市场,它就很重要了。
3. 纵向扩展以获得喘息的空间。当你等待弄清楚架构中下一步要做什么的时候,可以花很少的钱去纵向扩展,给自己几个月的喘息之机。
4. 选择不会失败的。HipChat做出了不会丢失用户聊天记录优先级,所以他们的架构将这个优先级反映给保存聊天记录到磁盘,在宕掉后系统恢复时会重新加载。
5. 进入本地。你的客户在许多不同的平台上,一个本地的应用将会提供最好的体验。对于一个初创公司,那是很多的资源,太多了。所以,卖给拥有更多资源的公司在某种程度上是说得通的,这样你可以建立更好的产品。
6. 功能和群组标志做出更好地发布惯例。如果你可以选择哪些组看到一个功能,如果你能在生产和测试中关闭功能,那么你就不用担心发布新的构建项目了。
7. 选择你真正自信的技术。ElasticSearch应对增长的横向扩展能力让HipChat很放心,同样也会有一个很好的用户体验,这才是最重要的。
8. 成为该流程的一部分,你变得更有价值,难以消除。HipChat作为人和工具之间的天然契合点,也是来编写实现各种有用工作流bots的天然点。这使得HipChat在企业中有发挥的平台,它使本来不可建造的功能得以实现。如果你能做到同样的事情,那么大家都会很需要你。
9. AWS需要在总线上存在一个单独的节点,这个要求看起来有点荒谬,但是在云环境下却非常重要,因为机器可用信息在第三方目的源中并不可见。如果着眼机架就会发现它经常有一个单独存在的总线插槽,如果其他插槽可用,他就会知道。这样,你就不必去猜测。在云中,软件采用基于原始TCP的连接技术和心跳,去猜测另一个节点是否发生故障,从而导致Split Brain问题及启用备库时产生数据丢失。这需要时间去演变,到达完全可靠还需要迈一大步。
10. 产品决策驱动堆栈的决定,HipChat服务器驱动技术堆栈的决定:Redis集群可以自托管;不选择亚马逊的DynamoDB,是因为HipChat在防火墙的后面创建一个托管服务。
11. 你需要打开视野。你需要容量规划,即使是在云中。除非你的架构从一开始就完全是原生云,否则任何架构都会有负荷的拐点,在拐点他们的架构将不再能够处理负载。看看增长速度,项目出来了。会打破什么?你将会做什么?而且不要再犯同样的错误。HipChat将如何处理40亿条消息?当下还无法知晓。
12. 了解系统的限制。EBS有1TB的存储限制,这是很大的限制,但如果你的存储已接近那个限制,就需要有一个计划了。同样,如果你的数据库,例如Couch,在压缩阶段要使用双倍的磁盘空间,那将会影响你的系统限制。
13. 这个世界会令你大吃一惊。六个月前HipChat认为Redis将会是最弱的环节,但现在它依旧很强壮,而Couch和EBS才是最薄弱的环节。
原文链接:How HipChat Stores And Indexes Billions Of Messages Using ElasticSearch And Redis(翻译/任云 责编/仲浩)
本文为CSDN编译整理,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。