新闻动态

完善的7*24小时服务,携手共赢,共同成长

首页 新闻动态云计算文摘 正文

蘑菇街机房搬迁&Twitter图片优化

2016-06-02 14:18:42   
 
蘑菇街如何实现8小时不同省份机房整体搬迁?
苏武:挑战和问题时时刻刻都有,如果说对个人成长最重要的,我觉得有以下两次:第一次是 2014年,整个蘑菇街从一个机房一夜之间搬迁到了另外一个机房,这两个机房还不在同一个省份,我主导了这个项目;第二次,2015年的双 11,我主导了系统保障工作。

以上是苏武对话高可用架构时分享蘑菇街技术演进过程中最难忘的成长经历或挑战。他首先分享了2014年蘑菇街机房迁移项目,当时蘑菇街总体情况包括机房、整体架构、系统运维、后端存储、DB、cache、中间系统之前的依赖和前面接入方式等,苏武需一一进行了解,多次演练后收获如下:

  • 1. 知识面扩大,会思考所有的技术方案与决策,并重新审视对开源系统的评估和使用。
  • 2. 重新审视当前的架构,开始反思做得好与不好的地方。
  • 3. 理解架构的平衡艺术。
  • 4. 提升沟通能力。

接下来分享了2015年蘑菇街双11系统保障项目,苏武团队为了保障系统的高可用性,提前梳理架构风险,通过业务目标评估峰值,在主链路上做Ngnix限流降级改造及制定高峰期预案等,苏武通过这个项目认识到前瞻性思维的重要性。
然后阐述蘑菇街从导购网站转型至电商网站遇到的技术挑战,即:

  • 1. 请求量的压力。
  • 2. 业务复杂性增大。
  • 3. 一致性与高可用能力。
  • 4. 降低耦合与服务化能力。

而蘑菇街如何在访问突增时保持高可用性?苏武对2013年至2015年蘑菇街技术演进过程做了补充。2013年,苏武团队对LNMP架构做出改进,包括业务垂直拆分、核心功能服务化及采用更好的硬件,实现蘑菇街的架构转型;2014年,苏武团队自研蘑菇街服务化框架Tesla;2015年,苏武团队自主开发监控产品,为更有效地应对电商网站的峰值时刻,他们同时开发了开关平台和限流降级。
随着业务越来越复杂,苏武团队对架构调整了2点:

  • 1. 技术产品的准备,主要目标是实现分布式架构。
  • 2. 业务平台的沉淀,业务层面实现分层架构。

2015年苏武团队为应对双11,实现蘑菇街的服务化改造,做了以下6件事:

  • 1. 架构梳理。
  • 2. 系统容量评估。
  • 3. 线上全链路压测。
  • 4. 梳理各类系统的依赖关系。
  • 5. 在用户请求入口做限流方案,包括QPS限流和后端服务反馈的监控数据做的动态限流。
  • 6. 梳理预案后,全链路压测时进行验证。

本文最后介绍了架构师的优秀品质,并对有意成为架构师的程序员们给出建议。

金句:

架构没有完美,只求在时间、资源、需求三者之间有比较好的平衡。
一个系统如果不能提供有损服务,则定义为强依赖,反之为弱依赖。

标签:架构、高可用、机房迁移

 
阅读原文
 

【神奇数字】

50分钟:Facebook 用户日均使用时间;16.5亿:Facebook 月活跃用户数;25PB:互联网打包存档之后的数据量;7年:斯诺登事件发生后,加密技术被采纳的提前时间;1千万:微软为了存储数据购买的 DNA 条数;1000亿:Google 每天翻译的单词数。

 
Twitter如何实现每秒优化 3000 张图片?

如今,Twitter每秒可以创建3000张图片,每秒可以传输200GB的图片。2015年,Twitter甚至从对媒体存储策略的优化中节省出了600万美元。
但Twitter也是经历转型才实现这一点,2016年Twitter可支持照片预览、多张图片、gif图、Vine短片及在线视频。本文通过对比2012年和2016年Twitter处理海量图片的实践经验,在写入形式和读取形式两个方面阐述了Twitter图片处理的设计升级。
2012年,Twitter在写入方式上,用户编辑图文发推至单一整体式端点,这种设计会造成以下4点问题:

  • 1. 浪费大量带宽。
  • 2. 对较大的新型媒体来说,缺乏良好的扩展。
  • 3. 内部带宽的使用效率低下。
  • 4. 臃肿的存储空间。

在读取形式上,用户因无法明确图片来源,及客户端向CDN请求图片变体,导致新变体无法引入。Twitter针对写入形式和读取形式的设计问题,逐步进行优化与升级。2016年,Twitter在写入方式上,通过解耦将上传与发送媒体分离,优点如下:

  • 1. 上传被设置为首要任务,上传终端建立后唯一职责是将原始媒体放入Blobstore中。
  • 2. 上传方式更具灵活性。
  • 3. 客户端与TEE对话,TEE与图片服务器对话,图片服务器将图片放置在BlobStore中,并向元数据存储添加数据。
  • 4. 媒体ID是媒体唯一的标识符,由图片服务器返回。

另外,在写入形式上,还实现分段可恢复上传,优点如下:

  • 1. 信号无缝连接。
  • 2. 客户端通过上传API来初始化上传进程,后端会发给一个mediaID,而mediaID作为标识符标记到上传过程中。
  • 3. 图片分为三部分,通过API来append每个部分,每个append调用都会有段索引,所有append的mediaId都是相同的。上传完成后,意味着上传过程终结,媒体可供使用。
  • 4. 更适应网络故障。
  • 5. 高收益。

最后介绍了Twitter读取方式上的设计改进,Twitter引入名为MinaBird的CDN源服务器,并在客户端(安卓)进行优化。

金句:

发送一条带图片的推特是一个要么全有要么全无的操作,最简单的方式就是锁定。因无法很好地扩展,尤其是如果网络状况不佳,Twitter很难再增加新功能。
分离处理:将发推与发送媒体分离,通过解耦的方式来处理,Twitter便可分别优化各个途径,同时能大幅增进操作灵活性。

标签:解耦、写入形式、读取形式

阅读原文
 

【精彩声音】

我们发现:世界正在将不断延展的计算能力放在数据中心之中。我们预计:到2025年,有70%-80%的计算、网络和存储将会进入可延展的数据中心内。(来自Jason Waxman

 
亿级商品数量下,当当如何构建平台化架构?
海量数据下,系统如何保持高可用性?
互联网架构的核心问题是什么?
电商网站如何构建平台化架构?

如果你对电商网站平台化架构感兴趣,相信本文会带给你启发。本文只针对当当中间层解决方案进行阐述。
本文首先介绍综合电商类平台当当的业务特征,即海量用户、品类繁多、7*24h、流量突增、业务复杂,如果遇上双11、节日大促,更增加当当业务的复杂性。为解决这些问题,本文针对当当的中间层技术栈,阐述了服务化、分片化、异步化和规范化四个框架解决方案,从而实现系统的高可用和弹性化。

服务化

首先简单介绍服务化框架的6个核心概念,包括远程调用、服务发现、负载均衡、服务治理、监控报警及异构语言。当当在异构语言上,采用Dubbo服务框架,基于Dubbo扩展监控报警功能,而在监控报警方面,当当使用自主研发的Agent。

分片化

分片化用于解决海量数据造成的数据库性能问题。随着业务需求越来越复杂,当当为避免共同调整业务和SQL,决定将业务技术与分片技术彻底分离,引入透明化的数据分片中间件。当当采用Java实现分库分表的解决方案。

异步化

当当对异步化的处理方式是任务调度和消息队列,详细阐述了任务调度和消息队列的区别及解决方案。任务调度,当当采用自研Elastic-Job分布式任务调度框架;消息队列分为可靠型和性能型,当当通过分析二者不足,得出解决方案:

  • 1. 初期使用队列表,通过作业读取存储于数据库中的消息。
  • 2. 混合使用队列表、ActiveMQ、Kafka、MetaQ及RocketMQ。

规范化

采用统一的解决方案,可有效地提升开发效率。当当采用的解决方案是使用统一的应用框架,应用框架名字叫dd-frame。
最后本文介绍当当的平台化理念即去中心化,并对去中心化的优势和劣势进行了详细的阐述。

金句:

去中心化会降低运维难度,分布式逻辑都在类库中,对运维影响小。中心化的中心节点需要有一套额外的集群做支撑,因为所有的流量都要走中心,一旦中心挂了后果很严重。因此运维和部署的复杂度都会增加。
服务化、分片化、异步化和规范化,并且需要在这些解决方案中考虑如何高可用和弹性化。

标签:架构、平台化、去中心化

阅读原文
 

【精彩声音】

GE 在 AWS 峰会上提到他们的存储能力:“相比我们完全在内部实现的最佳情况,还要节省50%总体拥有成本。”(来自@dkalintsev

 
从初级工程师成长为架构师需要几步?

小时候看过的动画片《圣斗士星失》,一名圣斗士从入门走到黄金需4步,一名初级工程师成长为架构师也是如此。
李庆丰,微博研发中心的高级技术经理,目前负责微博消息箱及开放平台的技术研发。本文是李庆丰在高可用架构后花园群3.19下午茶的演讲,分享技术人从初级工程师成长为架构师的四个阶段,具体如下:

第一个阶段:初级工程师

初级工程师具备编程语言和算法基础的知识,但编码规范与真正的业务开发实践之间存在距离。在这个阶段,初级工程师首先应夯实基础知识,养成良好的开发习惯。选择合适的学习环境,而非薪资。

第二个阶段:中级工程师

积累了一些开发经验后,初级工程师成长为中级工程师。在这个阶段,工程师应寻找可能的机会进行架构实践,并在满足项目交付时间的前提下,主动寻找项目中可供优化的地方。

第三个阶段:高级工程师

面对工作中不断出现的复杂问题和技术挑战,中级工程师对原有的技术框架和设计模式有更深的理解,随着实际应用场景的改变,工程师在此基础上可独立设计和维护大型服务功能,在团队可承担起高级工程师的角色。在这一阶段,架构知识由泛至专。在特定业务场景下,他们对架构有清晰的目标,利用已有架构技巧实现目标与成本的平衡,满足业务要求。

第四个阶段:首席架构师

工程师走到这一阶段,更多需要的是对行业的热爱和合适的成长平台,而且除了个人努力和学习积累外,一个好的实践平台也至关重要。这个阶段,工程师需处理无数实际问题,包括服务器性能瓶颈、服务器宕机、异常峰值应对、分布式数据一致性及海量存储问题等,不断总结经验和教训,逐渐成长为首席架构师。
本文最后总结了架构知识的拓扑,包括互联网架构要求、SLA设置、监控要求,阐述了架构师与首席架构师的本质区别在于术与道,还介绍了技术人可通过技术阅读、学习及分享等方式,实现知识的获取及消化。

金句:

架构是在互联网的场景中,保障服务高性能、高可用、可扩展的一系列技术措施。架构的维护成本是评价其好坏的重要因素。
SLA体系是架构的基础,即作为对外部的保证,也是对内部的约束。

标签:架构、高可用、工程师

 
阅读原文
 

【精彩声音】

转向微服务不会拯救你。借的每一笔钱数变少了,并不会改变你已经破产这个事实。(来自@kelseyhightower

 
据说迅达云超人占领了中国云计算大会...

2016年5月18日的第八届中国云计算大会的会场上,竟然出现了超人!
程序员虽然没有超人的体魄,但有着超人的精神,而且在电影《超人II》中,还发现了BASIC的完整源码。 程序员对超级英雄的喜爱,一方面源于程序员渴望挖掘自身潜能,另一方面源于程序员拥有改变世界的愿景。在信息技术领域,云计算的出现如超人一样,云计算不仅引发信息技术的变革,还加速传统行业拥抱互联网,另外前沿科技如量子计算、人机互动、智能制造等领域,在云计算的助推下,有望获得技术性的突破,开辟人类认知的新天地。
2016年5月18日-5月20日,迅达云出席在北京国家会议中心举办的第八届中国云计算大会。迅达云展台惊现超人PK蝙蝠侠的拟人模型,吸引众多参会者合影留念。19日下午,迅达云策划云秀场有奖答题活动,与现场观众友情互动,并送出惊喜礼品。
2016年,是云计算与传统行业的融合元年。身处浪潮之中的迅达云,即是见证者也是参与者。迅达云是业界领先的云计算服务提供商,专注于提供互联网及企业IT相关基础设施云服务,其产品覆盖计算、网络、存储三大IT基础设施领域,包括:云主机、云硬盘、云分发、SDN、负载均衡、Redis数据库及NoSQL数据库等。目前迅达云与陌陌、知乎、易车网、盖娅互娱、王府井百货、沃尔沃汽车等众多知名企业达成合作关系。
历经八年的发展,中国云计算大会发展为业界的风向标,聚集政府机构、科研院校、业界同行、技术媒体、终端用户等各领域人才,探讨云计算如何应用于实践。迅达云作为国内专业的云服务提供商,成立之初以满足客户需求为核心,帮助客户实现云计算应用落地,推动云计算产业走向世界。

 

【精彩声音】

这是一个一而再再而三发生的故事。当你重写软件时,就会丢到那几百个微小的改变,当初添加这些改变都有很好的理由。一定不要盲目这么做。(来自 aytekin

 

点击回顾
第一期:Docker@Uber
第二期:约束、创业维艰、Instagram这五年
第三期:微信和 Google 的高可用
第四期:阿里和新浪的异地多活
第五期:庆祝3周年&新网站上线
第六期:居安思危——十年IT灾难全面回顾和总结
第七期:必读的16篇最新分布式系统论文
第八期:微信 vs QQ,腾讯的左右互搏
第九期:分布式系统与不断加速的技术
第十期:英雄联盟 LOL 的网络和 Google 的数据中心
第十一期:经典回顾——大规模服务设计部署经验谈

 
关注SpeedyCloud官方微博
掌握最新动态和优惠
扫描SpeedyCloud官方微信
获取价值50元免费云主机
欢迎发送邮件到social@speedycloud.cn,聊聊你对于“SpeedyCloud云计算技术文摘”的想法和建议,也欢迎你说出对于SpeedyCloud迅达云成公司的意见和看法。