微信号:infoqchina

介绍:有内容的技术社区媒体

【双十一技术故事】电商狂欢背后的云基础设施服务

2014-11-12 18:40 臧秀涛


每年的11.11促销,都是对几大电商的软硬件平台服务能力的一次大考。在系统升级改造的过程中,京东商城引入了自己的云平台,将交易、订单、仓储、搜索等核心系统需要的一些基础设施抽象了出来,以服务的形式提供。面对峰值负载,很多压力都会传导到底层的云设施。京东的云平台是如何准备来应对云存储的呢?为此InfoQ采访了京东商城技术研发体系云平台首席架构师刘海峰。他负责的是包括存储、缓存和消息队列在内的基础系统,还有服务框架。


稳定的云平台


刘海峰首先介绍了发展历史,过去两年,京东以自主研发为主,开发了适合自己业务模式的存储系统——京东文件系统(JFS),并基于JFS向外提供私有云存储服务。最大的一个客户就是图片存储,京东的每一张图片都存在JFS平台上,另外还有订单、库房的报文等。自主研发使得系统更加可控,其可靠性、稳定性,都能很好地把握。JFS采用了主动复制策略,保证绝对的强一致性,通过自己设计的复制算法,能够保证在机器故障、磁盘故障、甚至文件删除等问题存在时,数据都不会丢失。


缓存云也是云平台的核心产品之一。可以分为两个方面,一是纯缓存,为各个业务提供统一的缓存服务。如果电商的各个业务都自己设计和维护一套缓存,成本会非常高。而将全集团的缓存统一管理,通过细粒度的混合部署,完全弹性的、多租户的管理,实现弹性伸缩,极大地提高机器的使用效率,节省成本。


另一个是Jimdb——基于内存与SSD的分布式缓存与高速KV存储服务,这在搜索系统、推荐系统等中都有应用。


可靠的消息队列


消息队列(MQ),或者叫消息平台,随着互联网业务的发展,微服务这种形式越来越流行,也就是一个模块做一件事情,模块之间尽量松耦合,模块之间用消息队列串联起来。可以认为消息队列是数据中心里面,各业务系统之间的管道。在京东,消息队列的开发经历了三个阶段。前两代是基于开源软件实现的,现在的产品是完全自主研发的JMQ,在11.11之前已全面上线。商品相关的队列和订单相关的队列都依赖此服务,MQ如果出现问题,会导致订单等购物行为出现故障。不过11.11目前运行比较平稳,能够做到消息绝对不丢失。


MQ有一个很大的技术挑战,要能够快速地收,可靠地存。如果下游的消息消费者处理比较慢,系统就需要能够缓存大量消息。因为自己开发,这里可以做很多优化。举例而言,有的大队列可能是1个发送者,有100个消费者,很多开源系统可能会存100份。但这里通过优化,可以只存一份,消费者可以通过偏移量或指针去访问。从今天的效果来看,在这个方向上的技术投入非常值得。


微服务之得失


在服务框架方面,进行了微服务化改造。一个模块就做一件事,各个模块可降级、可监控、可分解。除了通过消息队列串联不同模块,还有些地方需要同步调用,京东大概有上万个服务接口,也接入了非常多的服务器,整个服务的注册、发现、互相之间的服务调用,再就是请求的序列化、反序列化,都是通过自主研发的服务框架实现的。


提到微服务,刘海峰也深入介绍了一些自己在这方面的感悟。他认为,微服务对互联网而言是很好的技术方向,对电商也是如此。将系统分为不同的服务模块,系统的韧性会更好,当然有得必有失。这种架构对基础设施的要求会更高,对软件底层平台的要求也更高。因为模块之间的通信有不同方式,比如通过直接调用、消息队列或存储系统,那如何跟踪系统的服务链条,也是一个问题。测试整个系统的峰值性能,抗压能力,也是个很大的挑战。


充分的11.11备战


谈到11.11的备战,刘海峰介绍说,首先一点就是需要把更多的工作放在平时,实际上技术是瓶颈,不是靠堆机器就能解决的,所以要靠平时的积累,设计好、做出好的系统。另外,在出现问题时,团队更加重要,要确保及时响应;而这时候也越来越体会到自主研发的好处,有任何问题,都可以快速地定位并修复,甚至是直接线上修复。只有从零写起才有这种感觉。


我们也谈到了京东云的路线图问题。刘海峰提到,目前还是小步快跑的模式,先抓住一些重点业务,应用起云服务,形成示范效应,再快速地规模化。京东也正在开发一个数据中心操作系统项目——JDOS,基本的事情是统一管理包含物理机、虚拟机和轻量级容器,配合自主研发的存储以及非常灵活的SDN互联。


InfoQ后续还将发布阿里、京东、蘑菇街等公司的双十一技术深度访谈,敬请期待。


————我是一条分割线—————


在12月19日开幕的ArchSummit全球架构师峰会上,我们也邀请到了京东大数据平台研发负责人刘彦伟。


刘彦伟主管大数据平台产品、技术中间件的规划及研发工作,加入京东以来一直专注于大数据平台的建设工作,历经京东几代数据平台的产品及技术架构演进,其所负责的大数据平台支撑了整个京东集团的大数据业务。本届全球架构师峰会,他将为我们带来《京东实时数据平台技术实践》的分享。


关于本届全球架构师峰会的内容,请点击“阅读原文”了解更多。



 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 程序员如何在职场中实现“跨越式”成长? 欢迎加入天猫技术团队,约起来! 欢迎大家来到后端技术小黑屋 为Bash和VIM配置一个美观奢华的状态提示栏 手机淘宝 521 性能优化项目揭秘