闁荤姷灏ㄩ幏锟�闂佽崵鍋炵粙蹇涘磿閹绘帪鑰垮☉鎿勬嫹2闂備焦鐪归崝宀€鈧凹鍙冮獮渚€顢曢敐鍡楊€撻梺鐟板⒔缁垳鈧偣鍨介弻宥夊Ψ閿旂晫鍘搁梺閫炲苯澧慨濠傜秺瀹曞ジ鏁撻悩鍐叉疁闂佹寧绻傞幊澶愬磻閹炬剚鍚嬮柛娑卞墯濡﹪姊绘担钘壭撴い顓犵ォ闂備焦瀵х粙鎴︽嚐椤栫偛围濞寸姴顑呯憴锕傛煕濞戞﹫鏀婚柡鍡╀邯閺岀喖妫冨☉姣匡紕绱掗妸锝呭鐎规洍鍓濈换婵嬪磼濮樺吋娴嗛梻浣呵归オ鐢稿箯閿燂拷闁荤姷灏ㄩ幏锟�闂備礁鎼Λ娆撳垂閸偆顩查柨婵嗩槹閸ゅ啴鏌eΟ鐑樻儓闁告搩鍙冮弻锟犲礋椤掍礁纰嶉梺鎼炲€ら崣鍐潖婵犳凹鏁嬮柍褜鍓熼妴鍌涚鐎n偅娅栭柣搴℃贡閹哥espace闂備胶鍎甸弲娑㈡晝閿曞倸鏋侀柟鍓х帛閸ゆ洟鎮橀悙鑸殿棄缂併劏顕ч湁闁挎繂娲ゆ牎婵犫拃宥囩暤闁哄苯鎳橀幃鈺呯叓椤撶喐鈻曢梺鐟板悑濞兼瑩宕查弻銉ノуù鐘差儏閻忚櫕绻濇繝鍌涱棞濞存粍鐗犻弻宥夊Ψ閿斿墽鐣洪梺閫炲苯澧鹃柟鍑ゆ嫹闁荤姷灏ㄩ幏锟�濠碘槅鍋撶徊楣冩偋閺囥垹鍨傞梺顒€绉寸粻鎴犳喐韫囨冻缍栭柡宥庡幗閸庢﹢鏌¢崘锝呬壕闂佹悶鍔嶅畝绋款嚕缁嬪簱鍫柟閭﹀枤閻涖儵姊洪崨濠勫闁靛洨鍋ゅ畷銉╊敃閵堝倸浜鹃悷娆忓缁犳牠鏌h箛鏂垮摵闁诡喕绮欓幃銏ゅ传閸曘劍瀵樼紓鍌欐閼冲爼宕戦悢鍝勫灊闁跨喓濮甸悡鈧梺鍛婄☉閿曘儵寮抽銏$厱闁绘ɑ褰冨▓鐛籈婵犵數鍋涢惌浣哥暦閻㈢ǹ鍑犻柣鏃傚帶閺嬩線鏌涢銈呮灁濞存粣鎷�闁荤姷灏ㄩ幏锟�缂傚倷绀侀ˇ浼村垂閻㈠壊鏁嗛柣鏃傚帶缁狀噣鏌曢崼婵堝闁逞屽厸缁瑥顕i妸鈺傚殥闁靛牆妫欓娲⒑閹稿海鈯曠€光偓缁嬪簱鏋栭柨鐕傛嫹4闂傚倷鐒﹁ぐ鍐矓閸偅鍙忛柕蹇嬪€栭崵鍐╃節闂堟稒绁╂俊鑼跺吹缁辨帡顢氶埀顒勫焵椤掍胶銆掗柤瑙勫劤閳藉骞橀姘闂傚倸饪撮崜锕傚磻閸℃せ鏋旈柟杈剧畱绾惧鏌曟径鍫濆姢闁哄棙妫冨娲敃閵忕姭鍋撴搴g當濠㈣泛澶囬崑鎾绘偡閹殿喚楔闂佽桨绀侀敃銉メ缚婵犳碍鏅搁柨鐕傛嫹闁荤姷灏ㄩ幏锟�闂佽崵鍠愰悷杈╃礊娓氣偓瀵劑鏁愭径灞藉絾濡炪倖鍔х徊鍓х礊韫囨洜纾奸柣娆忔噽绾惧潡鏌熼纭疯含鐎殿噮鍓熷鍫曞疮閸愭儳寮€规洘绻堝畷鐘绘晬閸曨厾宕秎ifespace闂佽绻愮换鎰崲濡ゅ懎绠洪柟杈鹃檮閸ゅ牓鏌熷▓鍨灍闁硅泛瀚伴弻锝夊閵忕姵鐏嗛悗娈垮枛椤嘲鐣峰┑瀣厸闁逞屽墰缁辩偛螣鐏忔牕浜鹃柛锔诲幖娴犙勵殽閻愬弶宸濈紒顔芥楠炲鈹戦幇顒€韦闂傚倸饪撮崜锕傚磻閸涱厷缂氭俊銈呭暟娑撳秹鏌ㄥ☉妯侯仾闁稿⿵鎷�闁荤姷灏ㄩ幏锟�濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓奸崶鈺冪厠闂佺懓鐡ㄧ换宥夊礉閸涘瓨鈷掗柛鏇ㄥ亞鍟稿銈冨灩閹虫﹢骞婂鈧畷鎺楁晜閹勫劒濠电偞鍨堕幐鍓у垝椤栨稒娅犻柨鏃囨缁剁偤鏌嶉崫鍕殭濠殿啫鍥ㄧ厵閻庢稒锚婵洭鏌涢妸銉╁弰闁诡垰鍟村畷鐔碱敊閼测晙鍠婇梻浣界毇閸曨偄濮㈤梺浼欑悼閸嬬喖鎯€椤忓棌鍋撻崷顓炐ユ繝鈧崫銉х<濞e洤宕悘顏呯箾閸欏鍊愰柟铏殘閹瑰嫰鎮滃Ο璇参″┑鐐茬摠缁苯螞濠婂棭鏆板┑鐐村灦閹碱偊骞忛敓锟�闁荤姷灏ㄩ幏锟�闂備礁鎼€氼剙螞濠婂牆瑙︽俊顖濆吹閳绘梹銇勯幘璺轰沪缂佸倸娲幃纭咁槻闁告埃鍋撶紓浣诡殕缁诲倿鍩ユ径濞炬鐎规洖娲ㄩ悰銉х磼閹冪稏缂佲偓娓氣偓閹粙顢曢敃鈧崣濠冦亜閺嶃劏澹橀柡瀣叄閺屸剝鎷呴崫鍕垫毉閻庤鎸风欢姘跺箚閸愵喖绀嬫い鎺嶆缁垱绻涙潏鍓у埌闁哥喎娼¢幃娲Ω閳轰胶锛滈梺闈浨归崐妤呮儗濞嗘挻鍋i柟鎷屽煐鐎氾拷闁荤姷灏ㄩ幏锟�濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓奸崱妯荤彿闂佺粯鍔栬ぐ鍐崲娓氣偓閺屾稖绠涢幘缂庛倝鏌$仦鑺ュ殗鐎规洘绻傞埥澶婄暦閸パ勫劒婵犳鍠栫粻宥夊磹濞戙垹鍚归柡鍥ュ灩绾惧湱鈧箍鍎遍幊宥吳庨鈧弻褔寮▎鎯у壋濠电偛鎲為崨顓炵亰婵犮垼娉涙灙闁稿鍔戦弻锕傚焵椤掑嫬唯闁靛鍎查崐鐘绘⒑閸濆嫷妲堕柛搴櫍閸┾偓妞ゆ帊鑳堕惌濠傗攽椤曞懍閭€殿喓鍔戦幃婊堝煘閹傚闂佽法鍣﹂幏锟�闁荤姷灏ㄩ幏锟�Canalys闂佽崵濮撮鍛村疮娴煎瓨鍋夋繛宸簼閺咁剚鎱ㄥ鍡椾函闁告﹩鍓熼弻娑㈠Ψ閿曗偓閻忓﹦绱掓潏銊ョ瑲缂佸顦~婵嬵敆婢跺﹥顔忓┑鐐茬摠缁瞼鑺遍懖鈺冪當闁稿本绋撻々鏌ユ煙鐎电ǹ校闁伙綁浜跺濠氬炊閿濆懍澹曟繝娈垮枤閹虫捇宕愭搴″灊婵炴垯鍨洪崐鍧楁煛閸垺鏆╃紒澶屾暬瀵爼鍩$€n偄顏�闁荤姷灏ㄩ幏锟�濠电姭鎷冮崨顓濈捕缂備胶濮甸悷褔骞栨ィ鍐╂櫢闁跨噦鎷�30% 闂備礁鎲¢〃鍛姳閼测晜瀚婚柣鏂挎憸閳绘柨鈹戦悩鍙夊櫧婵炲牞鎷�2023闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閺屾盯骞嬮敂鍓х獥闂侀€涚串缂嶄線寮诲畝鍐杸婵﹩鍓氶锟�4000濠电偞鍨堕幐绋棵洪銏犵?闁跨噦鎷�
您现在的位置:首页 >> IT >> 正文
为什么说流处理即未来?
发表时间:2019年4月19日 11:55 来源:新科技 责任编 辑:U

如果账户A中的余额大于100,那么从账户A中转账50元到账户B。

这是个非常简单的两个账户之间进行转账的例子。

数据库对于这样的事务已经有了一个核心的范式,也就是原子性,一致性,隔离性和持久性(ACID)。这是能够让用户放心使用事务的几个基本保证。有了他们,用户不用担心钱在转账过程中会丢失或者其他问题。让我们用这个例子来放到流处理应用中,来让流处理应用也能提供和数据相同的ACID支持:

原子性要求一个转账要不就完全完成,也就是说转账金额从一个账户减少,并增加到另一个账户,要不就两个账户的余额都没有变化。而不会只有一个账户余额改变。否则的话钱就会凭空减少或者凭空增加。

一致性和隔离性是说如果有很多用户同时想要进行转账,那么这些转账行为之间应该互不干扰,每个转账行为应该被独立的完成,并且完成后每个账户的余额应该是正确的。也就是说如果两个用户同时操作同一个账户,系统不应该出错。

持久性指的是如果一个操作已经完成,那么这个操作的结果会被妥善的保存而不会丢失。

我们假设持久性已经被满足。一个流处理器有状态,这个状态会被checkpoint,所以流处理器的状态是可恢复的。也就是说只要我们完成了一个修改,并且这个修改被checkpoint了,那么这个修改就是持久化的。

10.jpg

让我们来看看另外三个例子。设想一下,如果我们用流处理应用来实现这样一个转账系统会发生什么。我们先把问题简化一些,假设转账不需要有条件,仅仅是将50元从账户A转到账户,也就是说账户A的余额减少50元而账户B的余额增加50元。我们的系统是一个分布式的并行系统,而不是一个单机系统。简单起见我们假设系统中只有两台机器,这两台机器可以是不同的物理机或者是在YARN或者Kubernetes上不同的容器。总之它们是两个不同的流处理器实例,数据分布在这两个流处理器上。我们假设账户A的数据由其中一台机器维护,而账户B的数据有另一台机器维护。

现在我们要做个转账,将50元从账户A转移到账户B,我们把这个请求放进队列中,然后这个转账请求被分解为对账户A和B分别进行操作,并且根据键将这两个操作路由到维护账户A和维护账户B的这两台机器上,这两台机器分别根据要求对账户A和账户B的余额进行改动。这并不是事务操作,而只是两个独立无意义的改动。一旦我们将转账的请求改的稍微复杂一些就会发现问题。

11.jpg

下面我们假设转账是有条件的,我们只想在账户A的余额足够的情况下才进行转账,这样就已经有些不太对了。如果我们还是像之前那样操作,将这个转账请求分别发送给维护账户A和B的两台机器,如果A没有足够的余额,那么A的余额不会发生变化,而B的余额可能已经被改动了。我们就违反了一致性的要求。

我们看到我们需要首先以某种方式统一做出是否需要更改余额的决定,如果这个统一的决定中余额需要被修改,我们再进行修改余额的操作。所以我们先给维护A的余额的机器发送一个请求,让它查看A的余额。我们也可以对B做同样的事情,但是这个例子里面我们不关心B的余额。然后我们把所有这样的条件检查的请求汇总起来去检验条件是否满足。因为Flink这样的流处理器支持迭代,如果满足转账条件,我们可以把这个余额改动的操作放进迭代的反馈流当中来告诉对应的节点来进行余额修改。反之如果条件不满足,那么余额改动的操作将不会被放进反馈流。这个例子里面,通过这种方式我们可以正确的进行转账操作。从某种角度上来说我们实现了原子性,基于一个条件我们可以进行全部的余额修改,或者不进行任何余额修改。这部分依然还是比较直观的,更大的困难是在于如何做到并发请求的隔离性。

12.jpg

假设我们的系统没有变,但是系统中有多个并发的请求。我们在之前的演讲中已经知道,这样的并发可能达到每秒钟几十亿条。如图,我们的系统可能从两个流中同时接受请求。如果这两个请求同时到达,我们像之前那样将每个请求拆分成多个请求,首先检查余额条件,然后进行余额操作。然而我们发现这会带来问题。管理账户A的机器会首先检查A的余额是否大于50,然后又会检查A的余额是否大于100,因为两个条件都满足,所以两笔转账操作都会进行,但实际上账户A上的余额可能无法同时完成两笔转账,而只能完成50元或者100元的转账中的一笔。这里我们需要进一步思考怎么样来处理并发的请求,我们不能只是简单地并发处理请求,这会违反事务的保证。从某种角度来说,这是整个数据库事务的核心。数据库的专家们花了一些时间提供了不同解决方案,有的方案比较简单,有的则很复杂。但所有的方案都不是那么容易,尤其是在分布式系统当中。

[1]  [2]  [3]  [4]  [5]  [6]  
高层访谈
蚂蚁金服副总裁刘伟光:构筑敏捷能力中心,打造下一代数字银行“操作..
蚂蚁金服副总裁刘伟光在演讲中指出,银行数字化转型是一个逐步递进的旅程,敏捷能力中心的打造..
凌动智行史文勇:品智出行, 重新定义车辆对生活的价值和意义
众所周知,手机是基础的通讯工具,车是基础的交通或者出行工具,而发动机是传统车里面非常高的..
观点态度
云计算的第二个十年:三大运营商如何迎接?
2018年,我国云计算进入第二个十年。站在国家方队里三大运营商的云计算也进入了新的发展阶段。<..
国内手机市场半年报:头部格局定型 中小品牌陷入集体焦虑
2018年已过半,回看这半年, 头部品牌的吸附效应越来越明显,中小品牌正陷入到集体焦虑中。

..
移动互联
手机
智能设备
汽车科技
通信
IT
家电
办公打印
企业
滚动
相关新闻
关于我们 | 联系我们 | 友情链接 | 版权声明
新科技网络【京ICP备18031908号-1】
Copyright © 2018 Hnetn.com, All Right Reserved
版权所有 新科技网络
本站郑重声明:本站所载文章、数据仅供参考,使用前请核实,风险自负。