全 Tumblr 150亿月浏览量背后的架构挑战( 二 )


此外,还开发了一个公用服务框架:
200台数据库服务器中,很多是为了提高可用性而设,使用的是常规硬件,但MTBF(平均故障间隔时间)极低 。故障时,备用充足 。
为了支持PHP应用有6个后端服务,并有一个小组专门开发后端服务 。新服务的发布需要两到三周,包括通知、二级索引、短地址生成、处理透明分片的代理 。其中在MySQL分片上耗时很多 。虽然在纽约本地非常热,但并没有使用,他们认为MySQL的可扩展性足够了 。
用于会长期运行无需人工干预的工作 。
可用性是以达到范围(reach)衡量的 。用户能够访问自定义域或者吗?也会用错误率 。
历史上总是解决那些最高优先级的问题,而现在会对故障模式系统地分析和解决,目的是从用户和应用的角度来定成功指标 。(后一句原文似乎不全)
最开始是用于Actor模型的,但是后来放弃了 。对于运行后无需人工干预的工作,使用任务队列 。而且的util工具库中有实现,服务都是用(Scala中的无参数函数,在与函数关联的并行操作没有完成时,会阻塞调用方)实现的 。当需要线程池的时候,就将传入池 。一切都提交到池进行异步执行 。
Scala提倡无共享状态 。由于已经在生产环境中经过测试,这方面应该是没有问题的 。使用Scala和中的结构需要避免可变状态,不使用长期运行的状态机 。状态从数据库中拉出、使用再写回数据库 。这样做的好处是,开发人员不需要操心线程和锁 。
22台Redis服务器,每台的都有8-32个实例,因此线上同时使用了100多个Redis实例 。
内部的(通信管道)
为收件箱设计的Cell架构
在纽约启动运作
团队架构
软件部署
展望
招聘流程
经验及教训
翻译:包研,张志平
【全Tumblr 150亿月浏览量背后的架构挑战】英文原文出自High