云已经成为在互联网圈里出现频率最高的一个词了。无论是公有云、私有云、开发云,测试云,也不仅仅是互联网企业,传统企业也因为云做出了或多或少的改变。云已经成为像水、电一样不可或缺的资源。
随着“云”渗透进生活的方方面面,无论是自建,还是利用已有资源,各大公司都纷纷开始搭建云平台。都想在云上分一杯羹。
自主研发的京东云
京东作为国内最大的电商之一,也在搭建自己的云平台,而且大部分的技术都是自主研发。为什么不选择现有的资源而要自己研发?
京东的云平台却包含很多分支包括宙斯、云鼎,移动平台等,是什么原因让京东打算做这么复杂的云平台?
廖晓辉认为,京东云对外所推出的公有云服务,都是基于私有云技术的产品。京东自身业务发展非常需要有一个稳定,完善的私有云做基础。在私有云技术产品稳定后我们就对京东生态内的合作伙伴、对社会开放。云平台是京东技术产业化的先锋,要以云技术和云模式,构建一个电商云生态,让京东生态内的卖家和合作伙伴以及让全社会做电商的企业都能在京东云上享受到京东的电商服务。
随着京东的发展,京东的卖家越来越多,所有的电商平台都存在这样一个问题:多个租户共享同一数据库实例必然需要一个有效的隔离方案,防止一个用户的慢查询请求或恶意请求影响其他用户访问。
廖晓辉说:“就做云数据库来讲,在京东云里面提供的服务既有共享型的数据库,也有独享型的数据库。一些用户特别关注的资源隔离对于这个问题,我们的做法是用独立的虚机方式去做部署,或者基于容器技术—Docker去实现不同级别的资源隔离。”
大数据环境下的Spark
毫无疑问京东的数据量一定大的惊人,那么在大数据环境下进行数据分析,更多人都会选择Spark,因为大家都知道它是基于内存上面进行运算,这样的话可能处理的数据会有限。
廖晓辉告诉记者:“就spark来讲,它出现时间不长发展的却很快,它的RDD分布式内存结构概念和容错性支持,以及利用DAG做执行优化,即性能和可靠性的表现,使得它非常有吸引力。但在内存受限的情况下,确实会影响它的性能表现。对于内存等资源限制的情况下,还需要对大量数据做低延迟处理,,这种场景我们可能需要考虑采取近似计算方式,但 如果计算结果的精度要求不能降低,可能我们要走增量计算的方式:持续性地对一些增量数据做一些累进式的实时计算,来得到实时地计算结果来满足业务或用户的需求,相当于把全量数据的离线计算,转变成一种持续性的增量的计算方式。”
在数据存储上大致有几类,像通常的key-value数据库,文档型的数据库mongodb,列式分布式数据库HBase等等,京东是如何考量和选择的HBase的?
廖晓辉书:其实各种不同的数据库类型我们都有用到,包括HBase和mongodb。选择哪一种需要结合我们的业务需求,考虑数据存取的计算方式以及开发效率。mongodb它对各种语言都非常友好并提供相对丰富的API,它数据在数据量不是非常大的情况下,会有非常好的性能表现。而对于HBase来说,它属于Hadoop生态里面的一款产品,它适合random access场景或少数据量scan,随着数据增长易于扩容同时维持高的读写性能;列存储对于稀疏矩阵数据存储,加上压缩,能提高存储的效率。我们还是根据业务需要,以及数据量的规模,考虑以后的扩容以及项目研发效率来选择。
传统上,若是使用Hadoop MapReduce框架,虽然可以容易地实现较为复杂的统计需求,但实时性却无法得到保证;反之若是采用Storm这样的流式框架,实时性虽可以得到保 证,但需求的实现复杂度也大大提高了我们。Spark Streaming在两者之间找到了一个平衡点?
廖晓辉解答 :“Hadoop MapReduce计算模式实际上降低了做并行计算、大数据处理的门槛,适合于高吞吐量的批处理场景。而Storm和Spark-Streaming,它们都是流式计算的框架。Storm以其低延迟、易扩展性和容错机制等特点发展至今已经非常成熟,也非常优秀,为许多互联网公司所青睐。Spark-Streaming它基于spark将流式数据拆分为mini-batch做持续计算,从目前来看,它的处理延迟可能稍高,但也基本满足实时计算地要求,且它有丰富的计算和转换类API,并易于使用。虽然内部使用Scala去实现但是也支持JAVA的开发,在开发效率方面还是非常高的,此外,我们自己的经验是在生产环境验证了它的稳定性和可靠性。如果对两者进行比较,个人认为,storm适合对实时性要求更高的场合,因为它可以把延迟控制在亚秒级或者更低。而Spark-Streaming作为Spark Stack中的一员,如果熟悉了Spark下的开发方式,对Spark-streaming的开发非常容易上手;大部分的大数据处理需求,不同的workload,Spark Stack中有相应的技术产品可供选择,可避免维护不同的计算框架。选择Spark-Streaming就要考虑这个生态系统里的其他产品以及开发效率。Spark社区很火,在今年出现1.0版本之后,很快就出现了1.1版本,有非常好的势头,也在实际应用中用它的优异表现在赢得越来越多的用户。”
双十一过去不久京东作为国内首屈一指的电商平台在双十一期间如何保证服务器在大量请求、访问的的正常运转而不宕机的?
廖晓辉说:“双十一保障是一项有组织有计划地工作。在双十一之前会有一个比较长的筹备时间,会对双十一的流量和业务的增长做一个预估,有计划的去做线上的系统扩容以及完善监控,并对可能的异常做好演练并制定预案。双十一期间近一周左右时间,京东的研发部包括云平台的研发人员会安排人员24小时值班,来解决任何可能出现的线上问题。双十一之后对双十一的情况做一个总结,积累经验,从而提升系统的稳定性。
另外,从服务系统架构层面,要有HA, Loadbalance 设计,有故障只降服不停服,可弹性扩容;要有非常及时和完善的监控,保障异常情况下,第一时间处理,缩短故障时间。再有就是防攻击系统和灾备方案进一步提供保障。”
介绍一下京东云中大数据的云服务,你们的技术实现,对Spark的应用,以及产品路线和遇到的挑战。
廖晓辉说:“云海是京东云提供的大数据开放服务,是商家驱动的数据开发平台,商家授权数据,ISV来开发相关数据产品,服务于商家的数据驱动、精细化运营的需求。同时用户也可以上传自己的数据,作为京东平台电商数据的补充。
云海中的Spark
云海不仅提供大数据存储和计算资源,同时还有云端的数据挖掘和开发工作台,这背后所涉及到的交互查询分析,批处理计算,实时计算,机器学习算法工具,在线OLAP分析,都涉及到Spark相关技术的应用。我们在依托Spark来搭建高效的计算平台和工具集,目的是使挖掘数据价值的过程变得更敏捷,而且是一套全云端的解决方案。
京东有大数据平台建设的丰富经验,同时数据驱动业务,数据驱动决策,基于大数据的精细化运营上也有成熟的经验,这些个经验也能帮助在京东上做生意的商家,可以借鉴用于改善运营效率,提高用户满意度。这个价值输出,通过云海,做的方式就是团结在电商领域期望结合大数据提供数字化运营解决方案的软件商这个群体,搭建一个平台以数据为核心,连接商家需求和ISV数据产品服务,同时对ISV的数据产品做一些引导,在解决商家的实际问题中产生价值。
在云海的建设过程中我们碰到很多挑战,有大数据处理的技术方面的,对于这类问题,我们也结合业务,基于Spark做自主地研发工作或改进框架本身。同时数据开放的有效和可行方式,我们也在探索中。近些年大数据概念的“热”以及大数据在一些互联网公司,电商企业,以及金融等领域的应用的示范作用,让各组织越来越重视数据资产,现阶段,由于数据的敏感性,对数据收集、处理、挖掘大多限于组织内部。但从另一方面,相信很多人都同。在数据的网络里,数据连接数据,汇聚各领域的数据,数据开放共享、供给不断,让更多人、个体有机会及时、便捷地分析和挖掘其中的价值,势必能让数据发挥更大的作用,甚至把社会信息化带入一个更高的层次。因为这两面性,即在数据资产保护和开放之间求得一种平衡,建立数据交换可行、可信的平台,同时是可持续的,值得更多的组织和个人来探索,合作。