±à¼ÍƼö: |
±¾´ÎµÄ·ÖÏí´ó¸Ù·Ö³É3¸ö²¿·Ö£¬Ç°ÃæÏȽ²ÎÒÃÇÔÚNoSQLÉÏÈ¡µÃµÄ³É¹¦£¬È»ºó½²ÈçºÎÑݱ䵽NewSQL£¬×îºó½²Õâ¸öÑݽø·½°¸µÄȱÏÝ£¬Ö¸³öδÀ´µÄÑݽø·½Ïò¡£
±¾ÎÄÀ´×ÔITPUB²©¿Í£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
´ó¼Ò¶¼ÖªµÀ£¬NewSQL ÊǶԸ÷ÖÖÐÂÐÍÊý¾Ý¿âµÄ¼ò³Æ£¬ÕâÀàÊý¾Ý¿â²»½ö¾ßÓÐNoSQL¶Ôº£Á¿Êý¾Ý´¦ÀíµÄ¸ßÀ©Õ¹ÄÜÁ¦ºÍ¸ßÍÌÍÂÄÜÁ¦£¬»¹¾ßÓд«Í³Êý¾Ý¿âµÄÊÂÎñÄÜÁ¦ºÍSQLÄÜÁ¦¡£
ÄÇôÔÚÒ»Ì׳ÉÊìµÄNoSQLϵͳÉÏ£¬ÊÇ·ñ¿ÉÒÔ·õ»¯³öNewSQLϵͳÀ´ÄØ£¿´ð°¸Êǿ϶¨µÄ¡£
ÒòΪÔڵεΣ¬¾ÍÓÐÕâôһ¸ö³ÉÊìµÄ×ÔÑеÄNoSQLϵͳFusion£¬»ùÓÚËûÖ®ÉÏÎÒÃdzɹ¦·õ»¯ÁËNewSQLϵͳ¡£

½ÓÏÂÀ´£¬ÏÈ¿´±¾´Î·ÖÏíµÄ´ó¸Ù¸ÅÊö£¬ÈçÏ¡£

Õâ¿éÊÇÎÒÃÇËùÓд洢²úÆ·µÄÕûÌå¼Ü¹¹ÊÓͼ£¬ÎÒÃǵIJúÆ·¶¼ÊÇÔÚRocksDBÒýÇæ²ã»ù´¡Ö®ÉϹ¹½¨¡£Ê×ÏÈÔö¼ÓÁËÍøÂç²ã¡¢¼¯Èº¹ÜÀí²ã¡¢½ÓÈë²ãµÄ¹¤×÷£¬¹¹½¨ÁËÎÒÃǵÄNoSQL´æ´¢ÏµÍ³Fusion£¬È»ºóÔÚFusionµÄ»ù´¡Ö®ÉÏ£¬ÎÒÃÇÕûºÏÁ˵εεĵ÷¶ÈϵͳºÍHadoop¼ÆËãÆ½Ì¨µÄÄÜÁ¦£¬¹¹½¨ÁËÎÒÃǵÄDTS·þÎñFastLoad£»µÚ3¿éÊÇÔÚFusionµÄ»ù´¡ÉÏ£¬Ôö¼ÓÁËschema¹ÜÀí¡¢¶þ¼¶Ë÷Òý¡¢ÊÂÎñ¡¢binlogµÈÄÜÁ¦£¬¹¹½¨ÁËÎÒÃǵÄNewSQL´æ´¢dise£»µÚ4¿éÊÇÃæÏòδÀ´¹æ»®µÄ·Ö²¼Ê½Êý¾Ý¿â¡£Î§ÈÆÕâЩºËÐÄ·þÎñ£¬ÎÒÃÇ×öÁËÒ»Ì×ÍêÉÆµÄÖÇÄܹܿØÏµÍ³£¬ËüÊÇÒÀÍÐÓÚsalt-stackƽ̨£¬ÊµÏÖÁËÓû§ÏµÍ³ºÍÔËάϵͳ£¬·Ö±ð½â¾öÁËÓû§½ÓÈëÎÊÌâºÍ×Ô¶¯»¯ÔËάµÄÎÊÌâ¡£
½ÓÏÂÀ´£¬ÎÒÃÇ´ÓNoSQL½²Æð¡£
µÚÒ»Õ£º³ÉÊìµÄNoSQL´æ´¢ÏµÍ³Fusion
Õâ¿éÊ×ÏȽ²FusionµÄ±³¾°½éÉÜ¡£¿ÉÒÔ¿´µ½FusionÊÇÓÃC++×ÔÑеķֲ¼Ê½NoSQLÊý¾Ý¿â£¬Ö§³ÖRedisÐÒ飬Êý¾Ýͨ¹ýRocksDBÂäÅÌ£¬ÏÖÔÚÏßÉÏÒµÎñÒѾ½ÓÈë400¶à¸öÒµÎñ£¬¸²¸ÇÁËÈ«¹«Ë¾£»µ±Ç°ÏßÉϹæÄ£ÊÇ300¶à¸ö¼¯Èº£¬È«×Ô¶¯»¯ÔËάÅÜ×Å£¬Ã»ÓÐרÃŵÄOPÈËÔ±²ÎÓ룬×ÜÊý¾ÝÁ¿´ïµ½1500TB£¬·åÖµQPS³¬¹ý1400W¡£

½ÓÏÂÀ´½²FusionµÄ¼Ü¹¹£¬ÈçÏ¡£½²¼Ü¹¹Ö®Ç°£¬ÏÈ¿´FusionµÄµ®Éú±³¾°£¬Ëûµ®Éú³õÆÚÖ÷Òª½â¾öÁ½¸öÒµÎñµÄÊý¾Ý´æ´¢£ºÀúÊ·¶©µ¥ºÍ˾»úÐг̹켣¡£´ó¼Ò¶¼ÖªµÀµÎµÎÊǸöÿÌì¶©µ¥Ç§Íò¼¶µÄÒµÎñ£¬ÄÇôÀúÊ·¶©µ¥ºÜ¿ì¾Í»áÍ»ÆÆ°ÙÒÚ¼¶£¬¶øÃ¿Ìõ¶©µ¥¶¼»á¶ÔÓ¦Ò»Ìõ˾»úÐг̹켣£¬¶øÇÒ´ò³µ¾àÀëÔ½³¤£¬µ¥ÌõÐг̹켣Êý¾ÝÔ½´ó£¬ÕâÊÇÒ»¸ö±ÈÀúÊ·¶©µ¥Êý¾ÝÁ¿¸ü´óµÄÒµÎñ¡£ÔÚFusionµ®Éú֮ǰ£¬µÎµÎµÄ´æ´¢Ö÷ÒªÊÇÓÃRedisºÍMySQL£¬ºÜÏÔÈ»ÔÚÕâÖÖ¹æÄ£ÏµÄÊý¾ÝÁ¿£¬ÓÃRedisºÍMySQL²¢²»ÊÇ×îÓŽ⡣Òò´Ëµ®ÉúÁËFusion¡£
ÒòΪRedisµÄÐÒéʵÏֺܼòµ¥£¬ÇÒÊý¾Ý½á¹¹·Ç³£·á¸»£¬Òò´ËÎÒÃÇÔÚ´ÅÅÌÉÏȥʵÏÖÁËRedisµÄ´æ´¢½á¹¹£¬»ùÓÚÕâÑùµÄºËÐÄ˼Ï룬ÎÒÃÇʵÏÖÁËFusionµÄ¼¯Èº¼Ü¹¹£¬´ÓÉÏÍùÏ·ֱðÊǽÓÈë²ã¡¢¼¯Èº¹ÜÀí²ã¡¢³Ö¾Ã²ã¡¢¸ß¿ÉÓò㡣

½ÓÏÂÀ´£¬×ܽáÁË5¸öÁÁµã£¬ÌôÆäÖÐ4¸öÀ´ËµÃ÷FusionµÄ²úÆ·³ÉÊì¶È£¬ÈçÏ£º

ÁÁµã1£ºÊý¾ÝÁ÷¶¯
µÚÒ»¸öÊÇÊý¾ÝÁ÷¶¯ÄÜÁ¦¡£×öΪһ¸ö×ÔÑеĴ洢ϵͳ£¬Ëû±ØÐëÈÚÈëÕû¸ö¹«Ë¾µÄ¿ª·¢Éú̬£¬¾ß±¸ÓëÆäËû´æ´¢ÏµÍ³¡¢Öмä¼þ¡¢ÀëÏß¼ÆË㡢ʵʱ¼ÆËãµÈƽ̨´òͨµÄÄÜÁ¦£¬²ÅÄÜÍÆ¹ã¿ª¡£Òò´Ë£¬ÎÒÃÇÔÚÕâ·½Ãæ×öÁ˺ܶ๤×÷£¬ÆäÖÐÌôhiveµ½Fusion´òͨ£¬ÒÔ¼°FusionÓëFusionÖ®¼ä´òͨµÄÀý×ÓÀ´Õ¹¿ª½éÉÜ¡£

ΪÁ˽â¾öÀëÏßhiveµ½FusionµÄÊý¾ÝÁ÷¶¯£¬ÎÒÃÇ×öÁËһվʽDTSƽ̨FastLoad£¬Æä¼Ü¹¹Éè¼ÆÈçÏ£º
Ê×ÏÈ£¬Ëûµ®Éú³õÆÚÊÇΪÁ˽â¾ö±êǩƽ̨ºÍÌØÕ÷ƽ̨µÄÒµÎñÎÊÌâ¡£ÕâÁ½¸öÒµÎñµÄÊý¾ÝÊÇͨ¹ýÀëÏß¼ÆËã²úÉú£¬Òò´ËÊý¾ÝÊÇ´æ·ÅÔÚhiveÉÏ£¬ºÜÏÔÈ»hiveµÄÓÅÊÆ²¢²»ÊÇOLTP¡£
Òò´ËËûÃÇÏ£ÍûÓиö´æ´¢ÏµÍ³Äܹ»Âú×ãÁ½¸öÐèÇó£º
1. Ö§³ÅÿÌìÊý°ÙÒڴεĸßËÙ²éѯ£»
2. Ö§³ÖËûÃÇ¿ìËٵĴÓÀëÏ߸üÐÂTB¼¶±ðµÄÊý¾Ýµ½ÔÚÏß¡£
ºÜÏÔÈ»FusionºÜÈÝÒ×Âú×ãµÚÒ»¸öÐèÇó¡£ÄÇôµÚ¶þ¸öÐèÇóÈçºÎ½â¾öÄØ£¿ÒµÎñºÜÈÝÒ×Ïëµ½µÄ°ì·¨ÊÇ£º±éÀú¶ÁÈ¡hiveµÄÊý¾Ý£¬È»ºó¹¹Ôì³ÉÒ»ÌõÌõRedisÐÒéÖ§³ÖµÄKVÊý¾Ý£¬È»ºóµ÷ÓÃRedis¿Í»§¶Ëдµ½ÎÒÃǵÄVIP->proxy->Fusion¡£Õû¸ö¹ý³ÌÁ´Â·±È½Ï³¤£¬×ܽáÏÂÓÐ3¸öºËÐÄÍ´µã£º
ÀË·ÑÑз¢×ÊÔ´¡£·²ÊÇÓдÓhiveµ½FusionÊý¾Ý´òͨµÄÒµÎñ£¬¶¼µÃά»¤Ò»Ì×ÏàͬÂß¼µÄ´úÂë¡£
ÄÑÒÔ±£Ö¤Îȶ¨ÐÔ¡£ÀëÏ߯½Ì¨ÒâζןßÍÌÍ¡¢¸ß²¢·¢£¬ÓÃËüÍùÔÚÏßÊý¾Ý¿â¹àÊý¾Ý£¬ÏÔÈ»µÃ×¢ÒâÁ÷¿ØºÍ´í·å£¬Òò´ËÎȶ¨ÐÔÄÑÒÔ±£Ö¤¡£
Éú²úЧÂʵ͡£ÒµÎñʹÓÃRedisÐÒéµÄ·½Ê½¹à¿â£¬ºÜ¶àbatchºÍѹËõÄÜÁ¦¶¼Ã»·¨ÓÃÉÏ¡£

»ùÓÚÉÏÊöµÄÒµÎñÐèÇóºÍºËÐÄÍ´µã£¬ÎÒÃÇ×öÁËFastLoadһվʽDTSƽ̨¡£ËüÖ÷Òª¸øRD¡¢²úÆ·¾ÀíµÈÓû§Ìṩ·þÎñ£¬Òò´ËÌṩÁËÁ½ÖÖ½ÓÈ뷽ʽ£ºweb
consoleºÍopen API¡£Óû§Í¨¹ýÕâÁ½ÖÖ·½Ê½£¬°ÑFastLoadÈÎÎñÉÏ´«µ½ÎÒÃÇ·þÎñÆ÷£¬È»ºó·þÎñÆ÷»á×¢²áÒ»¸öµ÷¶ÈÈÎÎñ£¬¸Ãµ÷¶ÈÈÎÎñͨ¹ýÓû§´«Èë²ÎÊý£¬Åж¨Êý¾ÝÔ´£¬È»ºó´ÓÊý¾ÝÔ´ÀÌȡĿ±êÊý¾Ý£¬ÔÙ°ÑÄ¿±êÊý¾Ý·ÖƬͨ¹ýmay/reduce×öÅÅÐò£¬¹¹½¨SSTÎļþ£¬È»ºóͨ¹ýTCPÐÒéµÄ·½Ê½ÏÂÔØµ½Fusion´æ´¢½Úµã£¬Èƹýproxy£¬ÀûÓÃRocksDBµÄingest¹¦ÄÜ£¬¼ÓÔØµ½Fusionµ±ÖУ¬ÔÙ֪ͨÓû§£¬Óû§¾Í¿ÉÒÔͨ¹ýRedisÐÒé¶Áµ½µ¼ÈëµÄÊý¾ÝÁË¡£

µÚ¶þ¸öÁ÷¶¯ÄÜÁ¦ÊǼ¯ÈºÇ¨ÒÆ¡£
ËüÊÇÖ¸Ò»¸öFusion¼¯Èºµ½ÁíÒ»¸öFusion¼¯ÈºµÄÊý¾ÝÔÚÏßÈÈÇ¨ÒÆ£¬°üÀ¨È«Á¿ºÍÔöÁ¿£¬Ç¨Òƹý³ÌÊÇÔÚÏß²»Í£·þµÄ£¬¶ÔÓû§ÎÞ¸ÐÖªµÄ£¬Õâ¸ö¹¦ÄÜ¿ÉÒÔÓÃÓÚÒµÎñÒ»½¨¿ª³Ç¡¢»ú·¿Ç¨ÒƵȡ£ËüʵÏÖÁËÁ½¸öÒì¹¹¼¯Èº¼ä½ÚµãµÄµã¶ÔµãÊý¾ÝÇ¨ÒÆ¡£Ç¨ÒƵĹý³Ì´ó¸ÅÊÇ£ºÊ×ÏÈÔ´½Úµã±£ÁôÔöÁ¿ÈÕÖ¾£¬Í¬Ê±¹¹½¨È«Á¿¿ìÕÕ£¬È»ºó±éÀú¿ìÕÕÉú³ÉÁÙʱµÄSST£¬ÔÙÒÔSSTÎļþµÄ·½Ê½·¢Ë͵½¶Ô¶Ëmaster£¬masterÊÕµ½ºóת·¢µ½slave£¬´ýÈ«Á¿Í¬²½Íê³É£¬ÔÙ´ò¿ªÔöÁ¿ÈÕÖ¾µÄͬ²½£¬ÆäËûϸ½ÚÈçÏ¡£

ÁÁµã2£º½µ¼¶ÈÝÔÖ
Ê×ÏÈFusion¾ßÓÐÖ÷¿â½µ¼¶ÄÜÁ¦£¬µ±ÒµÎñÁ÷Á¿¸ß·åʱ£¬µ¼ÖÂÖ÷¿âÏìÓ¦Âý£¬´ËʱÀ©ÈÝÒѾÀ´²»¼°£¬Òò´ËÎÒÃÇÔÚproxyÉÏʵÏÖÁ˶Áд·ÖÀëÄÜÁ¦£¬¼´ÎþÉüÒ»¶¨µÄÒ»ÖÂÐÔ£¬°ÑÒ»²¿·Ö¶ÁÁ÷Á¿Â·Óɵ½´Ó¿â£¬´ïµ½±£È«Ö÷¿âµÄÄ¿µÄ¡£
È»ºóÊǼ¯ÈºÈÝÔÖ¡£¼´Fusionµ×²ãʵÏÖÁËÁ½¸ö¼¯Èº¼äµÄÊý¾Ý×Ô¶¯Í¬²½¡£Õý³£Çé¿ö£¬Óû§Í¨¹ýVIP1·ÃÎʼ¯Èº1µÄÊý¾Ý£¬µ±¼¯Èº1²»¿ÉÓÃʱ£¬ÎÒÃÇÌṩÁ½ÖÖÇÐÁ÷·½°¸£ºµÚÒ»ÖÖÊÇ£¬ÐèÒªÓû§Çл»·ÃÎÊÁ´Â·µ½VIP2£¬Õâ¿ÉÄÜÐèÒªÓû§ÖØÆô£»µÚ¶þÖÖÊǼÙÉèVIP¿ÉÓã¬ÎÒÃÇ¿ÉÒÔͨ¹ýÒ»¼üÇÐÁ÷ƽ̨£¬°ÑVIP1Ö¸ÏòµÄReal
Server¸Äµ½¼¯Èº2¡£

½ÓÏÂÀ´¿´¿´ÊÇÈçºÎʵÏÖ¼¯Èº¼äÊý¾Ýͬ²½µÄ¡£
ÎÒÃÇʵÏÖÁËÒì¹¹¼¯Èº¼ä½ÚµãµÄµã¶ÔµãÊý¾Ý´«Ê䣬²»ÒÀÀµÈκÎÖмä¼þ£¬Ã¿¸ö½Úµã»á¸ÐÖª¶Ô¶Ë¼¯ÈºµÄ·ÓÉÐÅÏ¢£¬ÇÒÄÜÊÊÓ¦Á½¶Ë¼¯ÈºµÄ״̬±ä»¯£¬±ÈÈçÇÐÖ÷¡¢À©Èݵȣ¬¶¼Äܱ£Ö¤Êý¾ÝÓÉÕýÈ·µÄ½Úµã·¢Æð£¬È»ºóͬ²½µ½ÕýÈ·µÄ½Úµã¡£Õû¸öÊý¾ÝµÄ¿É¿¿ÐÔÊÇÓÉ»¬¶¯´°¿ÚÀ´±£Ö¤µÄ£¬¼´ÎÒÃÇÓÃдµ½FusionµÄkeyµÄΨһseq×ö»¬¶¯´°¿ÚµÄÔªËØ£¬ÊµÏÖÁËÒ»¸ösend/ack»úÖÆ£¬±£Ö¤ÁË˳Ðò·¢ËÍ¡¢Ë³ÐòÖØ´«¡¢¿É¿¿´«ËÍ¡£
ÁíÍ⣬¸Ã·½°¸»¹Ö§³ÖÊý¾ÝµÄ×Ô¶¯²¹³¥¡£¼´µ±¼¯Èº1¹Òµôºó£¬Óû§°ÑÁ÷Á¿Çе½¼¯Èº2£¬ÔÚ¼¯Èº1»Ö¸´Ö®Ç°µÄÕⲿ·ÖÔöÁ¿Êý¾Ý£¬»áÔÚ¼¯Èº1»Ö¸´Ö®ºó£¬×Ô¶¯Í¬²½¹ýÈ¥¡£
×îºó£¬Õâ¸ö·½°¸Ò²Ö§³Ö˫д¡£ÎÒÃÇÀûÓÃRocksDBµÄmerge¹¦ÄÜ£¬×öÁËÒ»¸ö»ùÓÚNTPµÄÈ¥ÖØ·½°¸¡£

ÁÁµã3£º¼«ÖÂЧÂÊ
Õâ¿éÊÇÕë¶ÔRocksDBµÄÒ»Ð©ÌØÐÔ×öЩÓÅ»¯¡£µÚÒ»¸öÎÒÃÇʵÏÖÁËkeyÁ£¶ÈÇÒ¾ßÓÐÈȵãÔ¤²â¹¦ÄܵÄcache£¬½â¾öRocksDBËæ»ú¶ÁÎÊÌ⣬ÃüÖÐÂÊÄÜ´ïµ½ÔÉúµÄ3±¶£»µÚ¶þ¸öÊÇʵÏÖÁËcompactµÄ24Сʱµ÷¶È£¬´ÅÅÌÄܽÚÔ¼25%£¬ÑÓ³ÙºÍë´Ì¾ùÓдó·ù¶È½µµÍ£»µÚÈý¸öÓÅ»¯ÄÚ´æÕ¼Ó㬱ÈÈçslaveµÄpage-cacheÊÇÎÞÓõģ¬ÐèÒªGC£¬block-cacheÔڵͷåʱÆÚÊÇÎÞÓõģ¬Ò²ÐèÒªGCµÈ¡£

ÁÁµã4£º°²È«±£ÕÏ
µÚÒ»¸öÊÇÉý¼¶Ê±Êý¾Ý±¸·Ý¡£³£¹æÉý¼¶Ê±£¬ÎÒÃǶ¼»á±¸·Ý¶þ½øÖÆÎļþºÍÅäÖÃÎļþ£¬µ«ÊǶÔÓÚÊý¾Ý²¢Ã»Óб¸·Ý¡£ÎÒÃÇÕë¶ÔRocksDBµÄSSTÎļþÌØÐÔ£¬¼´Ö»»á±»´´½¨ºÍɾ³ý£¬¶ø²»»á±»Ð޸ģ¬×öÁËÒ»¸öÓ²Á´½Ó±¸·Ý·½°¸£¬¸Ã·½°¸ÊÇдʱ¿½±´£¬Òò´Ë±¸·ÝËٶȷdz£¿ìÇÒ´ÅÅ̿ռäÕ¼Ó÷dz£ÉÙ¡£¸ü¹Ø¼üµÄÊÇ£¬Õâ¸ö·½°¸ÊÇʵÏÖÔÚÖÇÄÜ¹Ü¿ØÆ½Ì¨µÄÉý¼¶Á÷³ÌÀïÃæ£¬²»ÐèÒª¸Ä·þÎñ¶Ë´úÂ룬ֻÐèÒªÐ޸ĹܿسÌÐò¾Í¿ÉÒÔÁË£¬Òò´ËºÜ·½±ã×öµ½100%ÏßÉϸ²¸Ç£¬±£Ö¤Êý¾Ý°²È«¡£
µÚ¶þ¸öÊÇÌṩÓû§¼¶±ð¿ìÕÕ£¬ÀûÓÃÁËRocksDBµÄcheckpoint£¬¿ÉÒÔ×öµ½Ãë¼¶¿ìÕÕ¡£
µÚÈý¸öÊÇÊý¾Ý¶à°æ±¾´æ·Å¡£¼´ÔÚFastLoad³¡¾°ÀïÃæ£¬ÎÒÃǻᱣÁô¶à°æ±¾Êý¾Ý£¬ÓÃÓÚÓû§ËæÊ±ËæµØµÄÇл»ËûÐèÒªµÄÊý¾Ý£¬±ÈÈçA/Btest£¬Êý¾Ý»Ø¹öµÈ¡£

µÚ¶þÕ£º»ùÓÚFusionµÄNewSQL̽Ë÷ʵ¼ù
½ÓÏÂÀ´ÌÖÂÛNewSQL̽Ë÷ʵ¼ùµÄϸ½Ú¡£
Ê×ÏÈ£¬ÐèÒª»Ø´ðÒ»¸öÎÊÌ⣬ÎÒÃÇΪʲôҪ×öNewSQLÑݽø£¿ÎÒÏë´ó¼ÒµÄ³ö·¢µã¶¼ÊÇÒ»ÑùµÄ£¬¶¼ÊÇΪÁ˽â¾öÔÚ´óÊý¾ÝÁ¿´æ´¢ÏµÄMySQLµÄ¼¸¸öºËÐÄÎÊÌ⣬¼´£ºÁé»îÎÊÌâ¡¢À©Õ¹ÎÊÌâ¡¢³É±¾ÎÊÌâ¡£ÄÇô¶ÔÓ¦µÄNewSQL£¬ÎÒÈÏΪ¾Í¸Ã¾ß±¸ÕâÑù¼¸¸öÄÜÁ¦£ºÇáËɼÓ×ֶΡ¢´æ´¢²»ÏÞÁ¿¡¢¸ü¸ßÐԼ۱ȡ£
ÄÇҪʵÏÖÕâÑùµÄÄ¿±ê£¬ÃæÁÙÄÄЩÌôսĨ£¿
ÈçºÎÔÚKVϵͳÉϸÐÖªÓû§schema£¿
ÈçºÎÔÚKVϵͳÉÏͳö¼æÈÝMySQLµÄbinlog£¿
ÈçºÎʵÏÖ¶þ¼¶Ë÷ÒýµÄ´æ´¢ºÍ²éѯ£¿
ÈçºÎʵÏÖÊÂÎñºÍÊÂÎñµÄ½»»¥£¿

½ÓÏÂÀ´£¬¸ø³öÎÒÃǵÄNewSQL¼Ü¹¹Í¼¡£Ê×ÏÈÎÒÃǰÑÓû§µÄDDL²Ù×÷£¬ÊÕÁ²µ½¿ØÖÆÌ¨£¬²»ÈÃÓû§Ö±½Ó¸øDB·¢ÆðDDL²Ù×÷£¬Óû§·¢ÆðµÄDDL²Ù×÷£¬¸Ä±äµÄschemaÐÅÏ¢£¬»á±£´æµ½ÅäÖÃÖÐÐÄ£¬Í¬Ê±»áÍÆË͸øÎÒÃǵÄproxy£¬ËùÓÐproxyÍÆËͳɹ¦ºó£¬·µ»Ø¸øÓû§³É¹¦ÐÅÏ¢¡£Óû§ÔÚͨ¹ýMySQL¿Í»§¶Ë·ÃÎÊÎÒÃǵÄproxy£¬ÎÒÃÇÔÚÔÀ´RedisÐÒéµÄproxyÉÏ£¬Ôö¼ÓÁËSQL-parserµÈ¹¤×÷£¬²¢½«½ÓÊܵ½µÄÓû§SQLÇëÇó£¬×ª³ÉKV£¬ÔÙдµ½Fusion¡£Fusion·þÎñ¶Ë»áÉú³ÉMySQL¸ñʽµÄbinlog£¬ÔÙͳöµ½MQ£¬ÎÒÃǵÄË÷Òý·þÎñÆ÷»áÒì²½Ïû·ÑÕⲿ·ÖÐÅÏ¢£¬È»ºó¸ù¾ÝÓû§×Ô¶¨ÒåµÄË÷Òýkey£¬°ÑËûдµ½Ë÷Òý´æ´¢Àï¼´¿É¡£

schema¹ÜÀí
Õâ¿éµÄºËÐÄ˼·£¬¾ÍÊǰÑDDL²Ù×÷ÓëÊý¾ÝÁ÷·ÖÀ룬ͨ¹ýÅäÖÃÖÐÐÄÀ´½âñî¡£ProxyÕâ±ßÖØµãÐèÒª½âÎöSQL£¬×ª»»KVµÈ¡£Ä¿Ç°FusionÖ§³Öinsert/replace/delete/select/updateÓï¾ä£¬ËüµÄ¶¨Î»Êǽâ¾öµ¥±í´ó±íµÄ´æ´¢ÎÊÌ⣬ÓëMySQL×öÒ»¶¨³Ì¶ÈµÄ»¥²¹£¬Òò´ËÔÚ¼æÈÝMySQLÉÏ×öÁ˽ϴóµÄÉáÆú¡£
ÕâÀï¸øÁËÒ»¸öSQLµ½KVת»»µÄÀý×Ó£¬×ó±ßÊÇÒ»¸östudent±í£¬ÈýÐÐËÄÁУ¬ÓÒ±ßÊÇRedisµÄhash±àÂ룬´ókeyÓбíÃû¼ÓÖ÷¼ü×é³É£¬fieldÊÇÁÐÃû£¬valueÊÇÐÐÁÐÖµ¡£

binlog¼æÈÝ
Õâ¿éÊǽ²ÈçºÎͳöbinlogµÄ£¬ÒòΪµÎµÎµÄͨÓÃbinlogÊÇÐèÒªÔÖµµÄ£¬¶øKVĬÈϵÄlogÊÇÖ»Óе±Ç°Öµ£¬Òò´ËÎÒÃÇÔÚ²úÉúlogµÄʱºò£¬ÏÈÅжÏÓû§µÄ²åÈëÀàÐÍ£¬Èç¹ûÊÇupdate¾ÍÏÈÈ¡ÔÖµ£¬ÔÙÒ»Æðдµ½logÀÈç¹ûÊÇinsertÔò²»ÐèÒª¡£

¶þ¼¶Ë÷Òý£¨Î¨Ò»ºÍ·ÇΨһ£©
ÉÏÊöbinlogͳöµ½MQÖ®ºó£¬ÕâÀïµÄË÷ÒýÄ£¿é»áÀ´Ïû·ÑMQ£¬²¢Òì²½¹¹½¨Ë÷Òý£¨ÒòΪÐÔÄÜ¿¼ÂǺͲ»¾ß±¸·Ö²¼Ê½ÊÂÎñÄÜÁ¦£¬Òò´ËûÓÐ×öʵʱË÷Òý£©¡£Ë÷ÒýkeyµÄÆ´½Ó·½Ê½ÈçÏÂÁ½ÖÖ£¬ÕâÀïÐèҪעÒâµÄÊÇ£¬¿´Ç°ÃæFusionµÄ¼Ü¹¹Í¼£¬ÎÒÃÇÖªµÀFusion¼¯ÈºµÄÊý¾Ý·ÖƬÊÇͨ¹ýhashʵÏֵģ¬Òò´Ë·ÖƬ֮¼äÊDz»Á¬ÐøµÄ£¬ÎÞ·¨×öµ½¿ç½Úµãscan£¬Òò´ËÎÒÃǶÔͬһ¸öÁÐË÷Òý£¬Ôö¼ÓÁËÒ»¸ö·ÖÇø½¡£¬¼´RedisÐÒéµÄhash-tag£¬À´±£Ö¤Í¬Ò»¸öË÷Òý£¬±ØÐë´æµ½Í¬Ò»¸ö½Úµã£¬·½±ãÎÒÃÇ×öscan¡£

ÊÂÎñ¹¦ÄÜ
ÊÂʵÉÏÎÒÃDz»Ö§³Ö·Ö²¼Ê½ÊÂÎñ£¬»¹ÊÇͨ¹ýredisµÄhash-tag£¬¹æ±ÜÁË·Ö²¼Ê½ÊÂÎñ£¬¼´¸úÓû§Ô¼¶¨£¬ÈÃÓû§°ÑÏ£Íû×öÊÂÎñ±£Ö¤µÄÐеÄÖ÷¼ü£¬´øÉÏhash-tag£¬ÈÃÕâЩÐзŵ½Í¬Ò»¸ö½Úµã¡£·Ö²¼Ê½ÊÂÎñ¾Íת³Éµ¥»úÊÂÎñÁË¡£¶øµ¥»úÊÂÎñ£¬ÎÒÃÇÀûÓÃÁËRocksDBµÄÊÂÎñÒýÇæ£¬ÒòΪRocksDBÔÙ¸øMyRocksÌṩÒýÇæÊ±£¬Ö§³ÖÁËÍ걸µÄÊÂÎñÄÜÁ¦£¬Òò´ËÎÒÃÇÖ±½Ó¼ÓÒÔÀûÓá£×îºóÒª½â¾öµÄÊÇÊÂÎñ½»»¥ÎÊÌ⣬ÕâÀïÎÒÃÇͨ¹ýluaÀ´½â¾ö¡£

ÊÂÎñ½»»¥
ÔÉúRedis¶ÔÓÚÊÂÎñ½»»¥´¦ÀíÖ§³ÖµÄ²¢²»ºÃ£¬±ÈÈç²»Ö§³Ö»Ø¹öµÈ£¬Òò´ËÎÒÃÇÏëҪͨ¹ýRedisÀ´ÊµÏÖÊÂÎñ½»»¥£¬¾ÍµÃÔö¼ÓһЩ½Ó¿Ú£¬µ«ÕâЩ½Ó¿ÚÏÔÈ»²»ÊDZê×¼SDKÌṩµÄ£¬¾ÍºÜÄÑÍÆ¹ã¡£ºÃÔÚRedis¿Í»§¶ËÌṩÁËluaµÄ½Å±¾Ö§³Ö£¬ÄÇôFusionҲʵÏÖlua½âÊÍÆ÷µÄ¹¦ÄÜ£¬¾Í¿ÉÒÔÈÃÓû§Í¨¹ýlua½Å±¾´«µÝÈκνӿڹýÀ´£¬Õâ¸öÌØÐÔ¿ÉÒԺܺõĽâñͬʱÓû§¿ÉÒÔÔÚlua½Å±¾ÀïʵÏÖ¸÷ÖÖif/elseµÈÂß¼¡£ÄÇôµ±ÎÒÃǰÑÊÂÎñ½»»¥Í¨¹ýluaÌṩºó£¬Óû§¸úFusion½»»¥Ê±£¬¾Í¿ÉÒÔ°ÑÏà¹ØÂß¼·Åµ½FusionÀ´Ö´ÐУ¬Õû¸ö¹ý³ÌÊÇÒ»½×¶ÎÊÂÎñ£¬²»ÐèÒª¸´ÔÓµÄbegin/commit/rollbackµÈ¡£ÎÒÃǵÄproxyÒ²²»ÐèҪά»¤ÊÂÎñ״̬£¬ÄÚ²¿µÄËø´¦ÀíÒ²¸ü¼òµ¥£¬²»ÐèÒª¹ØÐij¤ÊÂÎñ£¬¸ü²»ÓùØÐÄÊÂÎñÀï¶à¸ökeyÊÇ·ñ·Ö²¼ÔÚ²»Í¬½Úµã¡£
ÄÇÔÚMySQLÐÒéÕâ±ßÈçºÎʵÏÖÊÂÎñÄØ£¿ÎÒÃÇÊǽ¨ÒéÓû§°Ñlua½Å±¾Ð´µ½MySQLµÄcommentÀͨ¹ý½ÓÏÂcommentµÄlua£¬À´Ö´ÐÐÊÂÎñ¡£

×ܽá
×îºó£¬¶ÔÎÒÃǵÄNewSQL·½°¸×ö¸öС½á¡£ËûµÄÓŵãºÜÃ÷ÏÔ£¬Ö±½ÓÔÚÏÖÓÐNoSQL¼Ü¹¹ÉϼÓÒÔµü´ú¼´¿É¿ìËÙÉÏÏߣ¬¸´Óó̶ȸߣ¬Îȶ¨ÐԸߣ»Í¬Ê±ÔÚ²»ÐèÒªÊÂÎñµÄ³¡¾°Ï£¬È·ÊµºÜºÃµÄ½â¾öÁËÀ©Õ¹ÎÊÌâ¡¢Áé»îÎÊÌ⣻ÁíÍ⣬ÔÚÇ°ÃæÌáµ½µÄhiveµ½FusionµÄ´òͨÖУ¬ÈÃÓû§Ê¹Óøü×ÔÈ»£¬ÒòΪÔÏȵÄFastLoadÊǰÑSQL½á¹¹»¯µÄÊý¾Ýת³É·ÇSQL½á¹¹µÄKVµÄ£¬ÏÖÔÚÓÐÁËNewSQLÖ®ºó£¬Óû§¾Í¿ÉÒÔ´ÓSQLµ½SQL¡£
Õâ¸ö·½°¸ÉÏÏßÒ»Ä꣬µ±Ç°´æÈëÊý¾Ý³¬¹ýÁË400TB£¬×ÜQPS³¬¹ýÁË200W£»½ÓÈëµÄÒµÎñ³¬¹ýÁË58¸ö£¬Æ½¾ùÿ¸öÒµÎñ´æ´¢8TBÒÔÉÏÊý¾Ý£¬¿ÉÒÔ¿´µ½Õâ¸öÊý¾ÝÁ¿ÊÇMySQL²»Ì«ÈÝÒ×½â¾öµÄÒ»¸öÁ¿¼¶¡£

µÚÈýÕ£º·Ö²¼Ê½Êý¾Ý¿âÉè¼Æ
Ç°ÃæÖ»Ìáµ½ÁËNewSQL·½°¸µÄÓŵ㣬ʵ¼ÊÉÏ£¬Ëü»¹ÊÇÓкܶ಻×ãµÄµØ·½£¬×îºËÐĵÄÎÊÌâÊÇ£¬ËûÊÇÒ»¸ö¡±Î±·Ö²¼Ê½¡°·½°¸£¬ËäÈ»Êý¾Ý×öµ½ÁËÎÞÏÞÀ©Õ¹£¬µ«ÊÇ£º
ֻʵÏÖÁ˵¥»úÊÂÎñ¡£
ֻʵÏÖÁ˵¥»úË÷Òý¡£ÒòΪ¼¯Èº°´hash·ÖƬ£¬ÎÞ·¨¿ç»úscan¡£
Ö»ÓÐÒì²½Ë÷ÒýÄÜÁ¦¡£ÒòΪûÓзֲ¼Ê½ÊÂÎñ±£Ö¤£¬ÎÒÃÇֻʵÏÖÁËÒì²½Ë÷Òý¡£
Join¸üÊDz»Ö§³ÖµÄ¡£
ÎÞµ¯ÐÔÀ©ÈÝÄÜÁ¦scale out¡£
ºÜÏÔÈ»£¬ÔÚÏÖÓеÄNoSQL¼Ü¹¹ÉÏ£¬ÒѾÎÞ·¨¼òµ¥µÄ½â¾öÕâЩÐèÇó£¬ÐèÒª³¹µ×´ó¸Ä¡£Òò´Ë£¬ÎÒÃÇÓÐÁËÁíÆð¯ÔîµÄÏîÄ¿¡ª¡ª·Ö²¼Ê½Êý¾Ý¿â¡£ËüÊ×Òª½â¾öµÄ¼¸¸öÎÊÌâÊÇ£º
·Ö²¼Ê½ÊÂÎñ¡£
Êý¾ÝºÍË÷ÒýµÄÕæÕýÎÞÏÞÀ©Õ¹¡£
ʵʱË÷Òý¡£
µ¯ÐÔÀ©ÈÝ¡£
¶à¸±±¾Ç¿Ò»Ö¡¢¸ß¿ÉÓá£
SQL¼æÈݵȡ£

¼Ü¹¹Éè¼Æ
¼Ü¹¹Éè¼ÆÈçÏ£¬ÊÂʵÉÏ£¬ÕâÒ²ÊÇ·Ö²¼Ê½´æ´¢µÄ¾µä¼Ü¹¹£¬ºÜ¶àµÄϵͳ¶¼³¤ÔÚÀàËÆ¼Ü¹¹ÉÏÃæ£¬ËüʵÏÖÁËrange·ÖÇø¡¢Ç¿Ò»Ö¡¢µ¯ÐÔÀ©ÈÝ¡¢È«¾ÖscanµÈÄÜÁ¦¡£Ï¸½Ú¾Í²»¶à×öÕ¹¿ªÁË¡£

µ±Ç°×´¿ö
ÎÒÃÇÔÚÕâÌ׼ܹ¹ÉÏ£¬ÊµÏÖÁËÒ»¸ö¾ß±¸raftǿһÖ¡¢È«¾Öscan¡¢×Ô¶¯·ÖÁѵÈÄÜÁ¦µÄ·Ö²¼Ê½KVϵͳ£¬ÏÂÒ»²½ÊÇ×ö·Ö²¼Ê½ÊÂÎñ¡£¼´ÏÈʵÏÖÒ»¸ö¹¦ÄÜÇ¿´óµÄKVϵͳ£¬È»ºóÔÚÕâ»ù´¡ÉϼÌÐø×öSQLµÄÖ§³Ö¡£
×ܽáÈý²¿Çú
×îºóÊǶÔÕû¸öÑݽø¹ý³Ì×öÒ»¸ö×ܽᡣ
Ê×ÏÈÎÒÃÇÑз¢ÁËNoSQLϵͳFusion£¬¶ÍÁ¶ÁËÎÒÃǵĻù´¡ÄÜÁ¦£º·Ö²¼Ê½¡¢³Ö¾Ã»¯¡¢¸ß¿ÉÓá¢Êý¾ÝÁ÷¶¯µÈ¡£
µÚ¶þ²½ÊÇÎÒÃǵÄNewSQL̽Ë÷£¬ÎÒÃÇ×öÁËÒ»¸ö¿ìËÙ½â¾öÒµÎñÎÊÌâµÄ·½°¸£¬Õâ¸ö·½°¸Óгɹ¦µÄµØ·½£¬ÒòΪËü½â¾öÁË50¶à¸öÒµÎñµÄÐèÇó£¬Ò²ÓÐʧ°ÜµÄµØ·½£¬ÎÒÃÇÎÞ·¨ÔÚÕâÌ×ϵͳÉÏ×ߵøüÔ¶£¬µ«ÕâÌáÉýÁËÎÒÃǵÄϵͳÈÏÖª£¬ÕâºÜÖØÒª¡£
µÚÈý²½ÊÇδÀ´Ñݽø£¬ÏëÒªÔÚº£Á¿Êý¾ÝOLTPÕâÌõ·×ߵĸüÔ¶£¬±ØÐë³¹µ×¸ïÃü£¬Òò´Ë×îºóµÄÑݽøÊÇÅׯúÁËÏÖÓÐϵͳ¼Ü¹¹£¬´ÓÍ·Éè¼ÆÎÒÃǵķֲ¼Ê½Êý¾Ý¿â¡£Õâ¸öÏîĿҲÊÇ·ÖÆÚµÄ£¬Ò»ÆÚÎÒÃÇÏÈ×öÒ»¸ö¹¦ÄÜÇ¿´óµÄKVϵͳ£¬È»ºó¶þÆÚÔÚËûµÄ»ù´¡ÉÏÔö¼ÓSQL-parser£¬È¡´úÎÒÃÇÏÖÓеÄNewSQL·½°¸£¨¹¦ÄܱȽϼòµ¥£¬ºÜÈÝÒ×Â䵨£©£¬È»ºóÈýÆÚ²ÅÊǸ߶ȵÄSQL¼æÈÝ¡£
Õû¸öÑݽø¹ý³Ì×ñÑÁËÁ½¸öÔÔò£º±ÜÃâ¹ý¶ÈÉè¼ÆºÍ´óÔ¾½ø¡£¼´ÔÚÏÖÓÐÎȶ¨µÄ¼Ü¹¹ÉÏ»¨×îСµÄ´ú¼Û£¬½â¾ö×î¶Ì°åÎÊÌâ¡£Õû¸ö¹ý³Ì×öµ½Á˲úÆ·µÄ³ÖÐø½»¸¶£¬¼È¿ìËÙÏìÓ¦ÒµÎñÐèÇó£¬ÓÖ²»¶Ï·á¸»×Ô¼ºµÄÈÏÖª£¬×îÖÕ³¯×ÅÒ»¸ö³É±¾¿É¿Ø¡¢Îȶ¨µü´úµÄÄ¿±êǰ½ø¡£

|