±à¼ÍƼö: |
ÎÄÕÂÖ÷Òª½²ÊöÓÐ״̬µÄÁ÷Êý¾Ý´¦Àí£¬FlinkÖеÄ״̬¹ÜÀí,״̬¹ÜÀíºÍÈÝ´í»úÖÆÊµÏÖ,°¢ÀïÏà¹Ø¹¤×÷½éÉÜ,Ï£Íû¶Ô´ó¼ÒÓаïÖú¡£
±¾ÎÄÀ´×ÔÓÚFlink ChinaÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼£¬ÍƼö
|
|
Ò»¡¢ÓÐ״̬µÄÁ÷Êý¾Ý´¦Àí
1¡¢Ê²Ã´ÊÇÓÐ״̬µÄ¼ÆËã
¼ÆËãÈÎÎñµÄ½á¹û²»½ö½öÒÀÀµÓÚÊäÈ룬»¹ÒÀÀµÓÚËüµÄµ±Ç°×´Ì¬£¬Æäʵ´ó¶àÊýµÄ¼ÆËã¶¼ÊÇÓÐ״̬µÄ¼ÆËã¡£
±ÈÈçwordcount,¸øÒ»Ð©word,Æä¼ÆËãËüµÄcount,ÕâÊÇÒ»¸öºÜ³£¼ûµÄÒµÎñ³¡¾°¡£count×öΪÊä³ö£¬ÔÚ¼ÆËãµÄ¹ý³ÌÖÐÒª²»¶ÏµÄ°ÑÊäÈëÀÛ¼Óµ½countÉÏÈ¥£¬ÄÇôcount¾ÍÊÇÒ»¸östate¡£
2¡¢´«Í³µÄÁ÷¼ÆËãϵͳȱÉÙ¶ÔÓÚ³ÌÐò״̬µÄÓÐЧ֧³Ö
״̬Êý¾ÝµÄ´æ´¢ºÍ·ÃÎÊ£»
״̬Êý¾ÝµÄ±¸·ÝºÍ»Ö¸´£»
״̬Êý¾ÝµÄ»®·ÖºÍ¶¯Ì¬À©ÈÝ¡£
ÔÚ´«Í³µÄÅú´¦ÀíÖУ¬Êý¾ÝÊÇ»®·ÖΪ¿é·ÖƬȥÍê³ÉµÄ£¬È»ºóÿһ¸öTaskÈ¥´¦ÀíÒ»¸ö·ÖƬ¡£µ±·ÖƬִÐÐÍê³Éºó£¬°ÑÊä³ö¾ÛºÏÆðÀ´¾ÍÊÇ×îÖյĽá¹û¡£ÔÚÕâ¸ö¹ý³Ìµ±ÖУ¬¶ÔÓÚstateµÄÐèÇó»¹ÊDZȽÏСµÄ¡£
¶ÔÓÚÁ÷¼ÆËã¶øÑÔ£¬¶ÔStateÓзdz£¸ßµÄÒªÇó£¬ÒòΪÔÚÁ÷ϵͳÖÐÊäÈëÊÇÒ»¸öÎÞÏÞÖÆµÄÁ÷£¬»áÔËÐкܳ¤Ò»¶Îʱ¼ä£¬ÉõÖÁÔËÐм¸Ìì»òÕß¼¸¸öÔ¶¼²»»áÍ£»ú¡£ÔÚÕâ¸ö¹ý³Ìµ±ÖУ¬¾ÍÐèÒª½«×´Ì¬Êý¾ÝºÜºÃµÄ¹ÜÀíÆðÀ´¡£ºÜ²»ÐÒµÄÊÇ£¬ÔÚ´«Í³µÄÁ÷¼ÆËãϵͳÖУ¬¶Ô״̬¹ÜÀíÖ§³Ö²¢²»ÊǺÜÍêÉÆ¡£±ÈÈçstorm,ûÓÐÈκγÌÐò״̬µÄÖ§³Ö£¬Ò»ÖÖ¿ÉÑ¡µÄ·½°¸ÊÇstorm+hbaseÕâÑùµÄ·½Ê½È¥ÊµÏÖ£¬°ÑÕâ״̬Êý¾Ý´æ·ÅÔÚHbaseÖУ¬¼ÆËãµÄʱºòÔٴδÓHbase¶Áȡ״̬Êý¾Ý£¬×ö¸üÐÂÔÚдÈë½øÈ¥¡£ÕâÑù¾Í»áÓÐÈçϼ¸¸öÎÊÌâ
Á÷¼ÆËãϵͳµÄÈÎÎñºÍHbaseµÄÊý¾Ý´æ´¢ÓпÉÄܲ»ÔÚͬһ̨»úÆ÷ÉÏ£¬µ¼ÖÂÐÔÄÜ»áºÜ²î¡£ÕâÑù¾³£»á×öÔ¶¶ËµÄ·ÃÎÊ£¬×ßÍøÂçºÍ´æ´¢£»
±¸·ÝºÍ»Ö¸´ÊDZȽÏÀ§ÄÑ£¬ÒòΪHbaseÊÇûÓлعöµÄ£¬Òª×öµ½Exactly onces ºÜÀ§ÄÑ¡£ÔÚ·Ö²¼Ê½»·¾³Ï£¬Èç¹û³ÌÐò³öÏÖ¹ÊÕÏ£¬Ö»ÄÜÖØÆôStorm£¬ÄÇôHbaseµÄÊý¾ÝÒ²¾ÍÎÞ·¨»Ø¹öµ½Ö®Ç°µÄ״̬¡£
±ÈÈç¹ã¸æ¼Æ·ÑµÄÕâÖÖ³¡¾°£¬Storm+HbaseÊÇÊÇÐв»Í¨µÄ£¬³öÏÖµÄÎÊÌâÊÇÇ®¿ÉÄܾͻá¶àË㣬½â¾öÒÔÉϵİ취ÊÇStorm+mysql£¬Í¨¹ýmysqlµÄ»Ø¹ö½â¾öÒ»ÖÂÐÔµÄÎÊÌâ¡£µ«ÊǼܹ¹»á±äµÃ·Ç³£¸´ÔÓ¡£ÐÔÄÜÒ²»áºÜ²î£¬ÒªcommitÈ·±£Êý¾ÝµÄÒ»ÖÂÐÔ¡£
¶ÔÓÚstorm¶øÑÔ״̬Êý¾ÝµÄ»®·ÖºÍ¶¯Ì¬À©ÈÝÒ²ÊǷdz£ÄÑ×ö¡£
Ò»¸öºÜÑÏÖØµÄÎÊÌâÊÇËùÓÐÓû§¶¼»áÔÚstromÉÏÖØ¸´µÄ×öÕâЩ¹¤×÷£¬±ÈÈçËÑË÷£¬¹ã¸æ¶¼ÒªÔÚ×öÒ»±é£¬ÓÉ´ËÏÞÖÆÁ˲¿ÃŵÄÒµÎñ·¢Õ¹¡£
3¡¢Flink·á¸»µÄ״̬·ÃÎʺ͸ßЧµÄÈÝ´í»úÖÆ
FlinkÔÚ×îÔçÉè¼ÆµÄʱºò¾ÍÒâʶµ½ÁËÕâ¸öÎÊÌ⣬²¢ÌṩÁ˷ḻµÄ״̬·ÃÎʺÍÈÝ´í»úÖÆ¡£ÈçÏÂͼËùʾ£º

Flink²¢ÇÒÌṩÁ˷ḻµÄ״̬·ÃÎʺ͸ßЧµÄÈÝ´í»úÖÆ

¶þ¡¢FlinkÖеÄ״̬¹ÜÀí
°´ÕÕÊý¾ÝµÄ»®·ÖºÍÀ©ÕÅ·½Ê½£¬FlinkÖдóÖ·ÖΪ2Àࣺ
Keyed States
Operator States

1¡¢Keyed States
Keyed StatesµÄʹÓÃ

FlinkÒ²ÌṩÁËKeyed States¶àÖÖÊý¾Ý½á¹¹ÀàÐÍ

Keyed StatesµÄ¶¯Ì¬À©ÈÝ

2¡¢Operator State
Operator StatesµÄʹÓÃ

Operator StatesµÄÊý¾Ý½á¹¹²»ÏñKeyed States·á¸»£¬ÏÖÔÚÖ»Ö§³ÖList
Operator States¶àÖÖÀ©Õ¹·½Ê½

Operator StatesµÄ¶¯Ì¬À©Õ¹ÊǷdz£Áé»îµÄ£¬ÏÖÌṩÁË3ÖÖÀ©Õ¹£¬ÏÂÃæ·Ö±ð½éÉÜ£º
ListState:²¢·¢¶ÈÔڸıäµÄʱºò£¬»á½«²¢·¢ÉϵÄÿ¸öList¶¼È¡³ö£¬È»ºó°ÑÕâЩListºÏ²¢µ½Ò»¸öеÄList,È»ºó¸ù¾ÝÔªËØµÄ¸öÊýÔÚ¾ùÔÈ·ÖÅ䏸еÄTask;
UnionListState:Ïà±ÈÓÚListState¸ü¼ÓÁé»î£¬°Ñ»®·ÖµÄ·½Ê½½»¸øÓû§È¥×ö£¬µ±¸Ä±ä²¢·¢µÄʱºò£¬»á½«ÔÀ´µÄListÆ´½ÓÆðÀ´¡£È»ºó²»×ö»®·Ö£¬Ö±½Ó½»¸øÓû§£»
BroadcastState:Èç´ó±íºÍС±í×öJoinʱ£¬Ð¡±í¿ÉÒÔÖ±½Ó¹ã²¥¸ø´ó±íµÄ·ÖÇø£¬ÔÚÿ¸ö²¢·¢ÉϵÄÊý¾Ý¶¼ÊÇÍêȫһÖµġ£×öµÄ¸üÐÂÒ²Ïàͬ£¬µ±¸Ä±ä²¢·¢µÄʱºò£¬°ÑÕâЩÊý¾ÝCOPYµ½ÐµÄTask¼´¿É
ÒÔÉÏÊÇFlink Operator StatesÌṩµÄ3ÖÖÀ©Õ¹·½Ê½£¬Óû§¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÇó×öÑ¡Ôñ¡£
ʹÓÃCheckpointÌá¸ß³ÌÐòµÄ¿É¿¿ÐÔ
Óû§¿ÉÒÔ¸ù¾ÝµÄ³ÌÐòÀïÃæµÄÅäÖý«checkpoint´ò¿ª£¬¸ø¶¨Ò»¸öʱ¼ä¼ä¸ôºó£¬¿ò¼Ü»á°´ÕÕʱ¼ä¼ä¸ô¸ø³ÌÐòµÄ״̬½øÐб¸·Ý¡£µ±·¢Éú¹ÊÕÏʱ£¬Flink»á½«ËùÓÐTaskµÄ״̬һÆð»Ö¸´µ½CheckpointµÄ״̬¡£´ÓÄĸöλÖÿªÊ¼ÖØÐÂÖ´ÐС£
FlinkÒ²ÌṩÁ˶àÖÖÕýÈ·ÐԵı£ÕÏ£¬°üÀ¨£º
AT LEAST ONCE;
Exactly once;

±¸·ÝΪ±£´æÔÚStateÖеijÌÐò״̬Êý¾Ý
FlinkÒ²ÌṩÁËÒ»Ì×»úÖÆ£¬ÔÊÐí°ÑÕâЩ״̬·Åµ½ÄÚ´æµ±ÖС£×öCheckpointµÄʱºò£¬ÓÉFlinkÈ¥Íê³É»Ö¸´¡£
´ÓÒÑÍ£Ö¹×÷ÒµµÄÔËÐÐ״̬Öлָ´
µ±×é¼þÉý¼¶µÄʱºò£¬ÐèҪֹͣµ±Ç°×÷Òµ¡£Õâ¸öʱºòÐèÒª´Ó֮ǰֹͣµÄ×÷Òµµ±Öлָ´£¬FlinkÌṩÁË2ÖÖ»úÖÆ»Ö¸´×÷Òµ:
Savepoint:ÊÇÒ»ÖÖÌØÊâµÄcheckpoint£¬Ö»²»¹ý²»Ïñcheckpoint¶¨ÆÚµÄ´ÓϵͳÖÐÈ¥´¥·¢µÄ£¬ËüÊÇÓû§Í¨¹ýÃüÁî´¥·¢£¬´æ´¢¸ñʽºÍcheckpoint
Ò²ÊDz»ÏàͬµÄ£¬»á½«Êý¾Ý°´ÕÕÒ»¸ö±ê×¼µÄ¸ñʽ´æ´¢£¬²»¹ÜÅäÖÃʲôÑù£¬Flink¶¼»á´ÓÕâ¸öcheckpoint»Ö¸´£¬ÊÇÓÃÀ´×ö°æ±¾Éý¼¶Ò»¸ö·Ç³£ºÃµÄ¹¤¾ß£»
External Checkpoint£º¶ÔÒÑÓÐcheckpointµÄÒ»ÖÖÀ©Õ¹£¬¾ÍÊÇ˵×öÍêÒ»´ÎÄÚ²¿µÄÒ»´ÎCheckpointºó£¬»¹»áÔÚÓû§¸ø¶¨µÄÒ»¸öĿ¼ÖУ¬¶à´æ´¢Ò»·ÝcheckpointµÄÊý¾Ý£»

Èý¡¢×´Ì¬¹ÜÀíºÍÈÝ´í»úÖÆÊµÏÖ
ÏÂÃæ½éÉÜÒ»ÏÂ״̬¹ÜÀíºÍÈÝ´í»úÖÆÊµÏÖ·½Ê½£¬FlinkÌṩÁË3ÖÖ²»Í¬µÄStateBackend,
MemoryStateBackend
FsStateBackend
RockDBStateBackend

Óû§¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÇóÑ¡Ôñ£¬Èç¹ûÊý¾ÝÁ¿½ÏС£¬¿ÉÒÔ´æ·Åµ½MemoryStateBackendºÍFsStateBackendÖУ¬Èç¹ûÊý¾ÝÁ¿½Ï´ó£¬¿ÉÒԷŵ½RockDBÖС£
ÏÂÃæ½éÉÜHeapKeyedStateBackendºÍRockDBKeyedStateBackend
µÚÒ»£¬HeapKeyedStateBackend

µÚ¶þ£¬RockDBKeyedStateBackend

CheckpointµÄÖ´ÐÐÁ÷³Ì
CheckpointµÄÖ´ÐÐÁ÷³ÌÊǰ´ÕÕChandy-LamportË㷨ʵÏֵġ£

Checkpoint BarrierµÄ¶ÔÆë

È«Á¿Checkpoint
È«Á¿Checkpoint»áÔÚÿ¸ö½Úµã×ö±¸·ÝÊý¾Ýʱ£¬Ö»ÐèÒª½«Êý¾Ý¶¼±ãÀûÒ»±é£¬È»ºóдµ½Íⲿ´æ´¢ÖУ¬ÕâÖÖÇé¿ö»áÓ°Ï챸·ÝÐÔÄÜ¡£ÔÚ´Ë»ù´¡ÉÏ×öÁËÓÅ»¯¡£

RockDBµÄÔöÁ¿Checkpoint
RockDBµÄÊý¾Ý»á¸üе½Äڴ棬µ±ÄÚ´æÂúʱ£¬»áдÈëµ½´ÅÅÌÖС£ÔöÁ¿µÄ»úÖÆ»á½«Ð²úÉúµÄÎļþCOPY³Ö¾Ã»¯ÖУ¬¶øÖ®Ç°²úÉúµÄÎļþ¾Í²»ÐèÒªCOPYµ½³Ö¾Ã»¯ÖÐÈ¥ÁË¡£Í¨¹ýÕâÖÖ·½Ê½¼õÉÙCOPYµÄÊý¾ÝÁ¿£¬²¢Ìá¸ßÐÔÄÜ¡£

ËÄ¡¢°¢ÀïÏà¹Ø¹¤×÷½éÉÜ
FlinkÔÚ°¢ÀïµÄ³É³¤Â·Ïß
°¢ÀïÊÇ´Ó2015Ä꿪ʼµ÷ÑÐFlink,2015Äê10ÔÂÆô¶¯BlinkÏîÄ¿£¬²¢ÍêÉÆFlinkÔÚ´ó¹æÄ£Éú²úϵÄһЩÓÅ»¯ºÍ¸Ä½ø¡£2016ÄêË«11²ÉÓÃÁËBlinkϵͳ£¬ÎªËÑË÷£¬ÍƼö£¬¹ã¸æÒµÎñÌṩ·þÎñ¡£2017Äê5ÔÂBlinkÒѳÉΪ°¢ÀïµÄʵʱ¼ÆËãÒýÇæ¡£

°¢ÀïÔÚ״̬¹ÜÀíºÍÈÝ´íÏà¹ØµÄ¹¤×÷

ÕýÔÚ×öµÄ¹¤×÷£¬»ùÓÚStateÖØ¹¹Window·½ÃæµÄһЩÓÅ»¯£¬°¢ÀïÒ²ÕýÔÚ½«¹¦ÄÜ×öÍêÉÆ¡£ºóÐø½«°üÀ¨asynchronous CheckpointµÄ¹¦ÄÜÍêÉÆ£¬²¢ºÍÉçÇø½øÒ»²½¹µÍ¨ºÍºÏ×÷¡£°ïÖúFlinkÉçÇøÍêÉÆÏà¹Ø·½ÃæµÄ¹¤×÷¡£
|