作家
登录

人工智能在线特征系统中的数据存取技术

作者: 来源: 2017-07-07 15:02:46 阅读 我要评论

数据存储——时光先于空间,客户端与办事端分别

客户端之于办事端,如同办事端之于数据库,其实数据存储紧缩的思路是完全一样的。具体的数据紧缩与存储策略在上文数据紧缩章节已经做了具体介绍,这里重要想解释两点问题:

客户端紧缩与办事端紧缩因为应用处景的不合,其目标是有差别的。办事端紧缩应用处景是一次性高吞吐写入,逐条高并发低延迟攫取,它重要存眷的是攫取时的解压时光和数据存储时的紧缩比。而客户端缓存属于数据存储分层中最顶端的部分,因为读写的场景都是高并发低延迟的本地内存操作,是以对紧缩速度、解压速度、数据量大年夜小都有很高请求,它要做的衡量更多。

其次,客户端与办事端是两个完全自力的模块,说白了,固然我们会编写客户端代码,但它不属于办事的一部分,而是调用方办事的一部分。客户端的数据紧缩应当尽量与办事端解耦,切弗成为了妄图实现便利,将两者的数据格局耦合在一路,与办事端的数据通信格局应当懂得为一种自力的协定,正如办事端与数据库的通信一样,数据通信格局与数据库的存储格局没有任何干系。

内存治理——缓存与分代收受接收的抵触

缓存的目标是让热数据(频繁被拜访的数据)可以或许留在内存,以便进步缓存射中率。而JVM垃圾收受接收(GC)的目标是释放掉去引用的对象的内存空间。两者目标看上去类似,但细微的差别让两者在高并发的情景下很难共存。缓存的镌汰会产生大年夜量的内存垃圾,使Full GC变得异常频繁。这种抵触其实不限于客户端,而是所有JVM堆内缓存合营面对的问题。下面我们细心分析一个场景:

构造图

跟着请求产生的数据会赓续参加缓存,QPS较高的情况下,Young GC频繁产生,会赓续促使缓存所占用的内存大年夜新生代移向老年代。缓存被填满后开端采取Least Recently Used(LRU)算法镌汰,冷数据被踢出缓存,成为垃圾内存。然而不幸的是,因为频繁的Young GC,有很多冷数据进入潦攀老年代,镌汰老年代的缓存,就会产生老年代的垃圾,大年夜而激发Full GC。

内存治理

可以看到,恰是因为缓存的镌汰机制与新生代的GC策略目标不一致,导致了缓存镌汰会产生很多老年代的内存垃圾,并且产生垃圾的速度与缓存大年夜小没有太多关系,而与新生代的GC频率以及堆缓存的镌汰速度相干。而这两个指标均与QPS正相干。是以堆内缓存仿佛成了一个通向老年代的垃圾管道,QPS越高,垃圾产生越快!

是以,对于高并发的缓存应用,应当避免采取JVM的分带治理内存,或者可以说,GC内存收受接收机制的开销和效力并不克不及知足高并发情况下的内存治理的需求。因为JVM虚拟机的强迫治理内存的限制,此时我们可以将对象序列化存储到堆外(Off Heap),来达到绕开JVM治理内存的目标,例如Ehcache,BigMemory等第三方技巧就是如斯。或者修改JVM底层实现(类似之前淘宝的做法),做到堆内存储,免于GC。

三、停止语

【编辑推荐】

  1. 中小企业的四个数据存储办法和办法
  2. 人工智能时代的伦理框架
  3. 人工智能何故成为高技巧中的“热点”?
  4. 联想Luigi Brochard:高机能计算三大年夜计谋, 推动人工智能飞速成长
  5. WOT讲师杨钊良石工智能将在不合应用处景慢慢落地
【义务编辑:张子龙 TEL:(010)68476606】

紧缩算法:Deflate算法有1~9个紧缩级别,级别越高,紧缩比越大年夜,操作所须要的时光也越长。而LZ4算法有两个紧缩级别,我们用0,1表示。除此之外,LZ4有不合的实现版本:JNI、Java Unsafe、Java Safe,具体差别参考 https://github.com/lz4/lz4-java ,这里不做过多解释。



  推荐阅读

  兄弟阋墙、业务凋敝,“网红”陈欧能否终结聚美优品乱局?

在中国电商成长的汗青中,造节促销一向是巨擘们激烈竞争的┞方场,但聚美优品似乎更愿意选择一条完全不合的路径。在某次全网电商节日开端之前,因为看法不合,聚美优品CEO陈欧和一位核心高管在会议室里起了争执,甚至>>>详细阅读


本文标题:人工智能在线特征系统中的数据存取技术

地址:http://www.17bianji.com/lsqh/36079.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)