在刚刚过去的2017年12月31日,罗振宇在上海举办了《时间的朋友》跨年演讲,这场四个小时的跨年演讲吸引了近万的现场观众和超过百万的直播观众。在观众们聚精会神聆听的同时,得到App、电商平台等技术人员和阿里云团队也在一丝不苟地值守岗位。在这场知识晚会的背后,有哪些保驾护航的云技术和不为人知的故事?
罗辑思维是著名的知识服务商和运营商,有微信公众号、知识类音视频节目、知识服务得到App等产品。随着品牌日积月累的沉淀,其跨年演讲和其相关业务需求不断增大。罗辑思维大量核心业务运行在阿里云,目前团队使用了ECS、CDN、OSS、多款云数据库、负载均衡、容器服务、全链路压测PTS、Web应用防火墙、媒体转码、数据可视化等20多款产品。
对于此次阿里云护航,罗辑思维的技术负责人沈仁奎表示:“非常感谢阿里倾囊相授双11成功经验,作为产品的用户很感动,你们服务非常贴切,彻底融入到我们团队了解我们的业务形态,给出很多有价值、切实际的建议,对我们帮助很大。”
全链路压测,技术大考前的必备演习
全链路压测是应战业务大促不可缺少的关键技术,这是阿里历年备战双11的利器,在此次罗辑思维备战中它同样被应用得淋漓尽致。通过全链路压测规划跨年期间的系统容量,确定基准吞吐量和扩容缩容策略,找到特定场景下集群服务器配比和集群的短板,对于压测中发现的问题及时调整。
相比于经验判断和一般意义上的线上压测,全链路压测与业务场景更紧密相连,找到不同业务场景下的临界峰值,计算出每个业务应用的数量值,由点及线、由线及面从而获得整体情况;通过性能测试服务PTS(Performance Testing Service)编排全局业务场景和构造真实业务流量,达到让业务和技术架构提前经历业务洪峰的检验,确保跨年活动和日常核心服务的稳定性和健壮性。
罗辑思维的全链路压测接口愈200个,整体覆盖率超过50%,囊括了其得到APP和其独立电商平台的所有核心业务。在不到三个月的时间内,罗辑思维和阿里云PTS团队一共进行了大大小小愈七百次的单链路压测、十六轮完整形态全链路压测,压测所耗费的资源相当于一百多万用户一同测试两个多小时。为了不影响到罗辑思维用户的体验,其中一些全链路压测都是在半夜和凌晨进行的。
由于压测范围广,其发现问题能力和提升效果也相当显著。压测先后总计发现数百问题,经过逐一排查,压测目标的几乎所有主要后端服务的业务系统都被优化改造。举例说明,在压测中发现node侧应用CPU飙升的瓶颈,通过接入阿里Node.js性能平台,定位、分析异常并解决应用核心错误。经过技术人员们的不懈努力,系统吞吐能力提升上百倍。
ECS在手,资源呼风唤雨
在传统的基于IDC搭建业务情况下,必不可少的担心就是业务发展受制于固定且有限的资源。如果资源储备过多,那么在日常平峰或流量低谷时,就会造成巨大的资源浪费;可是如果资源准备不充分,在流量高峰时,又影响到用户体验。
云计算时代,弹性计算是首要优势。罗辑思维选用了阿里云ECS,该产品具备海量资源的弹性交付能力,可以保证在一分钟内创建出近1000台云服务器。罗辑思维日常情况下按照一定比例选用包年月和按量的两种服务器付费方式,在此次跨年演讲中增大了按量计费的服务器用量,峰值时该种服务器达1000+台,大大降低了计算资源成本和前期筹划准备成本。
除去成本之外,更重要的是使用效果和体验。从计算性能稳定性而言,通常情况下,整体的ECS业务可靠性比线下物理机可靠性有大幅提升(99.95%业务可用性保证);若搭配高性能SSD云盘,则相当于数据可靠性和业务可用性双重保险,这也是罗辑思维此次的选择。另外,ECS提供丰富的企业级实例,罗辑思维选用了最新一代基于skylake处理器、25G网络的企业级实例、大数据分析的D1型实例、高性能数据库I2型实例等,在性能和成本上都很出色地满足了需求。
容器服务撑起电商百倍高峰
在刚刚结束的跨年夜里,罗辑思维的电商业务售卖了数万件商品,其中单价为6.4W的积家手表一秒售罄。电商背后是怎样的技术支撑呢?
容器技术的出现,使得软件从复杂的交付及运维中解放出来。罗辑思维此次的电商业务依托于阿里云容器服务,通过分钟级一键部署和秒级海量容器启动,实现秒级的应用架构伸缩和一站式应用生命周期管理,不仅提高了系统资源利用率,降低了整体成本,而且简化了应用的管理及运维。
同时容器服务整合阿里云能力,提供集成的实现无关的容器应用存储、负载均衡、高可用、监控及日志管理,极大的简化分布式应用的管理及运维工作。在业务高峰突然来临之时,容器服务提供应用容器及集群资源二级的自动弹性伸缩,从容应对高峰流量。
在罗辑思维此次大促的电商准备阶段,在容器服务的支持和优化下,系统压测能力提升十倍。此次电商销售活动圆满完成,集群资源状况平稳、极小波动,支撑了较平时百倍压力的高峰流量。一些具体的优化有:针对跨年活动大流量场景,进行系统架构优化,针对场景进行网络参数优化;开启多核模式防止单核跑满;注意调配资源使用的策略,相关应用实现自动扩缩容;关注集群节点数、应用的实例数量配比等等。
DevOps能力如何提高?
众所周知,软件的构建、打包和部署是发布中的关键步骤,企业级开发者往往需要依赖Make、Ant、Maven等一系列工具才能完成源代码的编译和链接;而多编程语言和分布式开发则无疑加大了项目构建管理难度。除了对业务服务高可用及平台管理的支持,容器服务预置DevOps能力:覆盖应用从构建到交付到运维的整个生命周期,提供多种应用发布方式和持续交付能力,支持容器持续集成及交付最佳实践,支持阿里云及开源CI/CD方案并提供工具链整合。
工程师们将应用打包成Docker镜像并共享发布到阿里云镜像服务中,这取代了传统的程序的分发及环境安装配置,Docker镜像使得开发、测试和生产环境的配置变得简单而高效,“一处构建,各处部署”。
同时,通过编排模板,可以把一个应用的外部依赖、服务之间的关联,全部变成可追踪的代码;并且对版本管理进行更好的管控,以便快速上线和回滚。通过编排、和应用无关的不间断发布、蓝绿发布等发布策略的支持,极大提高了线上应用的高可用,降低了发布风险,提高业务系统的迭代速度。