京东作为国内最大的电商之一,也在搭建自己的云平台,而且大部分的技术都是自主研发。为什么不选择现有的资源而要自己研发?
京东云大数据平台技术负责人廖晓辉说:“京东全产业链的电商模式,在国内是独一无二的,没有成熟产品可以借鉴,很多技术问题都需要创新的方式去解决。只有自主研发才能打造出最适合京东的信息系统。第二,“技术驱动”一直是京东的发展战略,我们自主研发的信息系统和积累技术,是京东的核心竞争力之一。但是事实上京东并没有完全自主研发所有的系统,也应用了一些开源的的技术。再结合京东自身的业务,去解决京东遇到的问题,从而更好地为我们业务去服务,为用户去服务。”
京东的云平台却包含很多分支包括宙斯、云鼎,移动平台等,是什么原因让京东打算做这么复杂的云平台?
廖晓辉认为,京东云对外所推出的公有云服务,都是基于私有云技术的产品。京东自身业务发展非常需要有一个稳定,完善的私有云做基础。在私有云技术产品稳定后我们就对京东生态内的合作伙伴、对社会开放。云平台是京东技术产业化的先锋,要以云技术和云模式,构建一个电商云生态,让京东生态内的卖家和合作伙伴以及让全社会做电商的企业都能在京东云上享受到京东的电商服务。
随着京东的发展,京东的卖家越来越多,所有的电商平台都存在这样一个问题:多个租户共享同一数据库实例必然需要一个有效的隔离方案,防止一个用户的慢查询请求或恶意请求影响其他用户访问。
廖晓辉说:“就做云数据库来讲,在京东云里面提供的服务既有共享型的数据库,也有独享型的数据库。一些用户特别关注的资源隔离对于这个问题,我们的做法是用独立的虚机方式去做部署,或者基于容器技术—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在两者之间找到了一个平衡点?