±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚflink-china£¬±¾ÎÄÖ÷Òª½éÉÜÔÊµÊ±ÌØÕ÷×÷ÒµµÄ¿ª·¢Í´µã¡¢ÌØÕ÷ƽ̨ϵͳ¼Ü¹¹ÒÔ¼°Ñ¡ÔñFlinkµÄÔÒòµÈ¡£ |
|
±¾ÎÄÖ÷ÒªÄÚÈÝÈçÏ£º
ÔÚ¹«Ë¾ÊµÊ±ÌØÕ÷¿ª·¢µÄÏÖ×´»ù´¡ÉÏ£¬ËµÃ÷ÊµÊ±ÌØÕ÷ƽ̨µÄ¿ª·¢±³¾°¡¢Ä¿±êÒÔ¼°ÏÖ×´
Ñ¡ÔñFlink×÷Ϊƽ̨¼ÆËãÒýÇæµÄÔÒò
FlinkµÄʵ¼ù£ºÓдú±íÐÔµÄʹÓÃʾÀý¡¢Îª¼æÈÝAerospike£¨Æ½Ì¨µÄ´æ´¢½éÖÊ£©µÄ¿ª·¢ÒÔ¼°Åöµ½µÄ¿Ó
µ±Ç°Ð§¹û&δÀ´¹æ»®
Ò»¡¢ÔÚ¹«Ë¾ÊµÊ±ÌØÕ÷¿ª·¢µÄÏÖ×´»ù´¡ÉÏ£¬ËµÃ÷ÊµÊ±ÌØÕ÷ƽ̨µÄ¿ª·¢±³¾°¡¢Ä¿±êÒÔ¼°ÏÖ×´
1¡¢ÔÊµÊ±ÌØÕ÷×÷ÒµµÄ¿ª·¢ÔËά
1.1¡¢Ñ¡Ôñʵʱ¼ÆËãÆ½Ì¨£ºÒÀ¾ÝÏîÄ¿µÄÐÔÄÜÖ¸±êÒªÇó£¨latency£¬throughputµÈ£©£¬ÔÚÒÑÓеÄʵʱ¼ÆËãÆ½Ì¨:Storm
Spark flink½øÐÐÑ¡Ôñ
1.2Ö÷ÒªµÄ¿ª·¢ÔËά¹ý³Ì£º
80%ÒÔÉϵÄ×÷ÒµÐèÒªÓõ½ÏûÏ¢¶ÓÁÐÊý¾ÝÔ´£¬µ«ÊÇÏûÏ¢¶ÓÁÐΪ·Ç½á¹¹»¯Êý¾ÝÇÒûÓÐͳһµÄÊý¾Ý×ֵ䡣ËùÒÔÐèҪͨ¹ýÏû·Ñ¶ÔÓ¦µÄtopic£¬½âÎöÏûÏ¢²¢È·¶¨ËùÐèµÄÄÚÈÝ
»ùÓÚÐèÇóÖеij¡¾°£¬Éè¼Æ¿ª·¢¼ÆËãÂß¼
ÔÚʵʱÊý¾Ý²»ÄÜÍêÈ«Âú×ãÊý¾ÝÐèÇóµÄÇé¿ö£¬ÁíÍ⿪·¢µ¥¶ÀµÄÀëÏß×÷ÒµÒÔ¼°ÈÚºÏÂß¼£»
ÀýÈ磺ÔÚÐèÒª30ÌìÊý¾ÝµÄ³¡¾°Ï£¬µ«ÏûÏ¢¶ÓÁÐÖÐÖ»ÓÐÆßÌìÄÚµÄÊý¾Ýʱ£¨kafkaÖÐÏûÏ¢µÄĬÈϱ£Áôʱ¼ä£©£¬Ê£ÏÂ23Ìì¾ÍÐèÒªÓÃÀëÏßÊý¾ÝÀ´²¹³ä¡£
Éè¼Æ¿ª·¢Êý¾ÝµÄУÑéºÍ¾À´íÂß¼ ÏûÏ¢µÄ´«ÊäÐèÒªÒÀÀµÍøÂ磬ÏûÏ¢¶ªÊ§ºÍ³¬Ê±ÄÑÒÔÍêÈ«±ÜÃ⣬ËùÒÔÐèÒªÓÐÒ»¸öУÑéºÍ¾À´íµÄÂß¼¡£
²âÊÔÉÏÏß
¼à¿ØºÍÔ¤¾¯
2¡¢ÔÊµÊ±ÌØÕ÷×÷ÒµµÄ¿ª·¢Í´µã
ÏûÏ¢¶ÓÁÐÊý¾ÝÔ´½á¹¹Ã»ÓÐͳһµÄÊý¾Ý×Öµä
ÌØÕ÷¼ÆËãÂß¼¸ß¶È¶¨ÖÆ»¯£¬¿ª·¢²âÊÔÖÜÆÚ³¤
ʵʱÊý¾Ý²»ÄÜÂú×ãÐèÇóʱ£¬ÐèÒª¶¨ÖÆÀëÏß×÷ÒµºÍÈÚºÏÂß¼
УÑéºÍ¾À´í·½°¸Ã»ÓÐÐγÉ×î¼Ñʵ¼ù£¬Êµ¼ÊЧ¹û±È½ÏÒÀÀµ¸öÈËÄÜÁ¦
¼à¿ØºÍÔ¤¾¯·½°¸ÐèÒª»ùÓÚÒµÎñÂß¼¶¨ÖÆ
3¡¢»ùÓÚÕûÀíµÄÍ´µã£¬È·¶¨ÏÂÀ´µÄƽ̨Ŀ±ê
ʵʱÊý¾Ý×ֵ䣺ÌṩͳһµÄÊý¾ÝÔ´×¢²á¡¢¹ÜÀí¹¦ÄÜ£¬Ö§³Öµ¥Ò»½á¹¹ÏûÏ¢µÄtopicºÍ°üº¬¶àÖÖ²»Í¬½á¹¹ÏûÏ¢µÄtopic
Âß¼³éÏ󣺳éÏóΪSQL£¬¼õÉÙ¹¤×÷Á¿&½µµÍʹÓÃÃż÷
ÌØÕ÷ÈںϣºÌṩÈÚºÏÌØÕ÷µÄ¹¦ÄÜ£¬½â¾öÊµÊ±ÌØÕ÷²»ÄÜÍêÈ«Âú×ãÊý¾ÝÐèÇóµÄÇé¿ö
Êý¾ÝУÑéºÍ¾À´í£ºÌṩÀûÓÃÀëÏßÊý¾ÝУÑéºÍ¾À´íÊµÊ±ÌØÕ÷µÄ¹¦ÄÜ
ʵʱ¼ÆËãÑÓ³Ù£ºms¼¶
ʵʱ¼ÆËãÈÝ´í£º¶Ëµ½¶Ë exactly-once
ͳһµÄ¼à¿ØÔ¤¾¯ºÍHA·½°¸
4¡¢ÌØÕ÷ƽ̨ϵͳ¼Ü¹¹

ÏÖÔڵļܹ¹ÊDZê×¼lamda¼Ü¹¹£¬ÀëÏß²¿·ÖÓÉspark sql + dataX×é³É¡£ÏÖÔÚʹÓõÄÊÇKV´æ´¢ÏµÍ³Aerospike£¬¸úredisµÄÖ÷񻂿±ðÊÇʹÓÃSSD×÷ΪÖ÷´æ£¬ÎÒÃÇѹ²âÏÂÀ´´ó²¿·Ö³¡¾°¶ÁдÐÔÄܸúredisÔÚͬһ¸öÊý¾ÝÁ¿¼¶¡£
ʵʱ²¿·Ö£ºÊ¹ÓÃflink×÷Ϊ¼ÆËãÒýÇæ£¬½éÉÜÒ»ÏÂÓû§µÄʹÓ÷½Ê½£º
×¢²áÊý¾ÝÔ´£ºÄ¿Ç°Ö§³ÖµÄʵʱÊý¾ÝÔ´Ö÷ÒªÊÇKafkaºÍAerospike£¬ÆäÖÐAerospikeÖеÄÊý¾ÝÈç¹ûÊÇÔÚÆ½Ì¨ÉÏÅäÖõÄÀëÏß»òÕßÊµÊ±ÌØÕ÷£¬»á½øÐÐ×Ô¶¯×¢²á¡£KafkaÊý¾ÝÔ´ÐèÒªÉÏ´«¶ÔÓ¦µÄschemaSampleÎļþ
¼ÆËãÂß¼£ºÍ¨¹ýSQL±í´ï
¶¨ÒåÊä³ö£º¶¨ÒåÊä³öµÄAerospike±íºÍ¿ÉÄÜÐèÒªµÄKafka Topic,ÓÃÓÚÍÆËÍUpdate»òÕßInsertµÄÊý¾ÝµÄkey
Óû§Íê³ÉÉÏÃæµÄ²Ù×÷ºó£¬Æ½Ì¨½«ËùÓÐÐÅϢдÈëµ½jsonÅäÖÃÎļþ¡£ÏÂÒ»²½Æ½Ì¨½«ÅäÖÃÎļþºÍ֮ǰ׼±¸ºÃµÄflinkTemplate.jar(°üº¬ËùÓÐÆ½Ì¨ËùÐèµÄflink¹¦ÄÜ)Ìá½»¸øyarn£¬Æô¶¯flink
job¡£
5¡¢Æ½Ì¨¹¦ÄÜչʾ
1£©Æ½Ì¨¹¦ÄÜչʾ-Êý¾ÝÔ´×¢²á

2£©ÊµÊ±ÌØÕ÷±à¼-»ù±¾ÐÅÏ¢

3£©ÊµÊ±ÌØÕ÷±à¼-Êý¾ÝÔ´Ñ¡Ôñ

4£©ÊµÊ±ÌØÕ÷±à¼-SQL¼ÆËã

5£©ÊµÊ±ÌØÕ÷±à¼-Ñ¡ÔñÊä³ö

¶þ¡¢Ñ¡ÔñFlinkµÄÔÒò
ÎÒÃÇÏÂÃæÒ»¸öÎÒÃÇ˵һÏÂÎÒÃÇÑ¡ÔñflinkÀ´×öÕâ¸öÌØÕ÷ƽ̨µÄÔÒò¡£

·ÖΪÈý¸öά¶È£º×î¸ßÑÓ³Ù¡¢ÈÝ´í¡¢sql¹¦ÄܳÉÊì¶È
ÑÓ³Ù£ºstormºÍflinkÊÇ´¿Á÷ʽ£¬×îµÍ¿ÉÒÔ´ïµ½ºÁÃë¼¶µÄÑÓ³Ù¡£sparkµÄ´¿Á÷ʽ»úÖÆÊÇcontinuousģʽ£¬Ò²¿ÉÒÔ´ï×îµÍºÁÃë¼¶µÄÑÓ³Ù
ÈÝ´í£ºstormʹÓÃÒì»òackµÄģʽ£¬Ö§³ÖatLeastOnce¡£ÏûÏ¢ÖØ¸´½â¾ö²»¡£sparkͨ¹ýcheckpointºÍWALÀ´ÌṩexactlyOnce¡£flinkͨ¹ýcheckpointºÍSavePointÀ´×öµ½exactlyOnce¡£
sql³ÉÊì¶È£ºstormÏÖÔڵİ汾ÖÐSQL»¹ÔÚÒ»¸öʵÑé½×¶Î,²»Ö§³Ö¾ÛºÏºÍjoin¡£sparkÏÖÔÚ¿ÉÒÔÌṩ¾ø´ó²¿·Ö¹¦ÄÜ£¬²»Ö§³Ödistinct¡¢limitºÍ¾ÛºÏ½á¹ûµÄorder
by¡£flinkÏÖÔÚÉçÇø°æÖÐÌṩµÄsql£¬²»Ö§³Ödistinct aggregate
Èý¡¢Flinkʵ¼ù
1¡¢ÊµÀý

2¡¢¼æÈÝ¿ª·¢£ºflinkÏÖÔÚûÓжÔAerospikeÌṩ¶Áд֧³Ö£¬ËùÒÔÐèÒª¶þ´Î¿ª·¢ 
3¡¢Åöµ½µÄ¿Ó

ËÄ¡¢Æ½Ì¨µ±Ç°Ð§¹û&δÀ´¹æ»®
µ±Ç°Ð§¹û£º½«ÊµÊ±ÌØÕ÷ÉÏÏßÖÜÆÚ´ÓÔÆ½¾ù3Ìì-5Ìì½µÖÁСʱ¼¶¡£Î´À´¹æ»®£º
ÍêÉÆÌØÕ÷ƽ̨µÄ¹¦ÄÜ£ºÈÚºÏÌØÕ÷µÈ
¼ò»¯²½Ö裬Ìá¸ßÓû§ÌåÑé
¸ù¾ÝÐèÇ󣬽øÒ»²½ÍêÉÆSQLµÄ¹¦ÄÜÀýÈçÖ§³ÖwinµÄ¿ªÊ¼Ê±¼äoffset£¬¿ÉÒÔͨ¹ýcountTriggerµÄwinµÈ
ÏÂÒ»²½µÄ¹æ»®ÊÇͨ¹ýsql»òÕßDSLÀ´ÃèÊöÄ£ÐͲ¿ÊðºÍÄ£ÐÍѵÁ·

|