设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
如何利用缓存理论来分析网购物流的未来 ...
返回列表
查看:
872
|
回复:
0
如何利用缓存理论来分析网购物流的未来
[复制链接]
bewin83
当前离线
积分
7520
2500
主题
2513
帖子
7520
积分
论坛元老
论坛元老, 积分 7520, 距离下一级还需 9992479 积分
论坛元老, 积分 7520, 距离下一级还需 9992479 积分
积分
7520
发消息
电梯直达
楼主
发表于 2018-2-17 16:43:22
|
只看该作者
|
正序浏览
|
阅读模式
计算机的进步颠覆了整个世界,而其中的很多技术不仅能解决计算机方面的问题,对很多其他方面的问题也很有启发。今天笔者给大家介绍缓存理论,从缓存理论的角度来看待一些产品及生活上的问题,将会有许多有趣的结果,这就是今天的主题缓存理论+。笔者在此保证,本文没有门槛,但需要耐心。
理论
如果这节看不太明白不用纠结,结合后面的例子会容易得多。
众所周知,内存和硬盘是电脑的两个重要部件,虽说两者都是用来存储数据的,特性却大相径庭:
内存访问速度快,容量小,断电后无法保存数据,在计算机中充当
缓存
的角色。
硬盘访问速度慢,容量大,断电后数据不丢失,用于长久地保持数据。
CPU是个急性子,每秒几百亿次计算不在话下,自然爱和内存打交道,不待见硬盘,不待见到什么程度呢,即使CPU要读取硬盘里的数据,也先让硬盘把数据交给内存,CPU再从内存读,缓存往往就是指这样快却容量小的中间存储。
问题来了,内存容量小,而计算机可能会使用的数据却很大,导致内存装不下,只能把装不下数据搁硬盘里,要使用硬盘中的数据,得先让内存清出一些暂时不用的数据,再从硬盘里把所需数据加载到内存,这种倒腾的过程叫做置换Swap,而清出数据的操作称为淘汰数据。从硬盘读数据就耗时了,所以我们希望我们每次取数据时数据都在内存里,减少硬盘的访问。
操作系统有一个很重要的任务——调整内存中的数据,目的在于减少用户使用电脑时因读取硬盘而造成的延迟和卡顿。调整一般发生两种情况下,一个是电脑闲置的时候,提前将用户可能会用到数据搬到内存中;另一个就是置换的时候,加载用户所需数据的同时,舍弃那些比较不可能被访问的数据。
计算机科学里把访问数据时数据刚好在内存里的概率成为命中率
。
为了提升用户体验,减少等待,就得提高命中率,选择合适的内存置换(淘汰)算法就显得至关重要,内存置换算法是指在发生置换操作时,应该淘汰内存中的哪些数据,来放置新的数据,常用的算法(别怕,都很简单)有:
1、先进先出算法(FIFO,First In First Out)
淘汰最先进来的数据,这个算法非常简单,这样做的道理是最先进来的数据可能已经用过了,过时了。对于一次性或短期使用的数据,非常合适,但对于长期使用的数据,就不合适了。这个算法命中率并不高,常常被提起主要是用来衬托其他算法的优越性,有点类似奥特曼的小怪兽。
2、最久没访问算法(LRU,Least Rescently Used)
淘汰内存中最久没有被用到的数据,这个就比FIFO合理多了,最久没被访问,可能真的是过时了。从逻辑上来说是相对合理的,而且比较简单,现在流行的操作系统大多都使用它或它的变种。当然,这个算法对于那种需要被周期性访问的数据就不合适了。
3、最不频繁算法(LFU,Least Frequency Used)
淘汰内存中在最近一段时间内使用频率最低的数据,这个又比LRU更合理了,就是保留最近最常用的数据,剔除最不常用的蛀虫。它并不是操作系统的宠儿,因为它计算量比较大,自身会消耗一些内存,对于操作系统这样的惜时(内存)如金的家伙是不可接受的。
4、智能算法(AI)
我定义的一类算法,它泛指通过机器学习算法依据各种历史数据,计算各个数据未来一小段时间内将会被访问的概率,保留概率高的,淘汰低的。举个例子,假设你白天使用电脑工作,晚上使用电脑娱乐,那么AI算法可能会在白天尽量在内存中保留工作相关的数据。
比如一些word文档及办公软件的数据,而到了晚上,工作相关的数据则优先被淘汰,内存中常驻游戏,影音之类的数据。再比如,操作系统检测到了我刚刚下载了一部电影,那么这时应该将这部电影的数据及播放器的数据加载到内存中,其他类型的则可能被淘汰。AI算法的计算量显然很大也很复杂,入不了操作系统的法眼,但在很多情况下却非常好用。
再介绍一个概念:
多级缓存
,后面将会用到。
其实在电脑中,内存并不是读取速度最快的存储介质,还有更快的,叫CPU缓存。如果你看CPU的参数,经常能看到(L1/L2/L3缓存,他们共同组成CPU缓存),它是CPU的一部分,你们在看CPU规格时常常会看到,它离CPU计算核心更近,访问速度更快,但容量更小。CPU缓存和内存的关系 与 内存和硬盘的关系是一毛一样的。其实CPU缓存中还能细分,“ L1缓存 ”是“ L2缓存 ”的缓存,“L2缓存”是“L3缓存”的缓存,“L3缓存”是内存的缓存,如下图所示,这样不断嵌套的缓存结构就叫多级缓存。
缓存还有另外一个作用,
缓冲
。
计算机中的例子不太好说,举个
拉面店的例子。
有个拉面店只卖一种拉面,顾客时多时少,有时一次性来好几个人,师傅现做的话肯定有顾客等很久,如果提前做很多的话又有可能做多卖不出去,那么师傅想了这么一个策略,提前做好一些拉面,放在一个固定的桌子上,如果桌子上的拉面达到2碗,师傅就慢着点做,如果一直没卖出去,桌上的面达到4碗,就完全不做了,如果某个时段生意旺卖很快,桌上的面可能会少于2碗,或者卖完,甚至还有人等,那么师傅就要开足马力做面了。
那么,这里就把桌子当作缓存,通过缓存策略,给师傅一定的缓冲时间,一定程度上抵消人流波动带来的影响。
缓冲可以从两个角度解释,一个是任务发送者,另一个是任务处理者。
在发送者和处理者之间设置缓存,来协调任务发送速度与处理速度不一致。当任务发送速度大于处理速度时,任务在缓存中堆积,发送者减慢发送速度,处理者提高处理速度;如果缓存中任务非常少了,则提高发送速度,减慢处理速度。如果处理是一次性的,缓存能减少处理的频率。
举个例子:垃圾桶是一种缓存,如果家里没有垃圾桶,我们一旦有垃圾就得扔到外头的垃圾桶,垃圾桶的存着可以减少我们处理的频率。
产品例子
缓存理论不仅在计算机领域应用广泛,而且在生活和产品中也常常用到。我们先对理论进行抽象:
缓存/内存,泛指那些使用方便又非常有限的容器。
硬盘,那些使用不方便但容量非常大的容器。
数据,放在容器中的物体。
算法,上面的算法大多都是说怎么淘汰,而下面往往说的是怎么保留,怎样选择,其实本质是一样的。
从保留数据的角度重新解释上面的算法
:FIFO,保留最后进入内存的;LRU,保留最近用过的;LFU,保留近期使用最频繁的;AI,保留未来最可能用到的。
下面举例:
我们的电脑桌面就是一个“缓存”,你可以在上面放文件及程序,它非常方便,触手可及,但是它容量非常有限,而资源管理器(我的电脑)则像是“硬盘”。桌面空间有限,东西多了也容易造成混乱,所以必须有所取舍,熵君在整理电脑桌面时一般会将最常用的放在桌面上,不常用的淘汰,这其实就是LFU算法 。
我们的手机桌面的首屏也可以当做“缓存”,一打开就能用到,而最下面一排的快捷栏则是更高级的缓存。我一直期望手机有这样一个功能,自动把最常用(LFU)的应用放首屏,省得我去整理。
chrome的首页就有很多标签卡,都是你最常打开的网站(LFU),非常方便。
网站的首页也是一个缓存,就拿电商网站来说,首页资源是非常珍贵的,过去,这个首页往往是死的,把一些热门的商品放在首页,而现在都是使用推荐算法为每个用户定制首页,这就是上面所说的AI算法。新闻网站也很类似,以前都是编辑根据经验人工调整的首页,现在往往会引入智能算法(AI),结合用户个性化,新闻时效性等综合因素来安排首页内容。
生活中也有很多例子。笔者在整理房间的时候就会使用缓存理论,我会划定一些缓存。
比如桌面,或者其他一些触手可及的地方;我也会制造缓存,比如指定衣柜中的某个格子为缓存,规定放在这个格子里的衣服可以随意堆放。这些“缓存”常常会溢出,比如桌上太多东西了,影响我工作了;或者衣柜里的缓存区衣服太满,衣服不好找了。
这时我就会清理,我会把不常用的物品清出缓存区,并规整地放在它应该放的地方。这样就避免了频繁整理常用的物品,而这些常用的物品常常在你整理后又会使用到,那么之前就白整理了。这里也用到了缓存的缓冲功能。
这样的例子还有很多,比如微信的首屏也是个缓存,显示最近的对话,显然是使用LRU算法。当你在某个场景抽象出了缓存,那么下一步就是选取合适的算法,一般情况下LFU/LRU这样的简单算法就够用了,如果缓存资源非常珍贵,那么就应该求助你们的算法工程师做一套AI算法了,这就是缓存理论+。
缓存理论与电商物流
如何利用缓存理论分析网购物流的未来呢?
购物模式
如果把网购当做一次数据访问,那么我们可以把商品当做数据,把发货的仓库当做硬盘,缓存则可以有很多种,那么我们将得到以下几种购物模式:
模式一
从硬盘直接读取数据,不经过缓存。也就是网购,并送货上门。
(1)优点:直接,不需要顾客奔波。
(2)缺点
[ol]
慢;
无法确定派送时间。很多时候顾客在派送的时候不在目的地,或者由于其他原因无法接收,这样要么限制了顾客自由,要么降低了快递员的效率。
[/ol]
模式二
先从硬盘读取数据到缓存/内存,再从缓存读取数据。也就是网购,送货到自提柜再由用户自提,自提柜就是缓存。
(1)优点:用户收货不再受到快递派送时间的制约。
(2)缺点:
[ol]
要自己取,如果自提柜远还不顺路就更费劲了;
慢;
很多地方没有自提柜;
自提柜的空间无法充分利用,如果自提柜很密集,那么空置率肯定很高。
[/ol]
模式三
数据已经提前从硬盘加载到内存,直接访问内存就可以了。这就便利店的模式,便利店也是一种缓存,老板进货就是从硬盘加载数据到缓存的操作。
(1)优点:快。
(2)缺点
[ol]
要自己取;
商品有限,很多东西都买不到。
[/ol]
从缓存理论的角度分析
从缓存理论的角度,以上这几种购物方式其实是可以互相转换的。如果仅仅从缓存的角度,如何分析这几种模式?
模式一:没有缓存,每次从硬盘加载,慢。
模式二:有缓存,但是每次仍然从硬盘加载数据,缓存只起到了缓冲的作用,相当于命中率为0的缓存。无法确保缓存被充分利用,当自提柜密度提高时更甚。如果你把自提柜的空间比作便利店的货架,这相当于便利店的货架很大部分没摆放商品。
模式三:有缓存,缓存利用率高,但缓存算法并不是最优化,这是由店老板决定的,因此命中率还有提高的空间。缓存就像一潭死水,无法变化,缓存中没有的数据(店里没有的商品)无法获取。
笔者的理想模式是怎么样的呢?让我们通过改造模式二(自提柜)来获得:
增加自提柜的密度,要比便利店还更密,提供更好的覆盖度及体验。
发展自提柜快递员这种职业,和普通快递员不同,他们的任务是由顾客直接指派,并且快速响应,派送距离很短,一般1公里以内(由自提柜的密度决定),解决懒人的最后一公里。其实这个不一定有必要,更多的是想告诉你,通过这样,模式2可以取代模式1,并解决模式1的时间问题。
预先加载,在顾客购买之前,就将商品缓存到自提柜,这样,自提柜就和便利店就很相似了。这样就能充分利用自提柜的空间(缓存)。Android手机中有很多优化软件,在你内存占满时会让你清理内存,而这与Android的内存策略背道而驰,因为当内存占满时内存才是被充分利用的,这样能提高命中率,如果需要加载新的数据,那么Android会自动舍弃些不常用的数据。
使用AI算法对缓存(自提柜中提前加载的货物)进行安排,利用机器学习算法结合用户数据,预测某个自提柜附近的顾客们将会购买的商品,并将这些商品预先缓存好。当用户在电商网站购物时,发现自己想要的商品已经在附近的自提柜中,这样,购物体验就接近便利店了。
一些电商公司有过近似的尝试,但还是离理想模式有差距。
亚马逊是个奇葩公司,总是有很多惊人的想法,其中有一个是擅自派送商品到顾客家,而顾客甚至没有订购,如果顾客觉得这个不是他想要的,可以拒收。这个想法的逻辑和前面提的预先加载是一致的,虽然两者是类似,但是亚马逊这个做法是不可行的,因为它没有缓存,目标是某个用户,这就要求算法得精确到个人,难度太大。而通过缓存(自提柜)的缓冲作用,目标可以扩大为附近的顾客,这样对算法的要求就大大降低。
每年的双十一阿里都搞得风风火火,快递的效率一年比一年高,爆仓的情况已经好了很多,这里的秘诀就是阿里依据AI算法将商品提前缓存到各地的仓库,这样就对物流网络起到了缓冲的作用,同时也减少了用户等待的时间。
仓库也是一种缓存,那么仓库是缓存,自提柜又是什么呢?这其实并不冲突,上面提过了多级缓存这个概念,明显,自提柜是最末端的缓存,而仓库则是上一级缓存,其实仓库本身也是多级缓存,比如北京市朝阳区的仓库是北京市仓库的缓存,北京市仓库又可能是河北省仓库的缓存。阿里做的这个工作已经非常接近了,但是还停留在解决具体问题的阶段,没有去抽象升华。
菜鸟驿站,这个看着非常相似,实则差十万八千里。它沿袭了阿里轻资产,分流风险,做平台的风格。菜鸟驿站对各个快递代售点没有控制力,体验很差,如果把各个代售点当做缓存,阿里无法对缓存做任何安排。总的来说还不如现在的自提柜。当然它成本低,发展速度快是优点。
顺丰嘿客,似乎是网购体验店与自提柜的合体,发展并不顺利,还没完全摸透意图。不过没有强大的电商无法完全实现理想模式。
有些读者可能会有疑问:这样大肆租店/场地成本一定很高吧?是的,成本确实很高,但你想想,便利店都能支撑起这样的店租,而缓存算法及机制更为先进的理想模式肯定能创造更多价值,所以不用担心。
电商公司及快递公司,怎样能更快地到达理想模式?
发展(收购)便利店,慢慢将货架自提柜化。
将自动售货机与自提柜结合,取代货架,进一步无人化。
利用数据及算法优化便利店缓存(货架/自提柜/自动售货机)上的货品,提高命中率。
链接仓库与自提柜,形成多级缓存,随着自提柜数量的提升,增加仓库的数量。
将物流标准化自动化,进一步提升物流速度和效率。
在少数城市试错。
理想模式不可能完全取代商店,但作为一种理论上更先进模式,我相信它会消灭大部分商店,而商店存在的意义更多将是展示、体验还有服务。
一不小心又写多了,科学并不像大家想象的那么死板,经过理解与抽象,很容易应用到生活和产品中,今天的缓存理论,希望你喜欢。
来源链接:http://www.woshipm.com/pd/425699.html
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
用户反馈
客户端