±à¼ÍƼö: |
±¾ÎÄÊÇ´Ó¼¼Êõ½Ç¶ÈÈëÊÖ£¬½éÉÜRTDPµÄ¼¼ÊõÑ¡ÐͺÍÏà¹Ø×é¼þ£¬Ì½ÌÖÊÊÓò»Í¬Ó¦Óó¡¾°µÄÏà¹ØÄ£Ê½¡£RTDPµÄÃô½Ý֮·¾Í´ËÕ¹¿ª£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢¼¼ÊõÑ¡ÐͽéÉÜ
ÔÚÉè¼ÆÆªÖУ¬ÎÒÃǸø³öÁËRTDPµÄÒ»¸öÕûÌå¼Ü¹¹Éè¼Æ£¨Í¼1£©¡£ÔÚ¼¼ÊõƪÀÎÒÃÇÔò»áÍÆ¼öÕûÌå¼¼Êõ×é¼þÑ¡ÐÍ£»¶Ôÿ¸ö¼¼Êõ×é¼þ×ö³ö¼òµ¥½éÉÜ£¬ÓÈÆä¶ÔÎÒÃdzéÏó²¢ÊµÏÖµÄËĸö¼¼Êõƽ̨£¨Í³Ò»Êý¾Ý²É¼¯Æ½Ì¨¡¢Í³Ò»Á÷ʽ´¦ÀíÆ½Ì¨¡¢Í³Ò»¼ÆËã·þÎñƽ̨¡¢Í³Ò»Êý¾Ý¿ÉÊÓ»¯Æ½Ì¨£©×ÅÖØ½éÉÜÉè¼ÆË¼Â·£»¶ÔPipeline¶Ëµ½¶ËÇÐÃæ»°Ìâ½øÐÐ̽ÌÖ£¬°üÀ¨¹¦ÄÜÕûºÏ¡¢Êý¾Ý¹ÜÀí¡¢Êý¾Ý°²È«µÈ¡£

ͼ1 RTDP¼Ü¹¹
1.1 ÕûÌå¼¼ÊõÑ¡ÐÍ

ͼ2 ÕûÌå¼¼ÊõÑ¡ÐÍ
Ê×ÏÈ£¬ÎÒÃǼòÒª½â¶ÁÒ»ÏÂͼ2£º
Êý¾ÝÔ´¡¢¿Í»§¶Ë£¬ÁоÙÁË´ó¶àÊýÊý¾ÝÓ¦ÓÃÏîÄ¿µÄ³£ÓÃÊý¾ÝÔ´ÀàÐÍ¡£
Êý¾Ý×ÜÏ߯½Ì¨DBus£¬×÷ΪͳһÊý¾Ý²É¼¯Æ½Ì¨£¬¸ºÔð¶Ô½Ó¸÷ÖÖÊý¾ÝÔ´¡£DBus½«Êý¾ÝÒÔÔöÁ¿»òÈ«Á¿·½Ê½³éÈ¡³öÀ´£¬²¢½øÐÐһЩ³£¹æÊý¾Ý´¦Àí£¬×îºó½«´¦ÀíºóµÄÏûÏ¢·¢²¼ÔÚKafkaÉÏ¡£
·Ö²¼Ê½ÏûϢϵͳKafka£¬ÒÔ·Ö²¼Ê½¡¢¸ß¿ÉÓᢸßÍÌÍ¡¢¿É·¢²¼-¶©ÔĵÈÄÜÁ¦£¬Á¬½ÓÏûÏ¢µÄÉú²úÕߺÍÏû·ÑÕß¡£
Á÷ʽ´¦ÀíÆ½Ì¨Wormhole£¬×÷ΪͳһÁ÷ʽ´¦ÀíÆ½Ì¨£¬¸ºÔðÁ÷ÉÏ´¦ÀíºÍ¶Ô½Ó¸÷ÖÖÊý¾ÝÄ¿±ê´æ´¢¡£Wormhole´ÓKafkaÏû·ÑÏûÏ¢£¬Ö§³ÖÁ÷ÉÏÅäÖÃSQL·½Ê½ÊµÏÖÁ÷ÉÏÊý¾Ý´¦ÀíÂß¼£¬²¢Ö§³ÖÅäÖû¯·½Ê½½«Êý¾ÝÒÔ×îÖÕÒ»ÖÂÐÔ£¨Ãݵȣ©Ð§¹ûÂäÈ벻ͬÊý¾ÝÄ¿±ê´æ´¢£¨Sink£©ÖС£
ÔÚÊý¾Ý¼ÆËã´æ´¢²ã£¬RTDP¼Ü¹¹Ñ¡Ôñ¿ª·Å¼¼Êõ×é¼þÑ¡ÐÍ£¬Óû§¿ÉÒÔ¸ù¾Ýʵ¼ÊÊý¾ÝÌØÐÔ¡¢¼ÆËãģʽ¡¢·ÃÎÊģʽ¡¢Êý¾ÝÁ¿µÈÐÅϢѡÔñºÏÊʵĴ洢£¬½â¾ö¾ßÌåÊý¾ÝÏîÄ¿ÎÊÌâ¡£RTDP»¹Ö§³ÖͬʱѡÔñ¶à¸ö²»Í¬Êý¾Ý´æ´¢£¬´Ó¶ø¸üÁé»îµÄÖ§³Ö²»Í¬ÏîÄ¿ÐèÇó¡£
¼ÆËã·þÎñƽ̨Moonbox£¬×÷Ϊͳһ¼ÆËã·þÎñƽ̨£¬¶ÔÒì¹¹Êý¾Ý´æ´¢¶Ë¸ºÔðÕûºÏ¡¢¼ÆËãÏÂÍÆÓÅ»¯¡¢Òì¹¹Êý¾Ý´æ´¢»ìËãµÈ£¨Êý¾ÝÐéÄ⻯¼¼Êõ£©£¬¶ÔÊý¾ÝչʾºÍ½»»¥¶Ë¸ºÔðÊÕ¿ÚͳһԪÊý¾Ý²éѯ¡¢Í³Ò»Êý¾Ý¼ÆËãºÍÏ·¢¡¢Í³Ò»Êý¾Ý²éѯÓïÑÔ£¨SQL£©¡¢Í³Ò»Êý¾Ý·þÎñ½Ó¿ÚµÈ¡£
¿ÉÊÓÓ¦ÓÃÆ½Ì¨Davinci£¬×÷ΪͳһÊý¾Ý¿ÉÊÓ»¯Æ½Ì¨£¬ÒÔÅäÖû¯·½Ê½Ö§³Ö¸÷ÖÖÊý¾Ý¿ÉÊÓ»¯ºÍ½»»¥ÐèÇ󣬲¢¿ÉÒÔÕûºÏÆäËûÊý¾ÝÓ¦ÓÃÒÔÌṩÊý¾Ý¿ÉÊÓ»¯²¿·ÖÐèÇó½â¾ö·½°¸£¬ÁíÍ⻹֧³Ö²»Í¬Êý¾Ý´ÓÒµÈËÔ±ÔÚÆ½Ì¨ÉÏÐ×÷Íê³É¸÷ÏîÈÕ³£Êý¾ÝÓ¦Óá£ÆäËûÊý¾ÝÖÕ¶ËÏû·ÑϵͳÈçÊý¾Ý¿ª·¢Æ½Ì¨Zeppelin¡¢Êý¾ÝË㷨ƽ̨JupyterµÈÔÚ±¾ÎIJ»×ö½éÉÜ¡£
ÇÐÃæ»°ÌâÈçÊý¾Ý¹ÜÀí¡¢Êý¾Ý°²È«¡¢¿ª·¢ÔËά¡¢Çý¶¯ÒýÇæ£¬¿ÉÒÔͨ¹ý¶Ô½ÓDBus¡¢Wormhole¡¢Moonbox¡¢DavinciµÄ·þÎñ½Ó¿Ú½øÐÐÕûºÏºÍ¶þ´Î¿ª·¢£¬ÒÔÖ§³Ö¶Ëµ½¶Ë¹Ü¿ØºÍÖÎÀíÐèÇó¡£
ÏÂÃæÎÒÃÇ»á½øÒ»²½Ï¸»¯ÉÏÍ¼Éæ¼°µ½µÄ¼¼Êõ×é¼þºÍÇÐÃæ»°Ì⣬½éÉܼ¼Êõ×é¼þµÄ¹¦ÄÜÌØÐÔ£¬×ÅÖØ½²½âÎÒÃÇ×ÔÑм¼Êõ×é¼þµÄÉè¼ÆË¼Ï룬²¢¶ÔÇÐÃæ»°ÌâÕ¹¿ªÌÖÂÛ¡£
1.2 ¼¼Êõ×é¼þ½éÉÜ
1.2.1 Êý¾Ý×ÜÏ߯½Ì¨DBus

ͼ3 RTDP¼Ü¹¹Ö®DBus
1.2.1.1 DBusÉè¼ÆË¼Ïë
1£©´ÓÍⲿ½Ç¶È¿´´ýÉè¼ÆË¼Ïë
¸ºÔð¶Ô½Ó²»Í¬µÄÊý¾ÝÔ´£¬ÊµÊ±³éÈ¡³öÔöÁ¿Êý¾Ý£¬¶ÔÓÚÊý¾Ý¿â»á²ÉÓòÙ×÷ÈÕÖ¾³éÈ¡·½Ê½£¬¶ÔÓÚÈÕÖ¾ÀàÐÍÖ§³ÖÓë¶àÖÖAgent¶Ô½Ó¡£
½«ËùÓÐÏûÏ¢ÒÔͳһµÄUMSÏûÏ¢¸ñʽ·¢²¼ÔÚKafkaÉÏ£¬UMSÊÇÒ»ÖÖ±ê×¼»¯µÄ×Ô´øÔªÊý¾ÝÐÅÏ¢µÄJSON¸ñʽ£¬Í¨¹ýͳһUMSʵÏÖÂß¼ÏûÏ¢ÓëÎïÀíKafka Topic½âñʹµÃͬһTopic¿ÉÒÔÁ÷ת¶à¸öUMSÏûÏ¢±í¡£
Ö§³ÖÊý¾Ý¿âµÄÈ«Á¿Êý¾ÝÀÈ¡£¬²¢ÇÒºÍÔöÁ¿Êý¾ÝͳһÈںϳÉUMSÏûÏ¢£¬¶ÔÏÂÓÎÏû·Ñ͸Ã÷ÎÞ¸ÐÖª¡£
2£©´ÓÄÚ²¿½Ç¶È¿´´ýÉè¼ÆË¼Ïë
»ùÓÚStorm¼ÆËãÒýÇæ½øÐÐÊý¾Ý¸ñʽ»¯£¬È·±£ÏûÏ¢¶Ëµ½¶ËÑÓ³Ù×îµÍ¡£
¶Ô²»Í¬Êý¾ÝÔ´Êý¾Ý½øÐбê×¼»¯¸ñʽ»¯£¬Éú³ÉUMSÐÅÏ¢£¬ÆäÖаüÀ¨£º
Éú³ÉÿÌõÏûÏ¢µÄΨһµ¥µ÷µÝÔöid£¬¶ÔӦϵͳ×Ö¶Îums_id_
È·ÈÏÿÌõÏûÏ¢µÄʼþʱ¼ä´Á£¨event timestamp£©£¬¶ÔӦϵͳ×Ö¶Îums_ts_
È·ÈÏÿÌõÏûÏ¢µÄ²Ù×÷ģʽ£¨Ôöɾ¸Ä£¬»òinsert only£©£¬¶ÔӦϵͳ×Ö¶Îums_op_
¶ÔÊý¾Ý¿â±í½á¹¹±ä¸üʵʱ¸ÐÖª²¢²ÉÓð汾ºÅ½øÐйÜÀí£¬È·±£ÏÂÓÎÏû·ÑʱÃ÷È·ÉÏÓÎÔªÊý¾Ý±ä»¯¡£
ÔÚͶ·ÅKafkaʱȷ±£ÏûϢǿÓÐÐò£¨·Ç¾ø¶ÔÓÐÐò£©ºÍat least onceÓïÒå¡£
ͨ¹ýÐÄÌø±í»úÖÆÈ·±£ÏûÏ¢¶Ëµ½¶Ë̽»î¸ÐÖª¡£
1.2.1.2 DBus¹¦ÄÜÌØÐÔ
Ö§³ÖÅäÖû¯È«Á¿Êý¾ÝÀÈ¡
Ö§³ÖÅäÖû¯ÔöÁ¿Êý¾ÝÀÈ¡
Ö§³ÖÅäÖû¯ÔÚÏ߸ñʽ»¯ÈÕÖ¾
Ö§³Ö¿ÉÊÓ»¯¼à¿ØÔ¤¾¯
Ö§³ÖÅäÖû¯¶à×â»§°²È«¹Ü¿Ø
Ö§³Ö·Ö±íÊý¾Ý»ã¼¯³Éµ¥Âß¼±í
1.2.1.3 DBus¼¼Êõ¼Ü¹¹

ͼ4 DBusÊý¾ÝÁ÷ת¼Ü¹¹Í¼
¸ü¶àDBus¼¼Êõϸ½ÚºÍÓû§½çÃæ£¬¿ÉÒԲο´£º
GitHub£º https://github.com/BriData
1.2.2 ·Ö²¼Ê½ÏûϢϵͳKafka
KafkaÒѾ³ÉΪÊÂʵ±ê×¼µÄ´óÊý¾ÝÁ÷ʽ´¦Àí·Ö²¼Ê½ÏûϢϵͳ£¬µ±È»KafkaÔÚ²»¶ÏµÄÀ©Õ¹ºÍÍêÉÆ£¬ÏÖÔÚÒ²¾ß±¸ÁËÒ»¶¨µÄ´æ´¢ÄÜÁ¦ºÍÁ÷ʽ´¦ÀíÄÜÁ¦¡£¹ØÓÚKafka±¾ÉíµÄ¹¦Äܺͼ¼ÊõÒѾÓкܶàÎÄÕÂÐÅÏ¢¿ÉÒÔ²éÔÄ£¬±¾ÎIJ»ÔÙÏêÊöKafkaµÄ×ÔÉíÄÜÁ¦¡£
ÕâÀïÎÒÃǾßÌå̽ÌÖKafkaÉÏÏûÏ¢ÔªÊý¾Ý¹ÜÀí£¨Metadata Management£©ºÍģʽÑݱ䣨Schema Evolution£©µÄ»°Ìâ¡£

ͼ5
ͼ5ÏÔʾ£¬ÔÚKafka±³ºóµÄConfluent¹«Ë¾½â¾ö·½°¸ÖУ¬ÒýÈëÁËÒ»¸öÔªÊý¾Ý¹ÜÀí×é¼þ£ºSchema Registry¡£Õâ¸ö×é¼þÖ÷Òª¸ºÔð¹ÜÀíÔÚKafkaÉÏÁ÷תÏûÏ¢µÄ ÔªÊý¾ÝÐÅÏ¢ºÍTopicÐÅÏ¢£¬²¢ÌṩһϵÁÐÔªÊý¾Ý¹ÜÀí·þÎñ¡£Ö®ËùÒÔÒªÒýÈëÕâÑùÒ»¸ö×é¼þ£¬ÊÇΪÁËKafkaµÄÏû·Ñ·½Äܹ»Á˽ⲻͬTopicÉÏÁ÷תµÄÊÇÄÄЩÊý¾Ý£¬ÒÔ¼°Êý¾ÝµÄÔªÊý¾ÝÐÅÏ¢£¬²¢½øÐÐÓÐЧµÄ½âÎöÏû·Ñ¡£
ÈκÎÊý¾ÝÁ÷תÁ´Â·£¬²»¹ÜÊÇÔÚʲôϵͳÉÏÁ÷ת£¬¶¼»á´æÔÚÕâ¶ÎÊý¾ÝÁ´Â·µÄÔªÊý¾Ý¹ÜÀíÎÊÌ⣬KafkaÒ²²»ÀýÍâ¡£Schema RegistryÊÇÒ»ÖÖÖÐÐÄ»¯µÄKafkaÊý¾ÝÁ´Â·ÔªÊý¾Ý¹ÜÀí½â¾ö·½°¸£¬²¢ÇÒ»ùÓÚSchema Registry£¬ConfluentÌṩÁËÏàÓ¦µÄKafkaÊý¾Ý°²È«»úÖÆºÍģʽÑݱä»úÖÆ¡£
ÄÇôÔÚRTDP¼Ü¹¹ÖУ¬ÈçºÎ½â¾öKafkaÏûÏ¢ÔªÊý¾Ý¹ÜÀíºÍģʽÑݱäÎÊÌâÄØ£¿
1.2.2.1 ÔªÊý¾Ý¹ÜÀí£¨Metadata Management£©
DBus»á×Ô¶¯½«ÊµÊ±¸ÐÖªµÄÊý¾Ý¿âÔªÊý¾Ý±ä»¯¼Ç¼ÏÂÀ´²¢Ìṩ·þÎñ
DBus»á×Ô¶¯½«ÔÚÏ߸ñʽ»¯µÄÈÕÖ¾ÔªÊý¾ÝÐÅÏ¢¼Ç¼ÏÂÀ´²¢Ìṩ·þÎñ
DBus»á·¢²¼ÔÚKafkaÉÏ·¢²¼Í³Ò»UMSÏûÏ¢£¬UMS±¾Éí×Ô´øÏûÏ¢ÔªÊý¾ÝÐÅÏ¢£¬Òò´ËÏÂÓÎÏû·ÑʱÎÞÐèµ÷ÓÃÖÐÐÄ»¯ÔªÊý¾Ý·þÎñ£¬¿ÉÒÔÖ±½Ó´ÓUMSÏûÏ¢ÀïÄõ½Êý¾ÝµÄÔªÊý¾ÝÐÅÏ¢
1.2.2.2 ģʽÑݱ䣨Schema Evolution£©
UMSÏûÏ¢»á×Ô´øSchemaµÄNamespaceÐÅÏ¢£¬NamespaceÊÇÒ»¸ö7²ã¶¨Î»×Ö·û´®£¬¿ÉÒÔΨһ¶¨Î»ÈκαíµÄÈκÎÉúÃüÖÜÆÚ£¬Ï൱ÓÚÊý¾Ý±íµÄIPµØÖ·£¬ÐÎʽÈçÏ£º
[Datastore].[Datastore Instance].[Database].[Table].[TableVersion].[Database Partition].[Table Partition]
Àý£ºoracle.oracle01.db1.table1.v2.dbpar01.tablepar01
ÆäÖÐ[Table Version]´ú±íÁËÕâÕűíµÄij¸öSchemaµÄ°æ±¾ºÅ£¬Èç¹ûÊý¾ÝÔ´ÊÇÊý¾Ý¿â£¬ÄÇôÕâ¸ö°æ±¾ºÅÊÇÓÉDBus×Ô¶¯Î¬»¤µÄ¡£
ÔÚRTDP¼Ü¹¹ÖУ¬KafkaµÄÏÂÓÎÊÇÓÉWormholeÏû·ÑµÄ£¬WormholeÔÚÏû·ÑUMSʱ£¬»á½«[TableVersion]×÷Ϊ*´¦Àí£¬Òâζ×ŵ±Ä³±íÉÏÓÎSchema±ä¸üʱ£¬Version»á×Ô¶¯ÉýºÅ£¬µ«Wormhole»áÎÞÊÓÕâ¸öVersion±ä»¯£¬½«»áÏû·Ñ´Ë±íËùÓа汾µÄÔöÁ¿/È«Á¿Êý¾Ý£¬ÄÇôWormholeÈçºÎ×öµ½¼æÈÝÐÔģʽÑݱäÖ§³ÖÄØ£¿ÔÚWormholeÀï¿ÉÒÔÅäÖÃÁ÷ÉÏ´¦ÀíSQLºÍÊä³ö×ֶΣ¬µ±ÉÏÓÎSchema±ä¸üÊÇÒ»ÖÖ¡°¼æÈÝÐÔ±ä¸ü¡±£¨Ö¸Ôö¼Ó×ֶΣ¬»òÕßÐÞ¸ÄÀ©´ó×Ö¶ÎÀàÐ͵ȣ©Ê±£¬ÊDz»»áÓ°Ïìµ½Wormhole SQLÕýÈ·Ö´Ðеġ£µ±ÉÏÓη¢Éú·Ç¼æÈÝÐÔ±ä¸üʱ£¬Wormhole»á±¨´í£¬Õâʱ¾ÍÐèÒªÈ˹¤½éÈë¶ÔÐÂSchemaµÄÂß¼½øÐÐÐÞ¸´¡£
ÓÉÉÏÎÄ¿ÉÒÔ¿´³ö£¬Schema RegistryºÍDBus+UMSÊÇÁ½ÖÖ²»Í¬µÄ½â¾öÔªÊý¾Ý¹ÜÀíºÍģʽÑݱäµÄÉè¼ÆË¼Â·£¬Á½Õ߸÷ÓÐÓÅÊÆºÍÁÓÊÆ£¬¿ÉÒԲο¼±í1µÄ¼òµ¥±È½Ï¡£

±í1 Schema Registry Óë DBus+UMS ¶Ô±È
ÕâÀï¸ø³öÒ»¸öUMSµÄÀý×Ó£º

ͼ6 UMSÏûÏ¢¾ÙÀý
1.2.3 Á÷ʽ´¦ÀíÆ½Ì¨Wormhole

ͼ7 RTDP¼Ü¹¹Ö®Wormhole
1.2.3.1 WormholeÉè¼ÆË¼Ïë
1)´ÓÍⲿ½Ç¶È¿´´ýÉè¼ÆË¼Ïë
Ïû·ÑÀ´×ÔKafka µÄUMSÏûÏ¢ºÍ×Ô¶¨ÒåJSONÏûÏ¢
¸ºÔð¶Ô½Ó²»Í¬µÄÊý¾ÝÄ¿±ê´æ´¢ (Sink)£¬²¢Í¨¹ýÃݵÈÂ߼ʵÏÖSinkµÄ×îÖÕÒ»ÖÂÐÔ
Ö§³ÖÅäÖÃSQL·½Ê½ÊµÏÖÁ÷ÉÏ´¦ÀíÂß¼
ÌṩFlow³éÏó¡£FlowÓÉÒ»¸öSource NamespaceºÍÒ»¸öSink Namespace¶¨Ò壬ÇҾ߱¸Î¨Ò»ÐÔ¡£FlowÉÏ¿ÉÒÔ¶¨Òå´¦ÀíÂß¼£¬ÊÇÒ»ÖÖÁ÷ÉÏ´¦ÀíµÄÂß¼³éÏó£¬Í¨¹ýÓëÎïÀíSpark Streaming¡¢Flink Streaming½âñʹµÃͬһ¸öStream¿ÉÒÔ´¦Àí¶à¸öFlow´¦ÀíÁ÷£¬ÇÒFlow¿ÉÒÔÔÚ²»Í¬StreamÉÏÈÎÒâÇл»¡£
Ö§³Ö»ùÓڻعࣨbackfill£©µÄKappa¼Ü¹¹£»Ö§³Ö»ùÓÚWormhole JobµÄLambda¼Ü¹¹
2)´ÓÄÚ²¿½Ç¶È¿´´ýÉè¼ÆË¼Ïë
»ùÓÚSpark Streaming¡¢Flink¼ÆËãÒýÇæ½øÐÐÊý¾ÝÁ÷ÉÏ´¦Àí¡£Spark Streaming¿ÉÖ§³Ö¸ßÍÌÍ¡¢ÅúÁ¿Lookup¡¢ÅúÁ¿Ð´SinkµÈ³¡¾°£»Flink¿ÉÖ§³ÖµÍÑÓ³Ù¡¢CEP¹æÔòµÈ³¡¾°¡£
ͨ¹ýums_id_, ums_op_ʵÏÖ²»Í¬SinkµÄÃݵÈÈë¿âÂß¼
ͨ¹ý¼ÆËãÏÂÍÆÊµÏÖLookupÂß¼ÓÅ»¯
³éÏ󼸸öͳһÒÔÖ§³Ö¹¦ÄÜÁé»îÐÔºÍÉè¼ÆÒ»ÖÂÐÔ
ͳһDAG¸ß½×·ÖÐγéÏó
ͳһͨÓÃÁ÷ÏûÏ¢UMSÐÒé³éÏó
ͳһÊý¾ÝÂß¼±íÃüÃû¿Õ¼äNamespace³éÏó
³éÏ󼸸ö½Ó¿ÚÒÔÖ§³Ö¿ÉÀ©Õ¹ÐÔ
SinkProcessor£ºÀ©Õ¹¸ü¶àSinkÖ§³Ö
SwiftsInterface£º×Ô¶¨ÒåÁ÷ÉÏ´¦ÀíÂß¼Ö§³Ö
UDF£º¸ü¶àÁ÷ÉÏ´¦ÀíUDFÖ§³Ö
ͨ¹ýFeedbackÏûϢʵʱ¹é¼¯Á÷ʽ×÷Òµ¶¯Ì¬Ö¸±êºÍͳ¼Æ
1.2.3.2 Wormhole¹¦ÄÜÌØÐÔ
Ö§³Ö¿ÉÊÓ»¯£¬ÅäÖû¯£¬SQL»¯¿ª·¢ÊµÊ©Á÷ʽÏîÄ¿
Ö§³ÖÖ¸Áîʽ¶¯Ì¬Á÷ʽ´¦ÀíµÄ¹ÜÀí¡¢ÔËά¡¢Õï¶ÏºÍ¼à¿Ø
Ö§³Öͳһ½á¹¹»¯UMSÏûÏ¢ºÍ×Ô¶¨Òå°ë½á¹¹»¯JSONÏûÏ¢
Ö§³Ö´¦ÀíÔöɾ¸ÄÈý̬ʼþÏûÏ¢Á÷
Ö§³Öµ¥¸öÎïÀíÁ÷ͬʱ²¢Ðд¦Àí¶à¸öÂß¼ÒµÎñÁ÷
Ö§³ÖÁ÷ÉÏLookup Anywhere£¬Pushdown Anywhere
Ö§³Ö»ùÓÚÒµÎñ²ßÂÔµÄʼþʱ¼ä´ÁÁ÷ʽ´¦Àí
Ö§³ÖUDFµÄ×¢²á¹ÜÀíºÍ¶¯Ì¬¼ÓÔØ
Ö§³Ö¶àÄ¿±êÊý¾ÝϵͳµÄ²¢·¢ÃݵÈÈë¿â
Ö§³Ö¶à¼¶»ùÓÚÔöÁ¿ÏûÏ¢µÄÊý¾ÝÖÊÁ¿¹ÜÀí
Ö§³Ö»ùÓÚÔöÁ¿ÏûÏ¢µÄÁ÷ʽ´¦ÀíºÍÅúÁ¿´¦Àí
Ö§³ÖLambda¼Ü¹¹ºÍKappa¼Ü¹¹
Ö§³ÖÓëÈý·½ÏµÍ³Î޷켯³É£¬¿É×÷ΪÈý·½ÏµÍ³µÄÁ÷¿ØÒýÇæ
Ö§³Ö˽ÓÐÔÆ²¿Ê𣬰²È«È¨Ï޹ܿغͶà×â»§×ÊÔ´¹ÜÀí
1.2.3.3 Wormhole¼¼Êõ¼Ü¹¹

ͼ8 WormholeÊý¾ÝÁ÷ת¼Ü¹¹Í¼
¸ü¶àWormhole¼¼Êõϸ½ÚºÍÓû§½çÃæ£¬¿ÉÒԲο´£º
GitHub£ºhttps://github.com/edp963/wormhole
1.2.4 ³£ÓÃÊý¾Ý¼ÆËã´æ´¢Ñ¡ÐÍ
RTDP¼Ü¹¹¶Ô´ýÊý¾Ý¼ÆËã´æ´¢Ñ¡Ð͵ÄÑ¡Ôñ²ÉÈ¡¿ª·ÅÕûºÏµÄ̬¶È¡£²»Í¬Êý¾ÝϵͳÓи÷×ÔµÄÓÅÊÆºÍÊʺϵij¡¾°£¬µ«²¢Ã»ÓÐÒ»¸öÊý¾Ýϵͳ¿ÉÒÔÊʺϸ÷ÖÖ¸÷ÑùµÄ´æ´¢¼ÆË㳡¾°¡£Òò´Ëµ±ÓкÏÊʵġ¢³ÉÊìµÄ¡¢Ö÷Á÷µÄÊý¾Ýϵͳ³öÏÖ£¬WormholeºÍMoonbox»á°´ÕÕÐèÒªÏàÓ¦µÄÀ©Õ¹ÕûºÏÖ§³Ö¡£
ÕâÀï´óÖÂÁоÙһЩ±È½ÏͨÓõÄÑ¡ÐÍ£º
¹ØÏµÐÍÊý¾Ý¿â£¨Oracle/MySQLµÈ£©£ºÊʺÏСÊý¾ÝÁ¿µÄ¸´ÔÓ¹ØÏµ¼ÆËã
·Ö²¼Ê½Áд洢ϵͳ
Kudu£ºScanÓÅ»¯£¬ÊʺÏOLAP·ÖÎö¼ÆË㳡¾°
HBase£ºËæ»ú¶Áд£¬ÊʺÏÌṩÊý¾Ý·þÎñ³¡¾°
Cassandra£º¸ßÐÔÄÜд£¬ÊʺϺ£Á¿Êý¾Ý¸ßƵдÈ볡¾°
ClickHouse£º¸ßÐÔÄܼÆË㣬ÊʺÏÖ»ÓÐinsertдÈ볡¾°£¨ºóÆÚ½«Ö§³Ö¸üÐÂɾ³ý²Ù×÷£©
·Ö²¼Ê½Îļþϵͳ
HDFS/Parquet/Hive£ºappend only£¬ÊʺϺ£Á¿Êý¾ÝÅúÁ¿¼ÆË㳡¾°
·Ö²¼Ê½ÎĵµÏµÍ³
MongoDB£ºÆ½ºâÄÜÁ¦£¬ÊʺϴóÊý¾ÝÁ¿Öеȸ´ÔÓ¼ÆËã
·Ö²¼Ê½Ë÷Òýϵͳ
ElasticSearch£ºË÷ÒýÄÜÁ¦£¬ÊʺÏ×öÄ£ºý²éѯºÍOLAP·ÖÎö³¡¾°
·Ö²¼Ê½Ô¤¼ÆËãϵͳ
Druid/Kylin£ºÔ¤¼ÆËãÄÜÁ¦£¬ÊʺϸßÐÔÄÜOLAP·ÖÎö³¡¾°
1.2.5 ¼ÆËã·þÎñƽ̨Moonbox

ͼ9 RTDP¼Ü¹¹Ö®Moonbox
1.2.5.1 MoonboxÉè¼ÆË¼Ïë
1)´ÓÍⲿ½Ç¶È¿´´ýÉè¼ÆË¼Ïë
¸ºÔð¶Ô½Ó²»Í¬µÄÊý¾Ýϵͳ£¬Ö§³Öͳһ·½Ê½¿çÒì¹¹Êý¾Ýϵͳ¼´Ï¯»ìËã
ÌṩÈýÖÖClientµ÷Ó÷½Ê½£ºRESTful·þÎñ¡¢JDBCÁ¬½Ó¡¢ODBCÁ¬½Ó
ͳһԪÊý¾ÝÊÕ¿Ú£»Í³Ò»²éѯÓïÑÔSQLÊÕ¿Ú£»Í³Ò»È¨ÏÞ¿ØÖÆÊÕ¿Ú
ÌṩÁ½ÖÖ²éѯ½á¹ûд³öģʽ£ºMerge¡¢Replace
ÌṩÁ½ÖÖ½»»¥Ä£Ê½£ºBatchģʽ¡¢Adhocģʽ
Êý¾ÝÐéÄ⻯ʵÏÖ£¬¶à×⻧ʵÏÖ£¬¿É¿´×÷ÊÇÐéÄâÊý¾Ý¿â
2)´ÓÄÚ²¿½Ç¶È¿´´ýÉè¼ÆË¼Ïë
¶ÔSQL½øÐнâÎö£¬¾¹ý³£¹æCatalyst´¦Àí½âÎöÁ÷³Ì£¬×îÖÕÉú³É¿ÉÏÂÍÆÊý¾ÝϵͳµÄÂß¼Ö´ÐÐ×ÓÊ÷½øÐÐÏÂÍÆ¼ÆË㣬Ȼºó½«½á¹ûÀ»Ø½øÐлìËã²¢·µ»Ø
Ö§³ÖÁ½²ãNamespace£ºdatabase.table£¬ÒÔÌṩÐéÄâÊý¾Ý¿âÌåÑé
Ìṩ·Ö²¼Ê½·þÎñÄ£¿éMoonbox GridÌṩ¸ß¿ÉÓø߲¢·¢ÄÜÁ¦
¶Ô¿ÉÈ«²¿ÏÂÍÆÂß¼£¨ÎÞ»ìË㣩Ìṩ¿ìËÙÖ´ÐÐͨµÀ
1.2.5.2 Moonbox¹¦ÄÜÌØÐÔ
Ö§³Ö¿çÒ칹ϵͳÎÞ·ì»ìËã
Ö§³ÖͳһSQLÓï·¨²éѯ¼ÆËãºÍдÈë
Ö§³ÖÈýÖÖµ÷Ó÷½Ê½£ºRESTful·þÎñ¡¢JDBCÁ¬½Ó¡¢ODBCÁ¬½Ó
Ö§³ÖÁ½ÖÖ½»»¥Ä£Ê½£ºBatchģʽ¡¢Adhocģʽ
Ö§³ÖCli Command¹¤¾ßºÍZeppelin
Ö§³Ö¶à×â»§Óû§È¨ÏÞÌåϵ
Ö§³Ö±í¼¶È¨ÏÞ¡¢Áм¶È¨ÏÞ¡¢¶ÁȨÏÞ¡¢Ð´È¨ÏÞ¡¢UDFȨÏÞ
Ö§³ÖYARNµ÷¶ÈÆ÷×ÊÔ´¹ÜÀí
Ö§³ÖÔªÊý¾Ý·þÎñ
Ö§³Ö¶¨Ê±ÈÎÎñ
Ö§³Ö°²È«²ßÂÔ
1.2.5.3 Moonbox¼¼Êõ¼Ü¹¹

ͼ10 MoonboxÂ߼ģ¿é
¸ü¶àMoonbox¼¼Êõϸ½ÚºÍÓû§½çÃæ£¬¿ÉÒԲο´£º
GitHub£º https://github.com/edp963/moonbox
1.2.6 ¿ÉÊÓÓ¦ÓÃÆ½Ì¨Davinci

ͼ11 RTDP¼Ü¹¹Ö®Davinci
1.2.6.1 DavinciÉè¼ÆË¼Ïë
1)´ÓÍⲿ½Ç¶È¿´´ýÉè¼ÆË¼Ïë
¸ºÔð¸÷ÖÖÊý¾Ý¿ÉÊÓ»¯Õ¹Ê¾¹¦ÄÜ
Ö§³ÖJDBCÊý¾ÝÔ´
ÌṩƽȨÓû§Ìåϵ£¬Ã¿¸öÓû§¿ÉÒÔ½¨Á¢ÊôÓÚ×Ô¼ºµÄOrg¡¢TeamºÍProject
Ö§³ÖSQL±àдÊý¾Ý´¦ÀíÂß¼£¬Ö§³ÖÍÏקʽ±à¼¿ÉÊÓ»¯Õ¹Ê¾£¬Ìṩ¶àÓû§Éç½»»¯·Ö¹¤Ð×÷»·¾³
Ìṩ¶àÖÖ²»Í¬µÄͼ±í½»»¥ÄÜÁ¦ºÍ¶¨ÖÆ»¯ÄÜÁ¦£¬ÒÔÓ¦¶Ô²»Í¬Êý¾Ý¿ÉÊÓ»¯ÐèÇó
ÌṩǶÈëÕûºÏ½øÆäËûÊý¾ÝÓ¦ÓõÄÄÜÁ¦
2)´ÓÄÚ²¿½Ç¶È¿´´ýÉè¼ÆË¼Ïë
Î§ÈÆViewºÍWidgetÕ¹¿ª¡£ViewÊÇÊý¾ÝµÄÂß¼ÊÓͼ£»WidgetÊÇÊý¾Ý¿ÉÊÓ»¯ÊÓͼ
ͨ¹ýÓû§×Ô¶¨ÒåÑ¡Ôñ·ÖÀàÊý¾Ý¡¢ÓÐÐòÊý¾ÝºÍÁ¿»¯Êý¾Ý£¬°´ÕÕºÏÀíµÄ¿ÉÊÓ»¯Âß¼×Ô¶¯Õ¹ÏÖÊÓͼ
1.2.6.2 Davinci¹¦ÄÜÌØÐÔ
1)Êý¾ÝÔ´
Ö§³ÖJDBCÊý¾ÝÔ´
Ö§³ÖCSVÎļþÉÏ´«
2)Êý¾ÝÊÓͼ
Ö§³Ö¶¨ÒåSQLÄ£°æ
Ö§³ÖSQL¸ßÁÁÏÔʾ
Ö§³ÖSQL²âÊÔ
Ö§³Ö»ØÐ´²Ù×÷
3)¿ÉÊÓ×é¼þ
Ö§³ÖÔ¤¶¨Òåͼ±í
Ö§³Ö¿ØÖÆÆ÷×é¼þ
Ö§³Ö×ÔÓÉÑùʽ
4)½»»¥ÄÜÁ¦
Ö§³Ö¿ÉÊÓ×é¼þÈ«ÆÁÏÔʾ
Ö§³Ö¿ÉÊÓ×é¼þ±¾µØ¿ØÖÆÆ÷
Ö§³Ö¿ÉÊÓ×é¼þ¼ä¹ýÂËÁª¶¯
Ö§³ÖȺ¿Ø¿ØÖÆÆ÷¿ÉÊÓ×é¼þ
Ö§³Ö¿ÉÊÓ×é¼þ±¾µØ¸ß¼¶¹ýÂËÆ÷
Ö§³Ö´óÊý¾ÝÁ¿Õ¹Ê¾·ÖÒ³ºÍ»¬¿é
5)¼¯³ÉÄÜÁ¦
Ö§³Ö¿ÉÊÓ×é¼þCSVÏÂÔØ
Ö§³Ö¿ÉÊÓ×é¼þ¹«¹²·ÖÏí
Ö§³Ö¿ÉÊÓ×é¼þÊÚȨ·ÖÏí
Ö§³ÖÒDZí°å¹«¹²·ÖÏí
Ö§³ÖÒDZí°åÊÚȨ·ÖÏí
6)°²È«È¨ÏÞ
Ö§³ÖÊý¾ÝÐÐÁÐȨÏÞ
Ö§³ÖLDAPµÇ¼¼¯³É
¸ü¶àDavinci¼¼Êõϸ½ÚºÍÓû§½çÃæ£¬¿ÉÒԲο´£º
GitHub£ºhttps://github.com/edp963/davinci
1.3 ÇÐÃæ»°ÌâÌÖÂÛ
1.3.1 Êý¾Ý¹ÜÀí
1£©ÔªÊý¾Ý¹ÜÀí
DBus¿ÉÒÔʵʱÄõ½Êý¾ÝÔ´µÄÔªÊý¾Ý²¢Ìṩ·þÎñ²éѯ
Moonbox¿ÉÒÔʵʱÄõ½Êý¾ÝϵͳµÄÔªÊý¾Ý²¢Ìṩ·þÎñ²éѯ
¶ÔÓÚRTDP¼Ü¹¹À´Ëµ£¬ÊµÊ±Êý¾ÝÔ´ºÍ¼´Ï¯Êý¾ÝÔ´µÄÔªÊý¾ÝÐÅÏ¢¿ÉÒÔͨ¹ýµ÷ÓÃDBusºÍMoonboxµÄRESTful·þÎñ¹é¼¯£¬¿ÉÒÔ»ùÓڴ˽¨ÉèÆóÒµ¼¶ÔªÊý¾Ý¹ÜÀíϵͳ
2£©Êý¾ÝÖÊÁ¿
Wormhole¿ÉÒÔÅäÖÃÏûϢʵʱÂäÈëHDFS£¨hdfslog£©¡£»ùÓÚhdfslogµÄWormhole JobÖ§³ÖLambda¼Ü¹¹£»»ùÓÚhdfslogµÄBackfillÖ§³ÖKappa¼Ü¹¹¡£¿ÉÒÔͨ¹ýÉèÖö¨Ê±ÈÎÎñÑ¡ÔñLambda¼Ü¹¹»òÕßKappa¼Ü¹¹¶ÔSink½øÐж¨Ê±Ë¢Ð£¬ÒÔÈ·±£Êý¾ÝµÄ×îÖÕÒ»ÖÂÐÔ¡£Wormhole»¹Ö§³Ö½«Á÷ÉÏ´¦ÀíÒì³£»òSinkдÈëÒì³£µÄÏûÏ¢ÐÅϢʵʱFeedbackµ½WormholeϵͳÖУ¬²¢ÌṩRESTful·þÎñ¹©Èý·½Ó¦Óõ÷Óô¦Àí¡£
Moonbox¿ÉÒÔ¶ÔÒ칹ϵͳ½øÐм´Ï¯»ìË㣬Õâ¸öÄÜÁ¦¸³ÓèMoonbox¡°ÈðÊ¿¾üµ¶¡±°ãµÄ±ãÀûÐÔ¡£¿ÉÒÔͨ¹ýMoonbox±àд¶¨Ê±SQL½Å±¾Âß¼£¬¶Ô¹Ø×¢µÄÒ칹ϵͳÊý¾Ý½øÐбȶԣ¬»ò¶Ô¹Ø×¢µÄÊý¾Ý±í×ֶνøÐÐͳ¼ÆµÈ£¬¿ÉÒÔ»ùÓÚMoonboxµÄÄÜÁ¦¶þ´Î¿ª·¢Êý¾ÝÖÊÁ¿¼ì²âϵͳ¡£
3£©ÑªÔµ·ÖÎö
WormholeµÄÁ÷ÉÏ´¦ÀíÂ߼ͨ³£SQL¼´¿ÉÂú×㣬ÕâЩSQL¿ÉÒÔͨ¹ýRESTful·þÎñ½øÐй鼯¡£
MoonboxÕÆ¹ÜÁËÊý¾Ý²éѯµÄͳһÈë¿Ú£¬²¢ÇÒËùÓÐÂß¼¾ùΪSQL£¬ÕâЩSQL¿ÉÒÔͨ¹ýMoonboxÈÕÖ¾½øÐй鼯¡£
¶ÔÓÚRTDP¼Ü¹¹À´Ëµ£¬ÊµÊ±´¦ÀíÂß¼ºÍ¼´Ï¯´¦ÀíÂß¼µÄSQL¿ÉÒÔͨ¹ýµ÷ÓÃWormholeµÄRESTful·þÎñºÍMoonboxµÄÈÕÖ¾¹é¼¯£¬¿ÉÒÔ»ùÓڴ˽¨ÉèÆóÒµ¼¶ÑªÔµ·ÖÎöϵͳ¡£
1.3.2 Êý¾Ý°²È«

ͼ12 RTDPÊý¾Ý°²È«
ÉÏͼ¸ø³öÁËRTDP¼Ü¹¹ÖУ¬Ëĸö¿ªÔ´Æ½Ì¨¸²¸ÇÁ˶˵½¶ËÊý¾ÝÁ÷תÁ´Â·£¬²¢ÇÒÔÚÿ¸ö½ÚµãÉ϶¼ÓжÔÊý¾Ý°²È«¸÷¸ö·½ÃæµÄ¿¼Á¿ºÍÖ§³Ö£¬È·±£ÁËʵʱÊý¾Ý¹ÜµÀ¶Ëµ½¶ËµÄÊý¾Ý°²È«ÐÔ¡£
ÁíÍ⣬ÓÉÓÚMoonbox³ÉΪÁËÃæÏòÓ¦ÓòãÊý¾Ý·ÃÎʵÄͳһÈë¿Ú£¬Òò´Ë»ùÓÚMoonboxµÄ²Ù×÷Éó¼ÆÈÕÖ¾¿ÉÒÔ»ñµÃºÜ¶à°²È«²ãÃæµÄÐÅÏ¢£¬¿ÉÒÔÎ§ÈÆ²Ù×÷Éó¼ÆÈÕÖ¾½¨Á¢Êý¾Ý°²È«Ô¤¾¯»úÖÆ£¬½ø¶ø½¨ÉèÆóÒµ¼¶Êý¾Ý°²È«ÏµÍ³¡£
1.3.3 ¿ª·¢ÔËά
1£©ÔËά¹ÜÀí
ʵʱÊý¾Ý´¦ÀíµÄÔËά¹ÜÀíÏòÀ´ÊǸöÍ´µã£¬DBusºÍWormholeͨ¹ý¿ÉÊÓ»¯UIÌṩÁË¿ÉÊÓ»¯ÔËά¹ÜÀíÄÜÁ¦£¬ÈÃÈ˹¤ÔËά±äµÃ¼òµ¥¡£
DBusºÍWormholeÌṩÁ˽¡¿µ¼ì²é¡¢²Ù×÷¹ÜÀí¡¢Backfill¡¢FlowÆ¯ÒÆµÈRESTful·þÎñ£¬¿ÉÒÔ»ùÓÚ´ËÑз¢×Ô¶¯»¯ÔËάϵͳ¡£
2£©¼à¿ØÔ¤¾¯
DBusºÍWormhole¾ùÌṩ¿ÉÊÓ»¯¼à¿Ø½çÃæ£¬¿ÉÒÔʵʱ¿´µ½Âß¼±í¼¶µÄÍÌͺÍÑÓ³ÙµÈÐÅÏ¢¡£
DBusºÍWormholeÌṩÁËÐÄÌø¡¢Stats¡¢×´Ì¬µÈRESTful·þÎñ£¬¿ÉÒÔ»ùÓÚ´ËÑз¢×Ô¶¯»¯Ô¤¾¯ÏµÍ³¡£
¶þ¡¢Ä£Ê½³¡¾°Ì½ÌÖ
ÉÏÒ»ÕÂÎÒÃǽéÉÜÁËRTDP¼Ü¹¹¸÷¸ö¼¼Êõ×é¼þµÄÉè¼Æ¼Ü¹¹ºÍ¹¦ÄÜÌØÐÔ£¬ÖÁ´Ë¶ÁÕßÒѾ¶ÔRTDP¼Ü¹¹ÈçºÎÂ䵨ÓÐÁ˾ßÌåµÄÈÏʶºÍÁ˽⡣ÄÇôRTDP¼Ü¹¹¿ÉÒÔ½â¾öÄÄЩ³£¼ûÊý¾ÝÓ¦Óó¡¾°ÄØ£¿ÏÂÃæÎÒÃÇ»á̽ÌÖ¼¸ÖÖʹÓÃģʽ£¬ÒÔ¼°²»Í¬Ä£Ê½ÊÊÓ¦ºÎÖÖÐèÇ󳡾°¡£
2.1 ͬ²½Ä£Ê½
2.1.1 ģʽÃèÊö
ͬ²½Ä£Ê½£¬ÊÇÖ¸Ö»ÅäÖÃÒì¹¹Êý¾Ýϵͳ֮¼äµÄÊý¾Ýʵʱͬ²½£¬ÔÚÁ÷Éϲ»×öÈκδ¦ÀíÂß¼µÄʹÓÃģʽ¡£
¾ßÌå¶øÑÔ£¬Í¨¹ýÅäÖÃDBus½«Êý¾Ý´ÓÊý¾ÝԴʵʱ³éÈ¡³öÀ´Í¶·ÅÔÚKafkaÉÏ£¬È»ºóͨ¹ýÅäÖÃWormhole½«KafkaÉÏÊý¾ÝʵʱдÈëµ½Sink´æ´¢ÖС£Í¬²½Ä£Ê½Ö÷ÒªÌṩÁËÁ½¸öÄÜÁ¦£º
ºóÐøÊý¾Ý´¦ÀíÂß¼²»ÔÙÖ´ÐÐÔÚÒµÎñ±¸¿âÉÏ£¬¼õÉÙÁ˶ÔÒµÎñ±¸¿âµÄʹÓÃѹÁ¦
ÌṩÁ˽«²»Í¬ÎïÀíÒµÎñ±¸¿âÊý¾Ýʵʱͬ²½µ½Í¬Ò»ÎïÀíÊý¾Ý´æ´¢µÄ¿ÉÄÜÐÔ
2.1.2 ¼¼ÊõÄѵã
¾ßÌåʵʩ±È½Ï¼òµ¥¡£
ITʵʩÈËÔ±ÎÞÐèÁ˽âÌ«¶àÁ÷ʽ´¦ÀíµÄ³£¼ûÎÊÌ⣬²»ÐèÒª¿¼ÂÇÁ÷ÉÏ´¦ÀíÂ߼ʵÏÖµÄÉè¼ÆºÍʵʩ£¬Ö»ÐèÒªÁ˽â»ù±¾µÄÁ÷¿Ø²ÎÊýÅäÖü´¿É¡£
2.1.3 ÔËά¹ÜÀí
ÔËά¹ÜÀí±È½Ï¼òµ¥¡£
ÐèÒªÈ˹¤ÔËά¡£µ«ÓÉÓÚÁ÷ÉÏûÓд¦ÀíÂß¼£¬Òò´ËÈÝÒ×°Ñ¿ØÁ÷ËÙ£¬ÎÞÐ迼ÂÇÁ÷ÉÏ´¦ÀíÂß¼±¾ÉíµÄ¹¦ºÄ£¬¿ÉÒÔ¸ø³öÒ»¸öÏà¶ÔÎȶ¨µÄͬ²½¹ÜµÀÅäÖᣲ¢ÇÒÒ²ºÜÈÝÒ××öµ½¶¨Ê±¶Ëµ½¶ËÊý¾Ý±È¶ÔÀ´È·±£Êý¾ÝÖÊÁ¿£¬ÒòΪԴ¶ËºÍÄ¿±ê¶ËµÄÊý¾ÝÊÇÍêȫһÖµġ£
2.1.4 ÊÊÓó¡¾°
¿ç²¿ÃÅÊý¾Ýʵʱͬ²½¹²Ïí
½»Ò×Êý¾Ý¿âºÍ·ÖÎöÊý¾Ý¿â½âñî
Ö§³ÖÊý²ÖʵʱODS²ã½¨Éè
Óû§×ÔÖúʵʱ¼òµ¥±¨±í¿ª·¢
µÈµÈ
2.2 Á÷Ëãģʽ
2.2.1 ģʽÃèÊö
Á÷Ëãģʽ£¬ÊÇÖ¸ÔÚͬ²½Ä£Ê½µÄ»ù´¡ÉÏ£¬ÔÚÁ÷ÉÏÅäÖô¦ÀíÂß¼µÄʹÓÃģʽ¡£
ÔÚRTDP¼Ü¹¹ÖУ¬Á÷ÉÏ´¦ÀíÂß¼µÄÅäÖúÍÖ§³ÖÖ÷ÒªÔÚWormholeƽ̨ÉϽøÐС£ÔÚͬ²½Ä£Ê½µÄÄÜÁ¦Ö®ÉÏ£¬Á÷ËãģʽÖ÷ÒªÌṩÁËÁ½¸öÄÜÁ¦£º
Á÷ÉϼÆË㽫ÅúÁ¿¼ÆË㼯Öй¦ºÄ·ÖÉ¢ÔÚÁ÷ÉÏÔöÁ¿¼ÆËã³ÖÐø¹¦ºÄ£¬¼«´ó½µµÍÁ˽á¹û¿ìÕÕµÄʱ¼äÑÓ³Ù
Á÷ÉϼÆËãÌṩÁË¿çÒ칹ϵͳ»ìËãµÄеļÆËãÈë¿Ú£¨Lookup£©
2.2.2 ¼¼ÊõÄѵã
¾ßÌåʵʩÏà¶Ô½ÏÄÑ¡£
Óû§ÐèÒªÁ˽âÁ÷ÉÏ´¦ÀíÄÜ×öÄÄЩÊ£¬ÊʺÏ×öÄÄЩÊ£¬ÈçºÎת»¯È«Á¿¼ÆËãÂß¼³ÉΪÔöÁ¿¼ÆËãÂß¼µÈ¡£»¹Òª¿¼ÂÇÁ÷ÉÏ´¦ÀíÂß¼±¾Éí¹¦ºÄºÍÒÀÀµµÄÍⲿÊý¾ÝϵͳµÈÒòËØÀ´µ÷½ÚÅäÖøü¶à²ÎÊý¡£
2.2.3 ÔËά¹ÜÀí
ÔËά¹ÜÀíÏà¶Ô½ÏÄÑ¡£
ÐèÒªÈ˹¤ÔËά¡£µ«±Èͬ²½Ä£Ê½ÔËά¹ÜÀí¸üÄÑ£¬Ö÷ÒªÌåÏÖÔÚÁ÷¿Ø²ÎÊýÅäÖÿ¼ÂÇÒòËØ½Ï¶à¡¢ÎÞ·¨Ö§³Ö¶Ëµ½¶ËÊý¾Ý±È¶Ô¡¢ÒªÑ¡Ôñ½á¹û¿ìÕÕ×îÖÕÒ»ÖÂÐÔʵÏÖ²ßÂÔ¡¢Òª¿¼ÂÇÁ÷ÉÏLookupʱ¼ä¶ÔÆë²ßÂԵȷ½ÃæÎÊÌâ¡£
2.2.4 ÊÊÓó¡¾°
¶ÔµÍÑÓ³ÙÒªÇó½Ï¸ßµÄÊý¾ÝÓ¦ÓÃÏîÄ¿»ò±¨±í
ÐèÒªµÍÑÓ³Ùµ÷ÓÃÍⲿ·þÎñ£¨ÈçÁ÷Éϵ÷ÓÃÍⲿ¹æÔòÒýÇæ¡¢ÔÚÏßË㷨ģÐÍʹÓõȣ©
Ö§³ÖÊý²ÖʵʱÊÂʵ±í+ά¶È±íµÄ¿í±í½¨Éè
ʵʱ¶à±íÈںϡ¢·Ö²ð¡¢ÇåÏ´¡¢±ê×¼»¯Mapping³¡¾°
µÈµÈ
2.3 ÂÖתģʽ
2.3.1 ģʽÃèÊö
ÂÖתģʽ£¬ÊÇÖ¸ÔÚÁ÷ËãģʽµÄ»ù´¡ÉÏ£¬ÔÚÊý¾ÝʵʱÂä¿âÖУ¬Í¬Ê±ÅܶÌʱ¶¨Ê±ÈÎÎñÔÚ¿âÉϽøÒ»²½¼ÆËãºó£¬½«½á¹ûÔÙ´ÎͶ·ÅÔÚKafkaÉÏÅÜÏÂÒ»ÂÖÁ÷ÉϼÆË㣬ÕâÑùÁ÷ËãתÅúËã¡¢ÅúËãתÁ÷ËãµÄʹÓÃģʽ¡£
ÔÚRTDP¼Ü¹¹ÖУ¬¿ÉÒÔÀûÓÃKafka->Wormhole->Sink->Moonbox->KafkaµÄÕûºÏ·½Ê½ÊµÏÖÈκÎÂÖ´ÎÈÎºÎÆµ´ÎµÄÂÖת¼ÆËã¡£ÔÚÁ÷ËãģʽµÄÄÜÁ¦Ö®ÉÏ£¬ÂÖתģʽÌṩµÄÖ÷ÒªÄÜÁ¦ÊÇ£ºÀíÂÛÉÏÖ§³ÖµÍÑÓ³ÙµÄÈκθ´ÔÓÁ÷ת¼ÆËãÂß¼¡£
2.3.2 ¼¼ÊõÄѵã
¾ßÌåʵʩÄÑ¡£
MoonboxתWormholeÄÜÁ¦µÄÒýÈ룬±ÈÁ÷Ëãģʽ½øÒ»²½Ôö¼ÓÁË¿¼ÂǵıäÁ¿ÒòËØ£¬Èç¶àSinkµÄÑ¡Ôñ¡¢Moonbox¼ÆËãµÄƵÂÊÉ趨¡¢ÈçºÎ²ð·ÖWormholeºÍMoonboxµÄ¼ÆËã·Ö¹¤µÈ·½ÃæÎÊÌâ¡£
2.3.3 ÔËά¹ÜÀí
ÔËά¹ÜÀíÄÑ¡£
ÐèÒªÈ˹¤ÔËά¡£ºÍÁ÷Ëãģʽ±È£¬ÐèÒª¸ü¶àÊý¾ÝϵͳÒòËØµÄ¿¼ÂÇ¡¢¸ü¶à²ÎÊýµÄÅäÖõ÷ÓÅ¡¢¸üÄѵÄÊý¾ÝÖÊÁ¿¹ÜÀíºÍÕï¶Ï¼à¿Ø¡£
2.3.4 ÊÊÓó¡¾°
µÍÑӳٵĶಽÖèµÄ¸´ÔÓÊý¾Ý´¦ÀíÂß¼³¡¾°
¹«Ë¾¼¶ÊµÊ±Êý¾ÝÁ÷ת´¦ÀíÍøÂ罨Éè
2.4 ÖÇÄÜģʽ
2.4.1 ģʽÃèÊö
ÖÇÄÜģʽ£¬ÊÇÖ¸ÀûÓùæÔò»òË㷨ģÐÍÀ´½øÐÐÓÅ»¯ºÍÔöЧµÄʹÓÃģʽ¡£
¿ÉÒÔÖÇÄÜ»¯µÄµã£º
Wormhole FlowµÄÖÇÄÜÆ¯ÒÆ£¨ÖÇÄÜ»¯×Ô¶¯»¯ÔËά£©
MoonboxÔ¤¼ÆËãµÄÖÇÄÜÓÅ»¯£¨ÖÇÄÜ»¯×Ô¶¯»¯µ÷ÓÅ£©
È«Á¿¼ÆËãÂß¼ÖÇÄÜת»»³ÉÁ÷ʽ¼ÆËãÂß¼£¬È»ºó²¿ÊðÔÚWormhole + Moonbox£¨ÖÇÄÜ»¯×Ô¶¯»¯¿ª·¢²¿Êð£©
µÈµÈ
2.4.2 ¼¼ÊõÄѵã
¾ßÌåʵʩÔÚÀíÂÛÉÏ×î¼òµ¥£¬µ«ÓÐЧµÄ¼¼ÊõʵÏÖ×îÄÑ¡£
Óû§Ö»ÐèÒªÍê³ÉÀëÏßÂß¼¿ª·¢£¬Ê£Ï½»ÓÉÖÇÄÜ»¯¹¤¾ßÍê³É¿ª·¢¡¢²¿Êð¡¢µ÷ÓÅ¡¢ÔËά¡£
2.4.3 ÔËά¹ÜÀí
ÁãÔËά¡£
|