Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¿ìÊÖ»ùÓÚ Apache Flink µÄÓÅ»¯Êµ¼ù
 
×÷ÕߣºÁõ½¨¸Õ
 
  1550  次浏览      27
2020-12-8
 
±à¼­ÍƼö:
±¾ÎÄÊ×ÏȽéÉÜÁ÷ʽ¼ÆËãµÄ»ù±¾¸ÅÄ È»ºó½éÉÜ Flink µÄ¹Ø¼ü¼¼Êõ£¬×îºó½²½² Flink ÔÚ¿ìÊÖÉú²úʵ¼ùÖеÄһЩӦÓ㬰üÀ¨ÊµÊ±Ö¸±ê¼ÆËãºÍ¿ìËÙ failover¡£
±¾ÎÄÀ´×ÔDBAplusÉçȺ£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Ò»¡¢Á÷ʽ¼ÆËãµÄ½éÉÜ

Á÷ʽ¼ÆËãÖ÷ÒªÕë¶Ô unbounded data£¨ÎÞ½çÊý¾ÝÁ÷£©½øÐÐʵʱµÄ¼ÆË㣬½«¼ÆËã½á¹û¿ìËÙµÄÊä³ö»òÕßÐÞÕý¡£

Õⲿ·Ö½«·ÖΪÈý¸öС½ÚÀ´½éÉÜ¡£µÚÒ»£¬½éÉÜ´óÊý¾Ýϵͳ·¢Õ¹Ê·£¬°üÀ¨³õʼµÄÅú´¦Àíµ½ÏÖÔڱȽϳÉÊìµÄÁ÷¼ÆË㣻µÚ¶þ£¬Îª´ó¼Ò¼òµ¥¶Ô±ÈÏÂÅú´¦ÀíºÍÁ÷´¦ÀíµÄÇø±ð£»µÚÈý£¬½éÉÜÁ÷ʽ¼ÆËãÀïÃæµÄ¹Ø¼üÎÊÌ⣬ÕâÊÇÿ¸öÓÅÐãµÄÁ÷ʽ¼ÆËãÒýÇæËù±ØÐëÃæÁÙµÄÎÊÌâ¡£

1¡¢´óÊý¾Ýϵͳ·¢Õ¹Ê·

ÉÏͼÊÇ 2003 Äêµ½ 2018 Äê´óÊý¾ÝϵͳµÄ·¢Õ¹Ê·£¬¿´¿´ÊÇÔõôһ²½²½×ßµ½Á÷ʽ¼ÆËãµÄ¡£

2003 Ä꣬Google µÄ MapReduce ºá¿Õ³öÊÀ£¬Í¨¹ý¾­µäµÄ Map&Reduce ¶¨ÒåºÍϵͳÈÝ´íµÈ±£ÕÏÀ´·½±ã´¦Àí¸÷ÖÖ´óÊý¾Ý¡£ºÜ¿ì¾Íµ½ÁË Hadoop£¬±»ÈÏΪÊÇ¿ªÔ´°æµÄ MapReduce£¬ ´ø¶¯ÁËÕû¸öapache¿ªÔ´ÉçÇøµÄ·±ÈÙ¡£ÔÙÍùºóÊǹȸèµÄ Flume£¬Í¨¹ýËã×ÓÁ¬½ÓµÈ pipeline µÄ·½Ê½½â¾öÁ˶à¸ö MapReduce ×÷ÒµÁ¬½Ó´¦ÀíµÍЧµÄÎÊÌâ¡£

Á÷ʽϵͳµÄ¿ªÊ¼ÒÔ Storm À´½éÉÜ¡£Storm ÔÚ2011Äê³öÏÖ£¬ ¾ß±¸ÑÓʱ¶Ì¡¢ÐÔÄܸߵÈÌØÐÔ£¬ ÔÚµ±Ê±ÆÄÊÜϲ°®¡£µ«ÊÇ Storm ûÓÐÌṩϵͳ¼¶±ðµÄ failover »úÖÆ£¬ÎÞ·¨±£ÕÏÊý¾ÝÒ»ÖÂÐÔ¡£ÄÇʱµÄÁ÷ʽ¼ÆËãÒýÇæÊDz»¾«È·µÄ£¬lamda ¼Ü¹¹×é×°ÁËÁ÷´¦ÀíµÄʵʱÐÔºÍÅú´¦ÀíµÄ׼ȷÐÔ£¬Ôø¾­·çÃÒһʱ£¬ºóÀ´ÒòΪÄÑÒÔά»¤Ò²Öð½¥Ã»Âä¡£

½ÓÏÂÀ´³öÏÖµÄÊÇ Spark Streaming£¬¿ÉÒÔ˵ÊǵÚÒ»¸öÉú²ú¼¶±ðµÄÁ÷ʽ¼ÆËãÒýÇæ¡£Spark Streaming ÔçÆÚµÄʵÏÖ»ùÓÚ³ÉÊìµÄÅú´¦Àí£¬Í¨¹ý mini batch À´ÊµÏÖÁ÷¼ÆË㣬ÔÚ failover ʱÄܹ»±£ÕÏÊý¾ÝµÄÒ»ÖÂÐÔ¡£

Google ÔÚÁ÷ʽ¼ÆËã·½ÃæÓкܶà̽Ë÷£¬°üÀ¨ MillWheel¡¢Cloud Dataflow¡¢Beam£¬Ìá³öÁ˺ܶàÁ÷ʽ¼ÆËãµÄÀíÄ¶ÔÆäËûµÄÁ÷ʽ¼ÆËãÒýÇæÓ°ÏìºÜ´ó¡£

ÔÙÀ´¿´ Kafka¡£Kafka ²¢·ÇÁ÷ʽ¼ÆËãÒýÇæ£¬µ«ÊǶÔÁ÷ʽ¼ÆËãÓ°ÏìÌØ±ð´ó¡£Kafka »ùÓÚlog »úÖÆ¡¢Í¨¹ý partition À´±£´æÊµÊ±Êý¾Ý£¬Í¬Ê±Ò²ÄÜ´æ´¢ºÜ³¤Ê±¼äµÄÀúÊ·Êý¾Ý¡£Á÷ʽ¼ÆËãÒýÇæ¿ÉÒÔÎÞ·ìµØÓëkafka½øÐжԽӣ¬Ò»µ©³öÏÖ Failover£¬¿ÉÒÔÀûÓà Kafka ½øÐÐÊý¾Ý»ØËÝ£¬±£Ö¤Êý¾Ý²»¶ªÊ§¡£ÁíÍ⣬Kafka ¶Ô table ºÍ stream µÄ̽Ë÷ÌØ±ð¶à£¬¶ÔÁ÷ʽ¼ÆËãÓ°Ïì¾Þ´ó¡£

Flink µÄ³öÏÖÒ²±È½Ï¾Ã£¬Ò»Ö±µ½ 2016 Äê×óÓҲŻðÆðÀ´µÄ¡£Flink ½è¼øÁ˺ܶà Google µÄÁ÷ʽ¼ÆËã¸ÅÄʹµÃËüÔÚÊг¡ÉÏÌØ±ð¾ßÓоºÕùÁ¦¡£ºóÃæÎÒ»áÏêϸ½éÉÜ Flink µÄÒ»Ð©ÌØµã¡£

2¡¢Åú´¦ÀíÓëÁ÷¼ÆËãµÄÇø±ð

Åú´¦ÀíºÍÁ÷¼ÆËãÓÐʲôÑùµÄÇø±ð£¬ÕâÊǺܶàͬѧÓÐÒÉÎʵĵط½¡£ÎÒÃÇÖªµÀ MapReduce ÊÇÒ»¸öÅú´¦ÀíÒýÇæ£¬Flink ÊÇÒ»¸öÁ÷´¦ÀíÒýÇæ¡£ÎÒÃÇ´ÓËĸö·½ÃæÀ´½øÐÐһ϶Աȣº

1£©Ê¹Óó¡¾°

MapReduce ÊÇ´óÅúÁ¿Îļþ´¦Àí£¬ÕâЩÎļþ¶¼ÊÇ bounded data£¬Ò²¾ÍÊÇ˵ÄãÖªµÀÕâ¸öÎļþʲôʱºò»á½áÊø¡£Ïà±È¶øÑÔ£¬Flink ´¦ÀíµÄÊÇʵʱµÄ unbounded data£¬Êý¾ÝÔ´Ô´²»¶Ï£¬¿ÉÄÜÓÀÔ¶¶¼²»»á½áÊø£¬Õâ¾Í¸øÊý¾ÝÍ걸ÐÔºÍ failover ´øÀ´Á˺ܴóµÄÌôÕ½¡£

2£©ÈÝ´í

MapReduce µÄÈÝ´íÊֶΰüÀ¨Êý¾ÝÂäÅÌ¡¢Öظ´¶ÁÈ¡¡¢×îÖÕ½á¹û¿É¼ûµÈ¡£ÎļþÂäÅÌ¿ÉÒÔÓÐЧ±£´æÖмä½á¹û£¬Ò»µ© task ¹ÒµôÖØÆô¾Í¿ÉÒÔÖ±½Ó¶ÁÈ¡´ÅÅÌÊý¾Ý£¬Ö»ÓÐ×÷Òµ³É¹¦ÔËÐÐÍêÁË£¬×îÖÕ½á¹û²Å¶ÔÓû§¿É¼û¡£ÕâÖÖÉè¼ÆµÄÕÜÀí¾ÍÊÇÄã¿ÉÒÔͨ¹ýÖØ¸´¶Áȡͬһ·ÝÊý¾ÝÀ´²úÉúͬÑùµÄ½á¹û£¬¿ÉÒԺܺõĴ¦Àí failover¡£

Flink µÄÈÝ´íÖ÷Ҫͨ¹ý¶¨ÆÚ¿ìÕÕºÍÊý¾Ý»ØËÝ¡£Ã¿¸ôÒ»¶Îʱ¼ä£¬Flink¾Í»á²åÈëһЩ barrier£¬barrier ´Ó source Á÷¶¯µ½ sink£¬Í¨¹ý barrier Á÷¶¯À´¿ØÖÆ¿ìÕÕµÄÉú³É¡£¿ìÕÕÖÆ×÷Íê¾Í¿ÉÒÔ±£´æÔÚ¹²ÏíÒýÇæÀï¡£Ò»µ©×÷Òµ³öÏÖÎÊÌ⣬¾Í¿ÉÒÔ´ÓÉϴοìÕÕ½øÐлָ´£¬Í¨¹ýÊý¾Ý»ØËÝÀ´ÖØÐÂÏû·Ñ¡£

3£©ÐÔÄÜ

MapReduce Ö÷ÒªÌØµãÊǸßÍÌÍ¡¢¸ßÑÓʱ¡£¸ßÍÌÍÂ˵Ã÷´¦ÀíµÄÊý¾ÝÁ¿·Ç³£´ó£»¸ßÑÓʱ¾ÍÊÇÇ°ÃæËµµ½µÄÈÝ´íÎÊÌ⣬Ëü±ØÐë°ÑÕû¸ö×÷Òµ´¦ÀíÍê²Å¶ÔÓû§¿É¼û¡£

Flink Ö÷ÒªÌØµãÊǸßÍÌÍ¡¢µÍÑÓʱ¡£ÔÚÁ÷ʽϵͳÀFlink µÄÍÌÍÂÊǺܸߵġ£Í¬Ê±£¬ËüÒ²¿ÉÒÔ×öµ½ÊµÊ±´¦ÀíºÍÊä³ö£¬ÈÃÓû§¿ìËÙ¿´µ½½á¹û¡£

4£©¼ÆËã¹ý³Ì

MapReduce Ö÷Ҫͨ¹ý Map ºÍ reduce À´¼ÆËã¡£Map ¸ºÔð¶ÁÈ¡Êý¾Ý²¢×÷»ù±¾µÄ´¦Àí£¬ reduce ¸ºÔðÊý¾ÝµÄ¾ÛºÏ¡£Óû§¿ÉÒÔ¸ù¾ÝÕâÁ½ÖÖ»ù±¾Ëã×Ó£¬×éºÏ³ö¸÷ÖÖ¸÷ÑùµÄ¼ÆËãÂß¼­¡£

Flink ΪÓû§ÌṩÁË pipeline µÄ API ºÍÅúÁ÷ͳһµÄ SQL¡£Í¨¹ý pipeline µÄ API£¬ Óû§¿ÉÒÔ·½±ãµØ×éºÏ¸÷ÖÖËã×Ó¹¹½¨¸´ÔÓµÄÓ¦Óã»Flink SQL ÊÇÒ»¸ö¸ü¸ß²ãµÄ API ³éÏ󣬼«´óµØ½µµÍÁËÓû§µÄʹÓÃÃż÷¡£

3¡¢Á÷ʽ¼ÆËãµÄ¹Ø¼üÎÊÌâ

Õⲿ·ÖÖ÷Ҫͨ¹ýËĸöÎÊÌâ¸ø´ó¼Ò½â´ðÁ÷ʽ¼ÆËãµÄ¹Ø¼üÎÊÌ⣬ҲÊÇºÜ¶à¼ÆËãÒýÇæÐèÒª¿¼ÂǵÄÎÊÌâ¡£

1£©What

What ÊÇָͨ¹ýʲôÑùµÄËã×ÓÀ´½øÐмÆËã¡£Ö÷Òª°üº¬Èý¸ö·½ÃæµÄÀàÐÍ£¬element-wise ±íʾһ¶ÔÒ»µÄ¼ÆË㣬aggregating ±íʾ¾ÛºÏ²Ù×÷£¬composite ±íʾ¶à¶Ô¶àµÄ¼ÆËã¡£

2£©Where

aggregating »á½øÐÐһЩ¾ÛºÏµÄ¼ÆË㣬 Ö÷ÒªÊÇÔÚ¸÷ÖÖ window Àï½øÐмÆËã¡£´°¿Ú°üº¬»¬¶¯´°¿Ú¡¢¹ö¶¯´°¿Ú¡¢»á»°´°¿Ú¡£´°¿Ú»á°ÑÎÞ½çµÄÊý¾ÝÇзֳÉÓнçµÄÒ»¸ö¸öÊý¾Ý¿é½øÐд¦Àí£¬ºóÃæÎÒÃÇ»áÏêϸ½éÉÜÕâµã¡£

3£©When

When ¾ÍÊÇʲôʱºò´¥·¢¼ÆËã¡£´°¿ÚÀïÃæÓÐÊý¾Ý£¬ÓÉÓÚÊäÈëÊý¾ÝÊÇÎÞÇîÎÞ¾¡µÄ£¬ºÜÄÑÖªµÀÒ»¸ö´°¿ÚµÄÊý¾ÝÊÇ·ñÈ«²¿µ½´ïÁË¡£Á÷ʽ¼ÆËãÖ÷Ҫͨ¹ý watermark À´±£ÕÏÊý¾ÝµÄÍ걸ÐÔ£¬Í¨¹ý trigger À´¾ö¶¨ºÎʱ´¥·¢¡£µ±½ÓÊÕµ½ÊýֵΪ X µÄ Watermark ʱ£¬¿ÉÒÔÈÏΪËùÓÐʱ¼ä´ÁСÓÚµÈÓÚXµÄʼþÈ«²¿µ½´ïÁË¡£Ò»µ© watermark ¿ç¹ý´°¿Ú½áÊøÊ±¼ä£¬¾Í¿ÉÒÔͨ¹ý trigger À´´¥·¢¼ÆËã²¢Êä³ö½á¹û¡£

4£©How

How Ö÷ÒªÖ¸ÎÒÃÇÈçºÎÖØÐ¶¨Òåͬһ´°¿ÚµÄ¶à´Î´¥·¢½á¹û¡£Ç°ÃæÒ²ËµÁË trigger ÊÇÓÃÀ´´¥·¢´°¿ÚµÄ£¬ Ò»¸ö´°¿Ú¿ÉÄܻᱻ´¥·¢¶à´Î£¬±ÈÈç1·ÖÖӵĴ°¿Úÿ 10 Ãë´¥·¢¼ÆËãÒ»´Î¡£´¦Àí·½Ê½Ö÷Òª°üº¬ÈýÖÖ£º

Discarding£¬¶ªÆú֮ǰµÄ×´Ì¬ÖØÐ¼ÆËã¡£ÕâÖÖ·½Ê½Ã¿´ÎµÄ´¥·¢½á¹û¶¼ÊÇ»¥²»¹ØÁªµÄ£¬¶à´Î´¥·¢½á¹ûµÄ×éºÏ·´Ó³ÁËÈ«²¿µÄ´°¿ÚÄÚÈÝ£¬ÏÂÓÎÒ»°ã»áÔٴξۺϣ»

Accumulating£¬Õâ¸ö¾ÍÊÇÒ»¸ö¾ÛºÏµÄ״̬£¬±ÈÈç˵µÚ¶þ´Î´¥·¢µÄʱºòÊÇÔÚµÚÒ»´ÎµÄ½á¹ûÉϽøÐмÆËãµÄ£¬ÏÂÓÎÖ»ÐèÒª±£´æ×îеĽá¹û¼´¿É£»

Accumulating ºÍ retracting£¬Õâ¸öÖ÷ÒªÔÚ Accumulating µÄ»ù´¡ÉϼÓÁËÒ»¸ö retracting£¬retracting µÄÒâ˼¾ÍÊdz·Ïú¡£´°¿ÚÔٴδ¥·¢Ê±£¬»á¸æËßÏÂÓγ·ÏúÉÏÒ»´ÎµÄ¼ÆËã½á¹û£¬²¢¸æÖª×îеĽá¹û¡£Flink SQL µÄ¾ÛºÏ¾ÍʹÓÃÁËÕâÖÖ retractµÄģʽ¡£

¶þ¡¢Flink ¹Ø¼ü¼¼Êõ

1¡¢Flink ¼ò½é

Flink ÊÇÒ»¿î·Ö²¼Ê½¼ÆËãÒýÇæ£¬ ¼È¿ÉÒÔ½øÐÐÁ÷ʽ¼ÆË㣬Ҳ¿ÉÒÔ½øÐÐÅú´¦Àí¡£ÏÂͼÊǹÙÍø¶Ô Flink µÄ½éÉÜ£º

Flink ¿ÉÒÔÔËÐÐÔÚ k8s¡¢yarn¡¢mesos µÈ×ÊÔ´µ÷¶Èƽ̨ÉÏ£¬ÒÀÀµ hdfs µÈÎļþϵͳ£¬ÊäÈë°üº¬Ê¼þºÍ¸÷ÖÖÆäËûÊý¾Ý£¬¾­¹ý Flink ÒýÇæ¼ÆËãºóÔÙÊä³öµ½ÆäËûÖмä¼þ»òÕßÊý¾Ý¿âµÈ¡£

Flink ÓÐÁ½¸öºËÐĸÅÄ

State£ºFlink ¿ÉÒÔ´¦ÀíÓÐ״̬µÄÊý¾Ý£¬Í¨¹ý×ÔÉíµÄ state »úÖÆÀ´±£ÕÏ×÷ÒµfailoverʱÊý¾Ý²»¶ªÊ§£»

Event Time£ºÔÊÐíÓû§°´ÕÕʼþʱ¼äÀ´´¦ÀíÊý¾Ý£¬Í¨¹ý watermark À´Íƶ¯Ê±¼äǰ½ø£¬Õâ¸öºóÃæ»¹»áÏêϸ½éÉÜ¡£Ö÷ÒªÊÇϵͳµÄʱ¼äºÍʼþµÄʱ¼ä¡£

Flink Ö÷Ҫͨ¹ýÉÏÃæÁ½¸öºËÐļ¼ÊõÀ´±£Ö¤ exactly-once£¬ ±ÈÈç˵×÷Òµ Failover µÄʱºò״̬²»¶ªÊ§£¬¾ÍºÃÏñû·¢Éú¹ÊÕÏÒ»Ñù¡£

2¡¢¿ìÕÕ»úÖÆ

Flink µÄ¿ìÕÕ»úÖÆÖ÷ÒªÊÇΪÁ˱£ÕÏ×÷Òµ failover ʱ²»¶ªÊ§×´Ì¬¡£Flink ÌṩÁËÒ»ÖÖÇáÁ¿¼¶µÄ¿ìÕÕ»úÖÆ£¬²»ÐèҪֹͣ×÷Òµ¾Í¿ÉÒÔ°ïÖúÓû§³Ö¾Ã»¯ÄÚ´æÖеÄ״̬Êý¾Ý¡£

ÉÏͼÖÐµÄ markers£¨Óë barrier ÓïÒåÏàͬ£©Í¨¹ýÁ÷¶¯À´´¥·¢¿ìÕÕµÄÖÆ×÷£¬Ã¿Ò»¸ö±àºÅ¶¼´ú±íÁËÒ»´Î¿ìÕÕ£¬±ÈÈç±àºÅΪ n µÄ markers ´Ó×îÉÏÓÎÁ÷¶¯µ½×îÏÂÓξʹú±íÁËÒ»´Î¿ìÕÕµÄÖÆ×÷¹ý³Ì¡£¼òÊöÈçÏ£º

ϵͳ·¢ËͱàºÅΪ n µÄ markers µ½×îÉÏÓεÄËã×Ó£¬markers Ëæ×ÅÊý¾ÝÍùÏÂÓÎÁ÷¶¯£»

µ±ÏÂÓÎËã×ÓÊÕµ½ marker ºó£¬¾Í¿ªÊ¼½«×ÔÉíµÄ״̬±£´æµ½¹²Ïí´æ´¢ÖУ»

µ±ËùÓÐ×îÏÂÓεÄËã×Ó½ÓÊÕµ½ marker ²¢Íê³ÉËã×Ó¿ìÕպ󣬱¾´Î×÷ÒµµÄ¿ìÕÕÖÆ×÷Íê³É¡£

Ò»µ©×÷ҵʧ°Ü£¬ÖØÆôʱ¾Í¿ÉÒÔ´Ó¿ìÕÕ»Ö¸´¡£

ÏÂÃæÎªÒ»¸ö¼òµ¥µÄ demo ˵Ã÷£¨barrier µÈͬÓÚ marker£©¡£

barrier µ½´ï Source£¬½«×´Ì¬ offset=7 ´æ´¢µ½¹²Ïí´æ´¢£»

barrier µ½´ï Task£¬½«×´Ì¬ sum=21 ´æ´¢µ½¹²Ïí´æ´¢£»

barrier µ½´ï Sink£¬commit ±¾´Î¿ìÕÕ£¬±êÖ¾×Å¿ìÕյijɹ¦ÖÆ×÷¡£

ÕâʱºòͻȻ¼ä×÷ÒµÒ²¹Òµô£¬ ÖØÆôʱ Flink »áͨ¹ý¿ìÕÕ»Ö¸´¸÷¸ö״̬¡£Source »á½«×ÔÉíµÄ offset ÖÃΪ 7£¬Task »á½«×ÔÉíµÄ sum ÖÃΪ 21¡£ÏÖÔÚÎÒÃÇ¿ÉÒÔÈÏΪ 1¡¢2¡¢3¡¢4¡¢5¡¢6 Õâ 6 ¸öÊý×ֵļӺͽá¹û²¢Ã»ÓжªÊ§¡£Õâ¸öʱºò£¬offset ´Ó 7 ¿ªÊ¼Ïû·Ñ£¬¸ú×÷ҵʧ°ÜǰÍêÈ«¶Ô½ÓÁËÆðÀ´£¬È·±£ÁË exactly-once¡£

3¡¢Ê¼þʱ¼ä

ʱ¼äÀàÐÍ·ÖΪÁ½ÖÖ£º

Event time£¨Ê¼þʱ¼ä£©£¬Ö¸Ê¼þ·¢ÉúµÄʱ¼ä£¬±ÈÈç²É¼¯Êý¾ÝʱµÄʱ¼ä£»

Processing time£¨ÏµÍ³Ê±¼ä£©£¬Ö¸ÏµÍ³µÄʱ¼ä£¬±ÈÈç´¦ÀíÊý¾ÝʱµÄʱ¼ä¡£

Èç¹ûÄã¶ÔÊý¾ÝµÄ׼ȷÐÔÒªÇó±È½Ï¸ßµÄ»°£¬²ÉÓà Event time Äܱ£ÕÏ exactly-once¡£Processing Time Ò»°ãÓÃÓÚʵʱÏû·Ñ¡¢¾«×¼ÐÔÒªÇóÂԵ͵ij¡¾°£¬Ö÷ÒªÊÇÒòΪʱ¼äÉú³É²»ÊÇ deterministic¡£

ÎÒÃÇ¿ÉÒÔ¿´ÏÂÃæµÄ¹ØÏµÍ¼£¬ X ÖáÊÇ Event time£¬Y ÖáÊÇ Processing time¡£ÀíÏëÇé¿öÏ Event time ºÍ Processing time ÊÇÏàͬµÄ£¬¾ÍÊÇ˵ֻҪÓÐÒ»¸öʼþ·¢Éú£¬¾Í¿ÉÒÔÁ¢¿Ì´¦Àí¡£µ«ÊÇʵ¼Ê³¡¾°ÖУ¬Ê¼þ·¢ÉúºóÍùÍù»á¾­¹ýÒ»¶¨ÑÓʱ²Å»á±»´¦Àí£¬ÕâÑù¾Í»áµ¼ÖÂÎÒÃÇϵͳµÄʱ¼äÍùÍù»áÖͺóÓÚʼþʱ¼ä¡£ÕâÀïËüÃÇÁ½¸öµÄ²î Processing-time lag ±íʾÎÒÃÇ´¦ÀíʼþµÄÑÓʱ¡£

ʼþʱ¼ä³£ÓÃÔÚ´°¿ÚÖУ¬Ê¹Óà watermark À´È·±£Êý¾ÝÍ걸ÐÔ£¬±ÈÈç˵ watermarker Öµ´óÓÚ window ĩβʱ¼äʱ£¬ÎÒÃǾͿÉÒÔÈÏΪ window ´°¿ÚËùÓÐÊý¾Ý¶¼ÒѾ­µ½´ïÁË£¬¾Í¿ÉÒÔ´¥·¢¼ÆËãÁË¡£

±ÈÈçÉÏÃæ [0-10] µÄ´°¿Ú£¬ÏÖÔÚ watermark ×ßµ½ÁË 10£¬ÒѾ­µ½´ïÁË´°¿ÚµÄ½áÊø£¬´¥·¢¼ÆËã SUM=21¡£Èç¹ûÒªÊÇÏë¶Ô³Ùµ½µÄÊý¾ÝÔÙ½øÐд¥·¢£¬¿ÉÒÔÔÙ¶¨ÒåһϺóÃæ late data µÄ´¥·¢£¬±ÈÈç˵ºóÃæÀ´Á˸ö 9£¬ÎÒÃÇµÄ SUM ¾ÍµÈÓÚ 30¡£

4¡¢´°¿Ú»úÖÆ

´°¿Ú»úÖÆ¾ÍÊǰÑÎÞ½çµÄÊý¾Ý·Ö³ÉÊý¾Ý¿éÀ´½øÐмÆË㣬Ö÷ÒªÓÐÈýÖÖ´°¿Ú¡£

¹ö¶¯´°¿Ú£º¹Ì¶¨´óСµÄ´°¿Ú£¬ÏàÁÚ´°¿ÚûÓн»¼¯£»

»¬¶¯´°¿Ú£ºÃ¿¸ö´°¿ÚµÄ´óСÊÇÒ»ÑùµÄ£¬µ«ÊÇÁ½¸ö´°¿ÚÖ®¼ä»áÓÐÖØºÏ£»

»á»°´°¿Ú£º¸ù¾Ý»îԾʱ¼ä¾ÛºÏ¶ø³ÉµÄ´°¿Ú£¬ ±ÈÈç»îԾʱ¼ä³¬¹ý3·ÖÖÓÐÂÆðÒ»¸ö´°¿Ú¡£´°¿ÚÖ®¼äÁôÓÐÒ»¶¨µÄ¼ä¸ô¡£

´°¿Ú»á×Ô¶¯¹ÜÀí״̬ºÍ´¥·¢¼ÆË㣬Flink ÌṩÁ˷ḻµÄ´°¿Úº¯ÊýÀ´½øÐмÆËã¡£Ö÷Òª°üÀ¨ÒÔÏÂÁ½ÖÖ£º

ProcessWindowFunction£¬È«Á¿¼ÆËã»á°ÑËùÓÐÊý¾Ý»º´æµ½×´Ì¬Àһֱµ½´°¿Ú½áÊøÊ±Í³Ò»¼ÆËã¡£Ïà¶ÔÀ´Ëµ£¬×´Ì¬»á±È½Ï´ó£¬¼ÆËãЧÂÊÒ²»áµÍһЩ£»

AggregateFunction£¬ÔöÁ¿¼ÆËã¾ÍÊÇÀ´Ò»ÌõÊý¾Ý¾ÍËãÒ»Ìõ£¬¿ÉÄÜÎÒÃǵÄ״̬¾Í»áÌØ±ðµÄС£¬¼ÆËãЧÂÊÒ²»á±È ProcessWindowFunction ¸ßºÜ¶à£¬µ«ÊÇÈç¹û״̬´æ´¢ÔÚ´ÅÅÌÆµ·±·ÃÎÊ״̬¿ÉÄÜ»áÓ°ÏìÐÔÄÜ¡£

Èý¡¢¿ìÊÖ Flink ʵ¼ù

1¡¢Ó¦ÓøÅÀ¨

¿ìÊÖÓ¦ÓøÅÀ¨Ö÷ÒªÊÇ·ÖΪÊý¾Ý½ÓÈë¡¢Flink ʵʱ¼ÆËã¡¢Êý¾ÝÓ¦Óá¢Êý¾ÝչʾËĸö²¿·Ö¡£¸÷²ã¸÷˾ÆäÖ°¡¢ÏνÓÁ÷³©£¬ÎªÓû§ÌṩһÌ廯µÄÊý¾Ý·þÎñÁ÷³Ì¡£

2¡¢ÊµÊ±Ö¸±ê¼ÆËã

³£¼ûµÄʵʱָ±ê¼ÆËã°üÀ¨ uv¡¢pv ºÍ sum¡£ÕâÆäÖÐ uv µÄ¼ÆËã×îΪ¸´ÔÓÒ²×îΪ¾­µä¡£ÏÂÃæÎÒ½«Öصã½éÉÜ uv¡£

uv Ö¸µÄÊDz»Í¬Óû§µÄ¸öÊý£¬ÎÒÃÇÕâ±ß¼ÆËãµÄ¾ÍÊDz»Í¬ deviceld µÄ¸öÊý£¬Ö÷ÒªµÄÌôÕ½À´×ÔÈý·½Ã棺

Óû§Êý¶à£¬Êý¾ÝÁ¿´ó¡£»î¶¯ÆÚ¼äµÄ QPS ¾­³£ÔÚǧÍò¼¶±ð£¬Êµ¼Ê¼ÆËãÆðÀ´Ìرð¸´ÔÓ£»

ʵʱÐÔÒªÇó¸ß£¬Í¨³£Îª¼¸Ãëµ½·ÖÖÓ½á¹ûµÄÊä³ö£»

Îȶ¨ÐÔÒªÇó¸ß£¬±ÈÈç˵ÎÒÃÇÔÚ×ö´ºÍí»î¶¯Ê±ºòÒªÇó¹ÊÕÏʱ¼äÐèÒªµÍÓÚ2%»ò¸üÉÙ¡£

Õë¶Ô¸÷ÖÖ¸÷ÑùµÄ uv ¼ÆË㣬ÎÒÃÇÌṩÁËÒ»Ì׳ÉÊìµÄ¼ÆËãÁ÷³Ì¡£Ö÷Òª°üº¬ÁËÈý·½Ã棺

×ֵ䷽°¸£º½« string ÀàÐ굀 deviceld ת³É long ÀàÐÍ£¬·½±ãºóÐøµÄ uv ¼ÆË㣻

Çãб´¦Àí£º±ÈÈçijЩ´ó V »áµ¼ÖÂÊý¾ÝÑÏÖØÇãб£¬Õâʱºò¾ÍÐèÒª´òÉ¢´¦Àí£»

ÔöÁ¿¼ÆË㣺±ÈÈç¼ÆËã 1 ÌìµÄ uv£¬Ã¿·ÖÖÓÊä³öÒ»´Î½á¹û¡£

×ֵ䷽°¸ÐèҪȷ±£ÈκÎÁ½¸ö²»Í¬µÄ deviceId ²»ÄÜÓ³Éäµ½ÏàͬµÄ long ÀàÐÍÊý×ÖÉÏ¡£¿ìÊÖÄÚ²¿Ö÷ҪʹÓùýÒÔÏÂÈýÖÖ·½°¸£º

HBase£¬ »ùÓÚ partition ·ÖÇø½¨Á¢ deviceld µ½ id µÄÓ³É䣬 ͨ¹ý»º´æºÍÅúÁ¿·ÃÎÊÀ´¼ÓËÙ£»

Redis£¬ ÕâÖÖ·½°¸ÑϸñÀ´Ëµ²»ÊôÓÚ×ֵ䣬Ö÷Ҫͨ¹ý key-value À´ÅжÏÊý¾ÝÊÇ·ñÊ״γöÏÖ£¬»ùÓÚÊ×´ÎÊý¾ÝÀ´¼ÆËã uv£¬ÕâÑù¾Í»á°Ñ pv ºÍ uv µÄ¼ÆËã½øÐÐͳһ;

×îºó¾ÍÊÇÒ»¸ö Flink ÄÚ²¿×Ô½¨µÄÈ«¾Ö×ÖµäʵÏÖ deviceld µ½ id µÄת»»£¬Ö®ºó¼ÆËãUV¡£

ÕâÈýÖÖ·½°¸ÀïÃæ£¬Ç°Á½ÖÖÊôÓÚÍⲿ´æ´¢µÄ×ֵ䷽°¸£¬ÓŵãÊÇ¿ÉÒÔ×öµ½¶à¸ö×÷Òµ¹²Ïí 1 ·ÝÊý¾Ý£¬ ȱµãÊÇÍⲿ·ÃÎÊÂý¶øÇÒ²»Ì«Îȶ¨¡£×îºóÒ»ÖÖ Flink ×ֵ䷽°¸»ùÓÚ state£¬²»ÒÀÀµÍⲿ´æ´¢£¬ ÐÔÄܸߵ«ÊÇÎÞ·¨¶à×÷Òµ¹²Ïí¡£

½ÓÏÂÀ´ÎÒÃÇÖØµã½éÉÜ»ùÓÚFlink×ÔÉíµÄ×ֵ䷽°¸£¬ÏÂͼÖ÷ÒªÊǽ¨Á¢Ò»¸ö deviceld µ½ id µÄÓ³É䣺

Ö÷Òª·Ö³ÉÈý²½×ߣº

1£©½¨Á¢ Partition ·ÖÇø£¬ Ö¸¶¨Ò»¸ö±È½Ï´óµÄ Partition ·ÖÇø¸öÊý£¬¸Ã¸öÊý±È½Ï´ó²¢ÇÒ²»»á±ä£¬¸ù¾Ý deviceld µÄ¹þÏ£Öµ½«ÆäÓ³Éäµ½Ö¸¶¨ partition¡£

2£©½¨Á¢ id Ó³É䡣ÿ¸ö Partition ¶¼ÓÐ×Ô¼º¸ºÔðµÄ id Çø¼ä£¬È·±£ Partition Ö®¼äµÄlong ÀàÐ굀 id ²»Öظ´£¬ partition ÄÚ²¿Í¨¹ý×ÔÔö id À´È·±£Ã¿¸ö deviceId ¶ÔÓ¦Ò»¸ö id¡£

3£©Ê¹Óà keyed state ±£´æ id Ó³Éä¡£ÕâÑùÎÒÃǵÄ×÷Òµ³öÏÖ²¢·¢µÄ´ó¸Ä±äʱ£¬¿ÉÒÔ·½±ãµÄ rescale£¬²»ÐèÒª×öÆäËûµÄ²Ù×÷¡£

³ýÁË id ת»»£¬ºóÃæ¾ÍÊÇÒ»¸öʵʱָ±ê¼ÆËãµÄ³£¼ûÎÊÌ⣬¾ÍÊÇÊý¾ÝÇãб¡£Òµ½ç³£¼ûµÄ½â¾öÊý¾ÝÇãб´¦Àí·½°¸Ö÷ÒªÊÇÁ½ÖÖ£º

´òÉ¢ÔپۺϣºÏȽ«ÇãбµÄÊý¾Ý´òÉ¢¼ÆË㣬ȻºóÔپۺϼÆËã½á¹û£»

Local-aggregate£ºÏÈÔÚ±¾µØ¼ÆËãÔ¤¾ÛºÏ£¬ÕâÑù»á´ó´ó¼õÉÙÏÂÓεÄÊý¾ÝѹÁ¦¡£

¶þÕߵı¾ÖÊÊÇÒ»ÑùµÄ£¬¶¼ÊÇÏÈÔ¤¾ÛºÏÔÙ»ã×Ü£¬´Ó¶ø±ÜÃâµ¥µãÐÔÄÜÎÊÌâ¡£

ÉÏͼΪ¼ÆËã×îСֵµÄÈȵãÎÊÌ⣬ºìÉ«Êý¾ÝΪÈȵãÊý¾Ý¡£Èç¹ûÖ±½Ó½«ËüÃÇ´òµ½Í¬Ò»¸ö·ÖÇø£¬»á³öÏÖÐÔÄÜÎÊÌ⡣ΪÁ˽â¾öÇãбÎÊÌ⣬ÎÒÃÇͨ¹ýhash²ßÂÔ½«Êý¾Ý·Ö³ÉСµÄ partition À´¼ÆË㣬ÈçÉÏͼµÄÔ¤¼ÆË㣬×îºóÔÙ½«Öмä½á¹û»ã×ܼÆËã¡£

µ±Ò»ÇоÍÐ÷ºó£¬ÎÒÃÇÀ´×öÔöÁ¿µÄ UV ¼ÆË㣬±ÈÈç¼ÆËã 1 Ìì uv£¬Ã¿·ÖÖÓÊä³ö 1 ´Î½á¹û¡£¼ÆË㷽ʽ¼È¿ÉÒÔ²ÉÓà API£¬Ò²¿ÉÒÔ²ÉÓà SQL¡£

Õë¶Ô API£¬ÎÒÃÇÑ¡ÔñÁË global state+bitmap µÄ×éºÏ£¬¼ÈÑϸñ×ñÑ­ÁË Event Time ÓÖ¼õÉÙÁË state ´óС£º

ÏÂÃæÎª¼ÆËãÁ÷³Ì£¨ÐèҪעÒâÊ±ÇøÎÊÌ⣩£º

¶¨Òå¸ú´¥·¢¼ä¸ôÒ»Ñù´óСµÄ window£¨±ÈÈç 1 ·ÖÖÓ£©£»

Global state ÓÃÀ´±£´æ¿ç´°¿ÚµÄ״̬£¬ÎÒÃDzÉÓà bitmap À´´æ´¢×´Ì¬£»

ÿ¸ôÒ»¸ö window ´¥·¢Ò»´Î£¬Êä³öÆðʼÖÁ½ñµÄ UV£»

µ±Ç°×÷ÓÃÓò£¨±ÈÈç 1 Ì죩½áÊø£¬Çå¿Õ×´Ì¬ÖØÐ¿ªÊ¼¡£

Õë¶Ô SQL£¬ÔöÁ¿¼ÆËãÖ§³ÖµÄ»¹²»ÊÇÄÇôÍêÉÆ£¬µ«ÊÇ¿ÉÒÔÀûÓà early-fire µÄ²ÎÊýÀ´Ìáǰ´¥·¢´°¿Ú¡£

ÅäÖÃÈçÏ£º

table.exec.emit.early-fire.enabled£º
truetable.exec.emit.early-fire.delay£º60 s

early-fire.delay ¾ÍÊÇÿ·ÖÖÓÊä³öÒ»´Î½á¹ûµÄÒâ˼¡£

SQL ÈçÏ£º

SELECT TUMBLE_ROWTIME(eventTime, interval ¡®1¡¯ day) AS rowtime, dimension, count(distinct id) as uv
FROM person
GROUP BY TUMBLE(eventTime, interval '1' day), dimension

Èç¹ûÓöµ½Çãб£¬¿ÉÒԲο¼ÉÏÒ»²½À´´¦Àí¡£

3¡¢¿ìËÙ failover

×îºó¿´ÏÂÎÒÃDz¿ÃÅ×î½ü·¢Á¦µÄÒ»¸ö·½Ïò£¬ÈçºÎ¿ìËÙ failover¡£

Flink ×÷Òµ¶¼ÊÇ long-running µÄÔÚÏß×÷Òµ£¬ºÜ¶à¶Ô¿ÉÓÃÐÔµÄÒªÇóÌØ±ð¸ß£¬ÓÈÆäÊǸú¹«Ë¾ºËÐÄÒµÎñÏà¹ØµÄ×÷Òµ£¬SLA ÒªÇó 4 ¸ö 9 ÉõÖÁ¸ü¸ß¡£

µ±×÷ÒµÓöµ½¹ÊÕÏʱ£¬ÈçºÎ¿ìËÙ»Ö¸´¶ÔÎÒÃÇÀ´ËµÊÇÒ»¸ö¾Þ´óµÄÌôÕ½¡£

ÏÂÃæ·ÖÈý¸ö·½ÃæÀ´Õ¹¿ª£º

Flink µ±Ç°ÒÑÓеĿìËÙ»Ö¸´·½°¸£»

»ùÓÚ container å´µôµÄ¿ìËÙ»Ö¸´£»

»ùÓÚ»úÆ÷å´µôµÄ¿ìËÙ»Ö¸´¡£

1£©Flink µ±Ç°ÒÑÓеĿìËÙ»Ö¸´·½°¸

Flink µ±Ç°ÒÑÓеĿìËÙ»Ö¸´·½°¸Ö÷Òª°üÀ¨ÒÔÏÂÁ½ÖÖ£º

region failover¡£Èç¹ûÁ÷ʽ×÷ÒµµÄ DAG °üº¬¶à¸ö×Óͼ»òÕß pipeline£¬ÄÇô task ʧ°Üʱֻ»áÓ°ÏìÆäËùÊôµÄ×Óͼ»òÕß pipeline £¬¶ø²»ÓÃÕû¸ö DAG ¶¼ÖØÐÂÆô¶¯£»

local recovery¡£ÔÚ Flink ½«¿ìÕÕͬ²½µ½¹²Ïí´æ´¢µÄͬʱ£¬ÔÚ±¾µØ´ÅÅÌÒ²±£´æÒ»·Ý¿ìÕÕ¡£×÷ҵʧ°Ü»Ö¸´Ê±£¬¿ÉÒÔµ÷¶Èµ½Éϴβ¿ÊðµÄλÖ㬲¢´Ó local disk ½øÐпìÕÕ»Ö¸´¡£

2£©»ùÓÚ container å´µôµÄ¿ìËÙ»Ö¸´

ʵ¼Ê»·¾³ÖУ¬ container å´µôÔÙÉêÇëÓÐʱ»á³¤´ï¼¸Ê®Ã룬±ÈÈçÒòΪ hdfs Âý¡¢yarn ÂýµÈÔ­Òò£¬ÑÏÖØÓ°Ïì»Ö¸´ËÙ¶È¡£Îª´Ë£¬ÎÒÃÇ×öÁËÈçÏÂÓÅ»¯£º

ÈßÓà×ÊÔ´¡£Î¬³Ö¹Ì¶¨¸öÊýµÄÈßÓà container£¬Ò»µ© container å´µô£¬ÈßÓà container Á¢¿Ìºò²¹ÉÏÀ´£¬Ê¡È¥ÁË·±ÔÓµÄ×ÊÔ´ÉêÇëÁ÷³Ì£»

ÌáǰÉêÇë¡£Ò»µ©·¢ÏÖ×÷ÒµÒòΪ container å´µô¶øÊ§°Ü£¬Á¢¿ÌÉêÇëÐ嵀 container ¡£

ÒÔÉÏÓÅ»¯¸²¸ÇÁ˺ܴóÒ»²¿·Ö³¡¾°£¬»Ö¸´Ê±¼ä´Ó 30s-60s ½µµ½ 20s ÒÔÄÚ¡£

3£©»ùÓÚ»úÆ÷å´µôµÄ¿ìËÙ»Ö¸´

»úÆ÷å´µôʱ£¬flink on yarn µÄ»Ö¸´Ê±¼ä³¬¹ý 3 ·ÖÖÓ£¬Õâ¶ÔÖØÒª×÷ÒµÏÔÈ»ÊÇÎÞ·¨ÈÝÈ̵ģ¡ÎªÁË×öµ½¿ìËÙ»Ö¸´£¬ÎÒÃÇÐèÒª×öµ½¿ìËÙ¸ÐÖªºÍ»Ö¸´£º

ÈßÓà×ÊÔ´²¢´òÉ¢·ÖÅ䣬ȷ±£Á½¸öÈßÓà×ÊÔ´²»ÔÚÒ»¸ö container£¬redundantContainerNum=max(containerNumOfHost) + 1£»

×÷ҵ崻ú£¬Hawk ¼à²âϵͳ 5 ÃëÄÚ·¢ÏÖ£»

ÈßÓà×ÊÔ´¿ìËÙºò²¹£¬ÃâÈ¥ÉêÇë×ÊÔ´µÄÁ÷³Ì¡£

ͨ¹ýÕâÖÖ·½°¸£¬ÎÒÃÇ¿ÉÒÔÈÝÈÌÈÎÒâһ̨»úÆ÷µÄå´»ú£¬²¢½«å´»ú»Ö¸´Ê±¼äÓÉÔ­Ï鵀 3 ·ÖÖÓ½µµÍµ½ 30 ÃëÒÔÄÚ¡£

ËÄ¡¢×ܽá

±¾ÎÄ´Ó´óÊý¾ÝϵͳµÄ·¢Õ¹ÈëÊÖ£¬½ø¶øÑÓÉì³öÁ÷ʽϵͳµÄ¹Ø¼ü¸ÅÄ֮ºó½éÉÜÁË FlinkµÄ¹Ø¼üÌØÐÔ£¬×îºó½²½âÁË¿ìÊÖÄÚ²¿µÄʵʱָ±ê¼ÆËãºÍ¿ìËÙ failover£¬Ï£Íû¶Ô´ó¼ÒÓÐËù°ïÖú¡£

Îå¡¢Q&A

Q1£º´òËã×öʵʱ¼ÆË㣬¿ÉÒÔÌø¹ý Storm¡¢Spark Ö±½ÓÉÏÊÖ Flink Âð£¿

A£º¿ÉÒÔÖ±½ÓʹÓà Flink¡£Storm ÔÚ failover ʱ»á¶ªÊ§Êý¾Ý£¬ÎÞ·¨×öµ½ exactly-once£»spark streaming ÊÇ Flink µÄ¾ºÕùÕߣ¬ÊÇÔÚÅú´¦ÀíµÄ»ù´¡ÉÏʵÏÖÁ÷¼ÆË㣬Ïà±È¶øÑÔ£¬Flink µÄµ×²ãÊÇÁ÷´¦Àí£¬¸ü¼ÓÊʺÏÁ÷¼ÆËã¡£

Q2£ºÒ»°ãÔõô´¦Àí taskmanager heartbeat timeout£¿

A£ºÄ¬ÈÏ 10 Ãë»ã±¨Ò»´ÎÐÄÌø£¬ÐÄÌø³¬Ê±Îª 50 Ã룬Õâ¸öʱºò×÷Òµ»áʧ°Ü£¬Èç¹ûÅäÖÃÁ˸߿ÉÓÃÄÇô»áÖØÆô¡£

Q3£ºÈçºÎ±£Ö¤ 2 Ìì´óʱ¼ä¿ç¶ÈÑÓ³ÙÏûÏ¢µÄ´°¿Ú¼ÆË㣿

A£ºÕâÀïÖ÷ÒªµÄÌôÕ½ÔÚÓÚʱ¼ä³¤¡¢×´Ì¬´ó£¬½¨Òé stateBakend ʹÓà Rocksdb£¨¿ÉÒÔÀûÓôÅÅÌ´æ´¢´ó״̬£©£¬´°¿Ú¼ÆË㽨ÒéʹÓÃÔöÁ¿¼ÆËãÀ´¼õÉÙ״̬µÄ´óС¡£

Q4£ºFlink on Yarn£¬Yarn ÖØÆô»á×Ô¶¯À­Æð Flink ÈÎÎñÂð£¬Ëµ²»ÄÜÀ­ÆðÔõô´¦Àí£¬ÊÖ¶¯Æô¶¯Âð£¿

A£ºÈç¹ûÅäÖÃÁ˸߿ÉÓã¨ÒÀÀµ zookeeper£©£¬×÷ҵʧ°ÜÁ˾ͿÉÒÔ×Ô¶¯À­Æð¡£

Q5£ºKafka Ŀǰ¶àÓÃ×÷Êý¾ÝÖÐתƽ̨£¬Flink Ï൱ÓÚÌæ´úÁË Kafka Stream Âð£¿

A£ºKafkaµÄºËÐŦÄÜÊÇÏûÏ¢Öмä¼þ£¬kafka stream ¿ÉÒÔ¸ú kafka ºÜºÃµÄ¼¯³É£¬µ«²¢²»ÊÇÒ»¸öרҵµÄ¼ÆËãÒýÇæ¡£Ïà±È¶øÑÔ£¬flink ÊÇÒ»¸ö·Ö²¼Ê½µÄÁ÷ʽ¼ÆËãÒýÇæ£¬¹¦ÄÜÉϸü¼ÓÇ¿´ó¡£

Q6£ºÄãÃÇÔõô¿´´ý Apache Beam£¿

A£ºApache Beam ÔÚÉÏ²ã½øÐÐÁ˳éÏ󣬿ÉÒÔÀà±È SQL£¬Ö»¶¨Ò广·¶£¬µ×²ã¿ÉÒÔ½ÓÈë¸÷ÖÖ¼ÆËãÒýÇæ¡£

 
   
1550 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù