您当前的位置是:  首页 > 新闻 > 文章精选 >
 首页 > 新闻 > 文章精选 >

如何打造一款 NewSQL + MySQL 的分布式数据库?

2018-06-05 14:46:32   作者:   来源:CTI论坛   评论:0  点击:8513


  对分布式数据库感兴趣的朋友都知道,谷歌的 F1 和 Spanner 引领了 NewSQL 技术的发展,于是很多公司去做 NewSQL,导致好多人认为基于 MySQL 的分布式数据库过时了。
  其实不然,MySQL 并没有过时,本篇文章的主角 —— RadonDB ,就是把 NewSQL 领域比较流行的分布式一致性算法和 MySQL 结合起来,形成了新一代的分布式数据库 MyNewSQL,同样做到了可扩展、高可用、强一致、易部署的特点。
  那么,如何将 NewSQL 领域比较流行的技术和 MySQL 结合起来,打造一款新的分布式数据库?
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  1、RadonDB 的架构
  首先看一下 RadonDB 的架构,如上图所示,上半部分是分布式的 SQL 层,下面是存储层,如果我们对 F1 和 Spanner 进行抽象之后,会发现也都是这两层。
  其中 SQL 层主要负责对用户 SQL 解析,然后生成分布式的执行计划和执行器,再把这些执行器下发到具体的存储节点去执行。
  虽然架构看上去比较一致,但 RadonDB 比较特殊的一点是:下面的存储层有多个存储节点。图中每个圆圈里面都是一个存储节点,每个存储节点有三副本,三副本之间就是一个 Raft 协议进行数据同步,每个副本都是一个 MySQL。而其他 NewSQL 就是一个 KV 或者其他的存储。
  2、RadonDB 架构层解析
  下面详细阐述一下架构里面的各个技术点。
  SQL 节点
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  首先来看一下 SQL 节点。
  用户请求到达 SQL 节点后,我们根据数据的分布规则生成一个分布式的执行计划,告诉用户的 SQL 要分发到哪些存储节点,然后根据分布式执行计划生成一个分布式的执行器,就是具体到哪些存储节点进行链接、执行、返回。
  执行完之后 SQL 节点就会做二次运算,为什么叫二次运算?因为下面是 MySQL,SQL 节点把计算推到 MySQL 之后,SQL 节点再进行二次运算,包括 limit/groupby/aggregation/join。
  所以说,SQL 节点是一个无中心化、无状态的,扩容性强。
  3、存储层
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  存储层由多个 Node 组成,每个 Node 就是一主两从的 MySQL,但这个 MySQL 比较特殊,因为 MySQL 没有一个高可用的方案,可能大家都是 MHA 或者自己写一个主从切换脚本来运维。
  但是 RadonDB 引入了 Raft 协议,它是无中心化的, 当主库挂了后,通过 Raft 协议选择新主,而数据同步则基于 MySQL GTID 机制。
  基于 MySQL 的好处是不仅有存储能力还有计算能力,如果一个副本只是一个 KV ,他的计算能力就比较有限,SQL 层把数据推到存储层,然后再返回 SQL 节点再进行运算,这样存储层和 SQL 层交互就会比较多。
  我们尽量把计算能力下推到存储层让 MySQL 完成,因为 MySQL 跟数据是在一块的,不涉及网络传输,只需要几个 I/O 就将数据过滤掉了。
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  4、数据分布
  刚才说了 SQL 层和存储层,再看一下数据怎么分布?
  建一个 T1 表,后面指定的分区方式是 HASH,在 RadonDB 里面默认整张表共 4096 slots, 每个小表默认是 128 slots, 其实就是一个大表分成 32 个小表,比如两个存储节点,这个 T1 表的 32 个小表,前 16 个小表在第一个存储节点上,后 16 个小表是在第二个节点上,是均分布的。
  可能很多人认为基于 MySQL 扩容是个问题,但是如上所说,表分完之后,RadonDB 以小表为单位做数据迁移,所以扩容非常方便。如果是加了一个新的节点,RadonDB 就会把动态的一些小表迁移到新的节点上,因为我们是基于 MySQL 做的,首先会做一个全量,然后把位点记下来,等全量做完再追增量,这个迁移过程基本不影响业务了。
  所以这样每个小表就可以在多个存储节点上动态的漂移。这些迁移规则也可以进行自定制,比如说先迁移较大的表或者热度比较高的表,让整体资源分配最快达到最优化。
  5、如何保障高可用?
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  一个存储节点内三个副本怎么保证高可用的?我们将分布式一致性算法 Raft 和 MySQL 自身的 GTID 结合起来。
  Raft 主要做两件事,一个是选主,第二个是数据同步。MySQL 5.7 GTID,类似于 Raft 里面的一个 log index, 数据同步是通过 GTID,选主是通过 Raft,我们开发了一套 Raft 框架,实时监测 MySQL 状态,如果主不正常了,就发起重新选主。
  选完后新主与其他两个从库数据怎么同步呢?两个从根据自己的 GTID 向主那去拉数据,进行数据同步。MySQL 5.7 可以并行复制,过程非常迅速,主从基本没有延迟,在高压情况下延迟也非常小。而且,通过比较强的 semi-sync 确保事务不丢失。
  存储节点里 Raft 和 GTID 是没有中心化的,可以跨机房部署,非常灵活。
  6、分布式事务
  下面看一下分布式事务,为什么分布式数据库需要分布式事务呢?
  因为数据在存储节点是分布式存储的,比如说一个表在节点 1、节点 2、节点 3 都有存储,然后执行了一个操作,在节点 1 成功了,在节点 2 失败了,节点 3 成功了。这时如果没有分布式事务,那这个表其实是坏的。
  如果没有分布式事务保证的话,数据随时都处于不可用的状态,只能用来存不重要的业务。
  所以 RadonDB 就提供了分布式事务,比如说刚才这个情况,就是 2 失败之后,这个 1 和 3 存储节点自动回滚,这是分布式事务保障。
  RadonDB 分布式事务也是基于 MySQL 实现的,在 MySQL 里面分两阶段提交。
  首先它会做 xa start,然后执行 SQL,做 xa end,第四做 xa prepare,这是第一阶段,此时事务才会从副本复制过去;第二个阶段是 xa commit。
  所以 RadonDB 在 SQL 层进行了事务管理,把 MySQL 的五个步骤抽象成三个,第一是 Begin,第二是执行,第三是提交,如果 Prepare 失败,可以进行 Rollback。
  提到分布式事务,大家可能会问,这个事务是什么隔离级别?
  RadonDB 实现 Snapshot Isolation 也就是快照隔离级别,这是个什么概念呢?当部分分区没有提交时,这个事务对其他事务不可见,这就是部分提交不可见。另外就是未提交不可见,也就是说做了 prepare,但没有 Commit,那也是不可见的。
  7、SI 隔离级别
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  大家可以看一下上图右边两个 SQL 语句,两个 Client 连上来,一个 Client 是扫表,第二个 SQL 语句就是不停更新这个表。
  对于 SI 隔离级别我们用了 XeLabs/go-jepsen ,1 个更新线程,16 扫表线程,通过 100 多亿次操作和监测没有发现问题,并且可以随机 KILL 存储节点主副本,这些都证明 MySQL XA 已经很强大了。
  RadonDB 还支持 HTAP 混合模式,在传统的解决方案里,一般都是两套系统,就是两个端口。在需要事务和需要分析的时候,分别在两个端口处理,中间通过ETL通道进行数据同步。
  但是,在 RadonDB 里就一个端口,如果是 OLAP 的操作,我们会自动路由到计算节点,而且 OLTP 和 OLAP 这两个计算的资源是隔离的,互不影响。
  8、性能
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  最后看一看 RadonDB 的性能。上图是单机 MySQL 和四个存储节点的 RadonDB 的对比。
  我们用 sysbench 16 个表、512 个线程,随机写了 5000 万条数据,测试得出来的结果,RadonDB 基本上可以做到 26589 TBS,单机是 9346 TBS,可以看到在 TBS 层面 RadonDB 性能将近是单机的三倍,延迟却只有的三分之一。
  这就是分布式数据库的威力,性能和容量可以通过节点的增加而线性增长。
  作者简介
 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔岄妶鎼佸蓟閻斿吋鍎岄柛婵勫劤琚﹂梻浣告惈閻绱炴笟鈧妴浣割潨閳ь剟骞冨▎鎾崇妞ゆ挾鍣ュΛ褔姊婚崒娆戠獢婵炰匠鍏炬稑鈻庨幋鐐存闂佸湱鍎ら〃鎰礊閺嶃劎绡€闂傚牊渚楅崕鎰版煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愬樊娼绘俊鐐€戦崕鏌ユ嚌妤e啫鐓橀柟瀵稿仜缁犵娀姊虹粙鍖℃敾妞ゃ劌妫濋獮鍫ュΩ閳哄倸鈧鏌﹀Ο渚Ш闁挎稒绋戦埞鎴︽倷閺夋垹浜堕梺鐟扮-閸嬨倕鐣烽崼鏇ㄦ晢濞达綁鏅茬紓鎾剁磽閸屾瑧顦︽い鎴濇嚇閹ê鈹戠€n偄鈧灚銇勯幘璺烘瀺缂佽妫濋弻鏇㈠醇濠靛牏顔婇梺鍛婂笂閸楁娊寮诲☉銏″亞濞达綁鏅茬花鐣岀磽娓氬洤鏋︽い鏇嗗洤鐓″璺好¢悢鑽ょ杸闁规儳澧庢闂備浇妗ㄩ悞锕傚礉濞嗗繒鏆﹂柕濞炬櫓閺佸﹪鎮规笟顖滃帥闁衡偓閵娧呯=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵妞ゆ牗绋戝▓鎴︽⒑閸涘﹥灏柣鎺炵畵閿濈偤寮撮姀锛勫幍闂佺顫夐崝锕傚吹濞嗘垹妫柟顖嗗啯鍊梺閫涚┒閸斿矂锝炲⿰鍫濆耿婵°倐鍋撴鐐差儔濮婅櫣绮欏▎鎯у壉闂佸湱鎳撳ú顓㈢嵁閸愩劉鍫柛顐ゅ枎濞堢喖姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨煡鏁滃┑掳鍊撻懗鍫曞矗閸℃稒鈷戦柛婵嗗婢跺嫭鎱ㄥΟ绋垮鐎规洘绻傞鍏煎緞鐎n剙骞嶉梻浣告啞閸旀ḿ浜稿▎鎾村€块柛娑橈攻閸欏繐鈹戦悩鎻掝伀閻㈩垱鐩弻鐔风暋閻楀牆娈楅悗瑙勬磸閸斿秶鎹㈠┑瀣<婵炴垶鐟ч弳顓㈡⒒閸屾艾鈧嘲霉閸パ呮殾闁汇垻枪缁愭鏌涢埄鍐槈缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紓浣哄У閻擄繝寮婚弴锛勭杸闁哄洨鍎愰埀顒€鏈换娑氱箔閸濆嫬顫囬梺鍝勮嫰缁夌兘篓娓氣偓閺屾盯骞樼€靛憡鍣板銈冨灪瀹€鎼佸极閹版澘骞㈡繛鍡樺灩濡插洦绻濆▓鍨灍闁挎洍鏅犲畷銏ゅ礂閼测晩娲稿┑鐘诧工閹虫劗澹曟總鍛婄厽闁逛即娼ф晶顔姐亜鎼淬垻鐭婃い顏勫暟閳ь剚绋掕摫闁稿﹥鍔楅埀顒侇問閸犳鎮¢敓鐘偓浣肝旈崨顓狀槹濡炪倖鍨兼慨銈団偓姘偢濮婄粯鎷呴崨濠呯闁哄浜濈换娑㈠箻椤曞懏顥栫紓渚囧枛椤兘鐛Ο灏栧亾闂堟稒鎲告い鏃€娲熼弻锝夋偐閸欏宸堕梺鍛婁緱閸樺ジ鎮¢崒鐐粹拺閺夌偞澹嗛ˇ锕傛煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儺鐏涜閺屾稑鈽夐崡鐐寸亪濠电偛鎳岄崐婵嗩潖閾忓湱鐭欐繛鍡樺劤閸擃剟姊洪崨濠冨鞍缂佽瀚伴獮鎴﹀閻橆偅鏂€闂佹悶鍎弲婵嬫儊閸儲鈷戠紒瀣濠€鎵磼鐎n偄鐏ラ柍璇茬Ч閺佹劙宕担鐟扮槣闂備線娼ч悧鍡欐崲閹烘绀嗗ù鐓庣摠閻撳繘鏌涢銈呮瀾闁稿﹥鍔栭〃銉╂倷閹绘帗娈茬紓浣稿€圭敮鐐哄焵椤掑﹦鍒伴柣蹇斿哺瀵煡顢楅埀顒勫煘閹达附鍊烽柡澶嬪灩娴犳悂鏌﹂崘顔绘喚闁诡喖缍婂畷鍫曞煛娴i攱顫曟繝娈垮枛閿曘劌鈻嶉敐澶婄闁绘ǹ顕ч悘鎶芥煣韫囷絽浜炲ù婊冪埣濮婄粯鎷呴挊澶婃優闂侀潻缍囬梽鍕┍婵犲洤鐐婃い鎺嗗亾缂佺姵鐓¢弻鏇$疀閺囩倫娑㈡煛閳ь剚绂掔€n偄鈧敻鏌ㄥ┑鍡欏嚬缂併劋绮欓弻娑欑節閸曨偂妲愬┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑦鍒涢悗瑙勬礃閿曘垺淇婇幖浣肝ㄦい鏃囨閺嬬姵绻濋悽闈浶ラ柡浣告啞閹便劑鎮滈挊澶嬬€梺鍛婄☉閿曘儵宕h箛娑欑厽闁硅揪绲鹃ˉ澶愭煛鐎b晝绐旈柡宀€鍠栧鑽も偓闈涘濡差喚绱掗悙顒€绀冩い顐㈩樀婵$敻宕熼姘敤濡炪倖鍔﹀鈧紒顔肩埣濮婅櫣绱掑Ο铏圭懆闂佽绻戝畝鍛婁繆閻㈢ǹ绀嬫い鏍ㄦ皑椤斿﹪姊洪悷鎵憼缂佽绉电粋鎺楁嚃閳哄啰锛滈梺缁樺姦閸撴瑩宕濋妶鍡愪簻妞ゆ挾濮撮崢瀵糕偓娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倖銇勯弴銊ュ箹閻撱倝鏌熺紒銏犳灍闁绘挻鐟﹂妵鍕籍閸屾粍鎲樺┑鐐茬墛缁捇寮婚埄鍐╁闁荤喐婢橀~宥夋⒑鐠団€崇仭婵☆偄鍟村畷瑙勩偅閸愨晛娈ゅ銈嗗笂閻掞箑鈻嶉敃鈧埞鎴︽偐閸偅姣勬繝娈垮櫘閸欏啴鐛箛娑樼妞ゆ棁鍋愰ˇ銊ヮ渻閵堝懐绠伴柛鐔哄閵囨瑩骞庨懞銉㈡嫽婵炴挻鍩冮崑鎾绘煃瑜滈崜姘辩矙閹捐鐓橀柟鐑橆殕閻撴洟鏌¢崒婵囩《閼叉牠姊洪悷鎵暛闁搞劌缍婇崺鐐哄箣閻橆偄浜鹃柨婵嗙凹缁ㄨ崵绱掗幇顓犫槈妞ゎ亜鍟存俊鍫曞幢濡⒈妲梻浣烘嚀閸熻法绮旈悷鎵殾妞ゆ劏鎳¢弮鍫濆窛妞ゆ棁顫夌€氳棄鈹戦悙鑸靛涧缂佽弓绮欓獮澶愭晬閸曨剙顏搁梺璺ㄥ枔婵敻鎮″▎鎾寸叄闊浄绲芥禍婵嬫倶韫囨洘鏆柡灞界Х椤т線鏌涢幘纾嬪妞ゎ偅绻堟俊鎼佹晜閼恒儳褰挎繝寰锋澘鈧捇鎳楅崼鏇炵厴鐎广儱鎳夐弨浠嬫煟濡搫绾ч柟鍏煎姉缁辨帡鎮╅崹顐㈡畬闂傚洤顦甸弻銊モ攽閸℃瑥顣洪梺閫炲苯鍘哥紒顔界懄娣囧﹪骞栨担鍝ュ幐闂佺ǹ鏈划灞筋嚕閹惰姤鈷掑ù锝呮啞閹牓鏌涢悢鍝勨枅鐎规洘鍨块獮妯肩磼濡厧骞堥梺纭呭閹活亞妲愰弴銏℃櫖鐎广儱娲ㄧ壕濂稿级閸碍娅呭ù鐘洪哺椤ㄣ儵鎮欓弶鎴犵懆闁剧粯鐗曢湁闁挎繂鎳庣痪褔鎮楀顐ょ煓婵﹦绮幏鍛村川闂堟稓绉虹€殿喚鏁婚、妤呭礋椤掆偓娴狀參姊洪棃娴ュ牓寮插☉姘辩焼闁稿本澹曢崑鎾诲礂婢跺﹣澹曢梻浣告啞濞诧箓宕滃☉銏犲偍闁汇垹鎲¢埛鎴︽煙椤栧棗瀚々浼存⒑缁嬫鍎忛柟鍐查叄閹儳鐣¢幍顔芥畷闂侀€炲苯澧撮柛鈹惧亾濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帞鈧鍣崑鍡涘箯閻樺樊鍟呮い鏂垮悑椤撳灝鈹戦悙宸殶濠殿喗鎸抽、鏍箛閺夋寧鐎梺鎼炲労閸撴岸鎮¢悢鍏肩厵闂侇叏绠戝楣冩煕閻旈绠婚柡灞剧洴閹瑩宕归锝嗙槗婵犳鍠栭敃锔惧垝椤栫偛绠柛娑樼摠閸ゅ秹鏌曟竟顖欒閸嬫挻绻濋崶銊㈡嫼闂傚倸鐗冮弲婵堢矓閸撲胶纾奸柣妯挎珪瀹曞矂鏌e☉鍗炴灕缂佺姵绋戦埥澶娾枎閹邦収浠ч梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�...
  张雁飞,青云QingCloud 数据库高级技术专家。TokuDB 内核贡献者、维护者,TokuDB 企业级热备工具作者。
  曾就职于阿里云数据库
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

专题