±à¼ÍƼö: |
±¾ÎÄÎÒÃÇÏêϸ½²Êö
Pravega ¶¯Ì¬µ¯ÐÔÉìËõÌØÐÔµÄʵÏÖºÍÓ¦ÓÃʵÀý¡£
±¾ÎÄÀ´×ÔinfoQ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
ÔÚµ±ÏÂÖڶ໥ÁªÍøÓ¦Óó¡¾°Ï£¬ÊµÊ±Êý¾Ý²úÉúµÄËÙÂʸù¾Ýʱ¼äµÄ±ä»¯»áÓÐ×Å·Ì츲µØµÄ±ä»¯¡£ÎÒÃǼȿÉÄÜÃæ¶ÔÖîÈçÍâÂô¶©µ¥¡¢×¡·¿³É½»Á¿¡¢Ë«Ê®Ò»¶©µ¥ÕâЩ³¡¾°£¬ÆäÊý¾ÝÁ¿ÓÐÖÜÆÚÐÔÇÒÔÚ¾Ö²¿µÄʱ¼äÄÚ»áÓпÉÔ¤ÖªµÄÍ»·¢µÄÊý¾Ý·åÖµ£»Ò²¿ÉÄÜÃæ¶Ô΢²©ÈÈËÑ¡¢Â·¿öʹÊÐÅÏ¢ÕâÒ»ÀàÎÞ·¨Ô¤ÖªµÄÍ»·¢µÄÊý¾ÝÁ¿¼¤Ôö¡£
ÒÔÉÏÌØÐÔͨË×À´½²£¬¾ÍÊÇÁ÷Á¿Êý¾Ýµ½´ïÁ¿ÓзåÓйȣ¬ÇÒ¿ÉÄܲ»¿ÉÔ¤Öª¡£ÕýÒòÈç´Ë£¬Pravega ×÷Ϊһ¿îÁ÷´æ´¢µÄ²úÆ·£¬±ØÐëÄܹ»Ó¦¶Ô˲ʱµÄÊý¾Ýºé·å£¬×öµ½¡°Ï÷·åÌî¹È¡±£¬ÈÃϵͳ×Ô¶¯µØ°éËæÊý¾Ýµ½´ïËÙÂʵı仯¶øÉìËõ£¬¼ÈÄܹ»ÔÚÊý¾Ý·åֵʱ½øÐÐÀ©ÈÝÌáÉý˲ʱ´¦ÀíÄÜÁ¦£¬ÓÖÄܹ»ÔÚÊý¾Ý¹Èֵʱ½øÐÐËõÈݽÚÊ¡ÔËÐгɱ¾£¬¶ø¶Áд¿Í»§¶ËÎÞÐè¶îÍâ½øÐе÷Õû¡£
ÕâÒ»ÌØÐÔ¶ÔÓÚÃæÏòÆóÒµ¿ª·¢²úÆ·ÓÈÆäÖØÒª£¬Devops ¿ªÏúÔÚÆóÒµÖж¼»á±»¹éÈë²úÆ·
TCO(Total Cost of Ownership) , ËùÒÔ²úÆ·×ÔÉíµÄ¶¯Ì¬×ÔÊÊÓ¦ÄÜÁ¦½«»áÊDZر¸Ìõ¼þ£¬ÕâÒ²ÊÇ»ØÓ¦ÎÒÃÇÔÚϵÁÐÎÄÕµڶþƪÖÐÌáµ½µÄÈý´óÌôÕ½×îºóÒ»Ìõ¡£
¶¯Ì¬ÉìËõÐÔ
¶ÔÓÚ·Ö²¼Ê½ÏûϢϵͳÀ´Ëµ£¬Ò»¸öÉè¼ÆÁ¼ºÃµÄ£¬¿ÉÀ©Õ¹µÄ·ÖÇø»úÖÆ±Ø²»¿ÉÉÙ¡£·ÖÇø»úÖÆÊ¹µÃ¶ÁдµÄ²¢Ðл¯³ÉΪ¿ÉÄÜ£¬¶øÒ»¸öÁ¼ºÃµÄ·ÖÇøÀ©Õ¹»úÖÆÊ¹µÃÆóÒµÔÚÃæÁÙÒµÎñÔö³¤Ê±¿ÉÒÔ±äµÃ¸üµÃÐÄÓ¦ÊÖ¡£ºÍÐí¶à»ùÓÚ¾²Ì¬·ÖÇø£¬»òÕßÐèÒªÊÖ¶¯À©Õ¹·ÖÇø£¨Èç
Kafka£©µÄϵͳ²»Í¬µÄÊÇ£¬Pravega ¿ÉÒÔ¸ù¾ÝÊý¾Ý¸ºÔض¯Ì¬µØÉìËõ Stream£¬ÒÔ´ËÀ´ÊµÊ±µØÓ¦¶ÔÁ÷Á¿¸ºÔصı仯¡£
µ±Ç°½â¾ö·½°¸µÄһЩÎÊÌâ
ÔÚµ±Ç°µÄ´óÊý¾Ý¼¼Êõ»·¾³Ï£¬ÎÒÃÇͨ¹ý½«Êý¾Ý²ð·Ö³É¶à¸ö·ÖÇø²¢¶ÀÁ¢´¦ÀíÀ´»ñµÃ²¢ÐÐÐÔ¡£ ÀýÈ磬Hadoop
ͨ¹ý HDFS ºÍ map-reduce ʵÏÖÁËÅú´¦Àí²¢Ðл¯¡£ ¶ÔÓÚÁ÷ʽ¹¤×÷¸ºÔØ£¬ÎÒÃǽñÌìҪʹÓöàÏûÏ¢¶ÓÁлò
Kafka ·ÖÇøÀ´ÊµÏÖ²¢Ðл¯¡£ ÕâÁ½¸öÑ¡Ïî¶¼ÓÐͬÑùµÄÎÊÌ⣺·ÖÇø»úÖÆ»áͬʱӰÏì¶Á¿Í»§¶ËºÍд¿Í»§¶Ë¡£ Ãæ¶Ô³ÖÐøÊý¾Ý´¦ÀíµÄ¶Á/д£¬ÎÒÃǵÄÀ©Õ¹ÒªÇóÍùÍù»áÓв»Í¬£¬¶øÒ»¸öͬʱӰÏì¶ÁдµÄ·ÖÇø»úÖÆ»áÔö¼ÓϵͳµÄ¸´ÔÓÐÔ¡£
´ËÍ⣬ËäÈ»Äã¿ÉÒÔͨ¹ýÌí¼Ó¶ÓÁлò·ÖÇøÀ´½øÐÐÀ©Õ¹£¬µ«ÕâÐèÒª·Ö±ð¶Ô¶Á¡¢Ð´¿Í»§¶ËºÍ´æ´¢½øÐÐÊÖ¶¯µ÷Õû£¬È»ºóÐèÒªÊÖ¶¯Ðµ÷µ÷ÕûºóµÄ²ÎÊý¡£
ÕâÑùµÄ²Ù×÷ºÜ¸´ÔÓ£¬¶øÇÒ²»ÊǶ¯Ì¬µÄ£¬²¢ÐèÒªÈ˹¤½éÈë¡£
¶øÊ¹Óà Pravega µÄ»°£¬ÎÒÃÇ¿ÉÒÔÇáËɵء¢µ¯ÐÔ²¢ÇÒ¶ÀÁ¢µØÀ©Õ¹Êý¾ÝµÄÉãÈë¡¢´æ´¢ºÍ´¦Àí£¬¼´Ðµ÷Êý¾Ý¹ÜµÀÖÐÿ¸ö×é¼þµÄÀ©Õ¹¡£
Pravega Stream µÄ¶¯Ì¬ÉìËõʵÏÖ
Pravega ¶Ô¶¯Ì¬ÉìËõµÄÖ§³ÖÔ´×ÔÓÚ°Ñ Stream ±»»®·Ö³É Segment µÄÏë·¨¡£ ÔÚ֮ǰµÄÎÄÕÂÖÐÓнéÉܹý£¬Ò»¸ö
Stream ¿ÉÒÔ¾ßÓÐÒ»¸ö»ò¶à¸ö Segment¡£ÎÒÃÇ¿ÉÒÔ°ÑÒ»¸ö Segment Àà±È³ÉÒ»¸ö·ÖÇø£¬Ð´Èë
Stream µÄÈκÎÊý¾Ý¶¼»á¸ù¾ÝÖ¸¶¨Â·Óɼü£¬Í¨¹ý¹þÏ£¼ÆËã·ÓÉÖÁijһ¸ö Segment¡£ ʵ¼ÊÓ¦Óó¡¾°Ï£¬ÎÒÃǽ¨ÒéÓ¦Óÿª·¢Õß»ùÓÚһЩÓÐÓ¦ÓÃÒâÒåµÄ×ֶΣ¬±ÈÈç
customer-id£¬timestamp£¬machine-id µÈÀ´Éú³É·Óɼü£¬ÕâÑù¾Í¿ÉÒÔÈ·±£½«Í¬ÀàµÄÓ¦ÓÃÊý¾Ý·ÓÉÖÁͬһ¸ö
Segment¡£
Segment ÊÇ Stream ÖÐ×î»ù±¾µÄ²¢Ðе¥Ôª¡£
²¢ÐÐд£ºÒ»¸ö¾ßÓиü¶à¸ö Segment µÄ Stream ¿ÉÒÔÖ§³Ö¸ü´óµÄдÈë²¢Ðжȣ¬¶à¸öд¿Í»§¶Ë¿ÉÒÔ²¢ÐеضԶà¸ö
Segment ½øÐÐдÈ룬¶øÕâЩ Segment ¿ÉÄÜÔÚÎïÀíÉÏ·Ö²¼ÓÚ¼¯ÈºÖеĶą̀·þÎñÆ÷ÉÏ¡£
²¢ÐжÁ£º¶ÔÓÚ¶Á¿Í»§¶ËÀ´Ëµ£¬Segment µÄÊýÁ¿Òâζ×Å×î´óµÄ¶Á²¢Ðжȡ£Ò»¸ö¾ßÓÐ N ¸ö¶Á¿Í»§¶ËµÄ¶ÁÕß×é¿ÉÒÔÒÔ×î´óΪ
N µÄ²¢ÐжÈÀ´Ïû·Ñͬһ¸ö Stream¡£ÕâÑù£¬µ±Ò»¸ö Stream ÖÐµÄ Segment ÊýÁ¿±»¶¯Ì¬Ôö¼Óʱ£¬ÎÒÃÇ¿ÉÒÔÏàÓ¦µØÔö¼ÓͬµÈÊýÁ¿µÄ¶Á¿Í»§¶Ë£¨Í¬Ò»¶ÁÕß×飩À´Ôö¼Ó²¢Ðжȣ»·´Ö®ÒàÈ»£¬µ±
Segment ÊýÁ¿¶¯Ì¬¼õÉÙʱ£¬ÎÒÃÇÒ²¿ÉÒÔ¼õÉÙÏàÓ¦µÄ¶Á¿Í»§¶ËÀ´½ÚÊ¡×ÊÔ´¡£
Stream ¿ÉÒÔ±»ÅäÖÃÎªËæ×Ÿü¶àÊý¾ÝдÈë¶øÔö¼Ó Segment µÄÊýÁ¿£¬²¢ÔÚÊý¾ÝÁ¿Ï½µÊ±ËõС Segment
Êý¡£ ÎÒÃǽ«ÕâÖÖÅäÖóÆÎª Stream µÄ·þÎñ¼¶Ä¿±ê£¨Service Level Objective£¬SLO£©¡£Pravega
¼à¿ØÊäÈëµ½ Stream µÄÊý¾ÝËÙÂÊ£¬²¢¸ù¾Ý SLO ÔÚ Stream Öж¯Ì¬Ôö¼Ó»òÒÆ³ý Segment¡£
µ±ÐèÒªÔö¼Ó Segment ʱ£¬Pravega »áͨ¹ý²ð·Ö Segment À´Éú³É¸ü¶àµÄ Segment£»¶øµ±ÐèÒª¼õÉÙ
Segment ÊýÁ¿Ê±£¬Pravega ͨ¹ýºÏ²¢ Segment À´¼õÉÙ Segment ÊýÁ¿¡£
ʵ¼ÊÓ¦ÓÃÖУ¬Ó¦ÓóÌÐò»¹¿ÉÒÔ¶Ô½Ó Pravega ÌṩµÄÔªÊý¾Ý£¬¸ù¾Ý Stream µÄÉìËõÐÔÀ´×öÏàÓ¦µÄÉìËõ¡£¾ÙÀýÀ´½²£¬Flink
¿ÉÒÔ¸ù¾ÝÔªÊý¾ÝÖÐµÄ Segment ÊýÁ¿À´µ÷Õû Flink ×÷ÒµµÄ²¢Ðжȣ¬»òÕß¿ÉÒÔÒÀÀµÈÝÆ÷ƽ̨£¨Èç
Cloud Foundry£¬Mesos/Marathon£¬Kubernetes »òÕß Docker
Stack£©ÌṩµÄ¶¯Ì¬À©ËõÈÝ»úÖÆÀ´¶¯Ì¬µ÷ÕûÈÝÆ÷ʵÀýµÄÊýÁ¿£¬ÒÔ´ËÀ´Ó¦¶ÔÊý¾ÝÁ÷Á¿µÄ±ä»¯¡£
ÉîÈëÆÊÎö
Pravega ¸ù¾ÝÒ»ÖÂÐÔÉ¢ÁÐËã·¨½«Â·ÓɼüÉ¢ÁÐÖÁ¡°¼ü¿Õ¼ä¡±£¬¸Ã¼ü¿Õ¼ä±»»®·ÖΪ¶à¸ö·ÖÇø£¬·ÖÇøÊýÁ¿ºÍ Segment
ÊýÁ¿ÏàÒ»Ö£¬Í¬Ê±±£Ö¤Ã¿Ò»¸ö Segment ±£´æ×ÅÒ»×é·ÓɼüÂäÈëÍ¬Ò»Çø¼äµÄʼþ¡£
¸ù¾Ý·Óɼü£¬ÎÒÃǽ«Ò»¸ö Stream ²ð·Ö³ÉÁËÈô¸É¸ö Segment£¬Ã¿Ò»¸ö Segment ±£´æ×ÅÒ»×é·ÓɼüÂäÈëÍ¬Ò»Çø¼äµÄʼþ£¬²¢ÇÒÓµÓÐ×ÅÏàͬµÄ
SLO¡£
ͬʱ£¬Segment ¿ÉÒÔ±»·â±Õ£¨seal£©£¬Ò»¸ö±»·â±ÕµÄ Segment ½«½ûֹдÈë¡£ÕâÒ»¸ÅÄîÔÚ¶¯Ì¬ÉìËõÖн«·¢»ÓÖØÒª×÷Óá£
ʵÀý˵Ã÷ÉìËõ¹ý³Ì
¼ÙÉèij֯ÔìÆóÒµÓÐ 400 ¸ö´«¸ÐÆ÷£¬·Ö±ð±àºÅΪ 0~399£¬ÎÒÃǽ«±àºÅ×öΪ routing key£¬²¢½«ÆäÉ¢Áзֲ¼µ½(0,
1)µÄ¼ü¿Õ¼äÖУ¨Pravega Ò²Ö§³Ö½«·ÇÊýÖµÐ͵Ä·ÓɼüÉ¢Áе½¼ü¿Õ¼äÖУ©¡£Ëæ×Ų¿·Ö´«¸ÐÆ÷´«Ê䯵Âʵı仯£¬ÎÒÃÇÀ´¹Û²ìÆä
Segment µÄ±ä»¯¡£
Èçͼ 1 Ëùʾ£¬ÔÚ 0~1 Çø¼äµÄ¼ü¿Õ¼äÖУ¬Segment µÄºÏ²¢ºÍ²ð·Öµ¼ÖÂÁË·ÓɼüËæ×Åʱ¼äµÄÍÆÒÆ¶ø±»Â·ÓÉÖÁ²»Í¬µÄ
Segment¡£

ͼ 1: Segment µÄºÏ²¢ºÍ²ð·Ö¶Ôʼþ·ÓɵÄÓ°Ïì
ÉÏͼËùʾµÄ Stream ´Óʱ¼ä t0 ¿ªÊ¼£¬Ëü±»ÅäÖóɾßÓж¯Ì¬ÉìËõ¹¦ÄÜ¡£ Èç¹ûдÈëÁ÷µÄÊý¾ÝËÙÂʲ»±ä£¬Ôò¶ÎµÄÊýÁ¿²»»á¸Ä±ä¡£
ÔÚʱ¼äµã t1£¬Pravega ¼à¿ØÆ÷×¢Òâµ½Êý¾ÝËÙÂʵÄÔö¼Ó£¬²¢ÇÒÑ¡Ôñ½« Segment 1 ²ð·Ö³É
Segment 2 ºÍ Segment 3 Á½²¿·Ö£¬Õâ¸ö¹ý³ÌÎÒÃdzÆÖ®Îª Scale-up ʼþ¡£ÔÚ
t1 ֮ǰ£¬Â·ÓɼüÉ¢Áе½¼ü¿Õ¼äÉϰ벿µÄ£¨ÖµÎª 200~399£©µÄʼþ½«±»·ÅÖÃÔÚ Segment 1
ÖУ¬¶øÂ·ÓɼüÉ¢Áе½¼ü¿Õ¼äϰ벿µÄ£¨ÖµÎª 0~199£©µÄʼþÔò±»·ÅÖÃÔÚ Segment 0 ÖС£ÔÚ t1
Ö®ºó£¬Segment 1 ±»²ð·Ö³É Segment 2 ºÍ Segment 3£»Segment 1
Ôò±»·â±Õ£¬¼´²»ÔÙ½ÓÊÜдÈë¡£ ´Ëʱ£¬¾ßÓзÓɼü 300 ¼°ÒÔÉϵÄʼþ±»Ð´Èë Segment 3£¬¶øÂ·ÓɼüÔÚ
200 ºÍ 299 Ö®¼äµÄʼþ½«±»Ð´Èë Segment 2¡£Segment 0 ÔòÈÔÈ»±£³Ö½ÓÊÜÓë t1
֮ǰÏàͬ·¶Î§µÄʼþ¡£
ÔÚ t2 ʱ¼äµã£¬ÎÒÃÇ¿´µ½ÁíÒ»¸ö Scale-up ʼþ¡£Õâ´Îʼþ½« Segment 0 ²ð·Ö³É
Segment 4 ºÍ Segment 5¡£Segment 0 Òò´Ë±»·â±Õ¶ø²»ÔÙ½ÓÊÜдÈë¡£
¾ßÓÐÏàÁÚ·ÓɼüÉ¢ÁпռäµÄ Segment Ò²¿ÉÒÔ±»ºÏ²¢£¬±ÈÈçÔÚ t3 ʱ¼äµã£¬Segment 2
ºÍ Segment 5 ±»ºÏ²¢³ÉΪ Segment 6£¬Segment 2 ºÍ Segment 5
¶¼»á±»·â±Õ£¬¶ø t3 Ö®ºó£¬Ö®Ç°Ð´Èë Segment 2 ºÍ Segment 5 µÄʼþ£¬Ò²¾ÍÊÇ·ÓɼüÔÚ
100 ºÍ 299 Ö®¼äµÄʼþ½«±»Ð´ÈëÐ嵀 Segment 6 ÖС£ºÏ²¢Ê¼þµÄ·¢Éú±íÃ÷ Stream
ÉϵĸºÔØÕýÔÚ¼õÉÙ¡£

ͼ 2: ʼþµÄ·ÓÉ
Èçͼ 2£¬ÔÚ¡°ÏÖÔÚ¡±Õâ¸öʱ¿Ì£¬Ö»ÓÐ Segment 3£¬6 ºÍ 4 ´¦Óڻ״̬£¬²¢ÇÒËùÓлîÔ¾µÄ
Segment ½«»á¸²¸ÇÕû¸ö¼ü¿Õ¼ä¡£ÔÚÉÏÊöµÄ¹æÔò 2 ºÍ 3 ÖУ¬¼´Ê¹ÊäÈë¸ºÔØ´ïµ½Á˶¨ÒåµÄãÐÖµ£¬Pravega
Ò²²»»áÁ¢¼´´¥·¢ scale-up/down µÄʼþ£¬¶øÊÇÐèÒª¸ºÔØÔÚÒ»¶Î×ã¹»³¤µÄʱ¼äÄÚ³¬Ô½²ßÂÔãÐÖµ£¬ÕâÒ²±ÜÃâÁ˹ýÓÚÆµ·±µÄÉìËõ²ßÂÔÓ°Ïì¶ÁдÐÔÄÜ¡£
ÅäÖÃÉìËõ¹æÔò
ÎÒÃÇÔÚ´´½¨ Stream ʱ£¬»áʹÓÃÉìËõ¹æÔòÀ´ÅäÖà Stream£¬¸Ã¹æÔò¶¨ÒåÁË Stream ÈçºÎÏìÓ¦Æä¸ºÔر仯¡£
Ŀǰ Stream Ö§³ÖÈýÖÖÅäÖùæÔò£º
¹Ì¶¨¹æÔò£¬¼´ÎÞ¶¯Ì¬ÉìËõ¡£ Ôڴ˹æÔòÏ£¬Segment µÄÊýÁ¿²»Ëæ¸ºÔØ¶ø±ä»¯¡£ÆäÅäÖýӿÚÈçÏ£º
static ScalingPolicy
fixed(int numSegments) |
ÆäÖÐnumSegmentÖ¸ stream Öй̶¨µÄ segment ÊýÁ¿
»ùÓÚ´óСµÄÉìËõ¹æÔò¡£Ôڴ˹æÔòÏ£¬µ±Ð´Èë Stream µÄÿÃë×Ö½ÚÊý³¬¹ýij¸öÄ¿±êËÙÂÊʱ£¬Segment
µÄÊýÁ¿½«Ôö¼Ó£¬²¿·Ö Segment ½«±»²ð·Ö£»Èç¹ûËüµÍÓÚij¸ö³Ì¶È£¬Ôò Segment ÊýÁ¿½«¼õÉÙ£¬²¿·Ö
Segment ½«±»ºÏ²¢¡£ÆäÅäÖýӿÚÈçÏ£º
static ScalingPolicy
byEventRate (int targetRate, int scaleFactor,
int minNumSegments)
|
ÆäÖÐtargetRateָÿ¸ö segment ËùÄܳÐÊܵÄ×î´ó¸ºÔØ£¨Ã¿ÃëµÄ event ÊýÁ¿£©£¬scaleFactorÊÇָÿһ´Î
scale-up ʼþÖеķÖÁÑϵÊý£¬¼´ segment Ò»·ÖΪ¼¸£¬ÈçÉÏÀýÓ¦ÉèΪ 2£¬minNumSegmentsÖ¸
stream ÖÐËùÓÐµÄ segment ÊýÁ¿µÄ×îСֵ£¬ÓÃÒÔ·ÀÖ¹¹ý¶È scale-down¡£
»ùÓÚʼþÊýµÄÉìËõ¹æÔò¡£´Ë¹æÔòÓë¹æÔò 2.ÏàËÆ£¬²»Í¬µãÔÚËüÊÇÓÃʼþÊý¶ø²»ÊÇ×Ö½ÚÊýÀ´×÷ΪÉìËõµÄÅж¨ÒÀ¾Ý¡£ÆäÅäÖýӿÚÈçÏ£º
static ScalingPolicy
byDataRate (int targetKBps, int scaleFactor, int
minNumSegments)
|
ÆäÖÐtargetKBpsָÿ¸ö segment ËùÄܳÐÊܵÄ×î´ó¸ºÔØ£¨Ã¿ÃëÊý¾ÝÁ¿´óС£¬ÒÔ KB ¼ÆÊý£©£¬ÆäËûͬÉÏ¡£
ʹÓÃʱ£¬ÔÚ´´½¨ Stream ʱ£¬½«¶ÔÓ¦µÄScalingPolicy¶ÔÏ󴫵ݸø Stream µÄÅäÖöÔÏóStreamConfig¼´¿É¡£
StreamManager
streamManager = StreamManager.create( controllerURI);
StreamConfiguration streamConfig = StreamConfiguration.builder()
.scalingPolicy (ScalingPolicy.byEventRate(100,
2, 1))
.build();
streamManager.createStream (scope, streamName,
streamConfig);
|
¶Áд¿Í»§¶ËµÄµ¯ÐÔ¶ÀÁ¢ÉìËõ
Pravega ´ÓÉè¼Æ³õʼ¾ÍÖ¼ÔÚ½â¾öÁ÷ʽÊý¾ÝµÄ¶Áд¿Í»§¶Ë¶ÀÁ¢À©Õ¹ÎÊÌ⣬ÒÔÇó´ïµ½¶ÁдÀ©Õ¹¾ßÓе¯ÐÔ£¬»¥²»Ó°Ïì¡£ÎÒÃÇÀ´¿´Ò»ÏÂÒÔÏÂÁ½ÖÖ³¡¾°£º
³¡¾° 1£ºÐ´ËÙÂÊ<´¦ÀíËÙÂÊ

ͼ 3: дËÙÂÊ < ´¦ÀíËÙÂÊ
ÔÚͼ 3 ÖУ¬´¦ÀíËÙ¶È´óÓÚдÈëËÙ¶È£¬ËùÒÔËäȻֻÓÐÒ»¸öд¿Í»§¶Ë£¬ÎÒÃÇÈÔÈ»¿ÉÒÔ½« Stream ²ð·Ö³É¶à¸ö
Segment£¬ÓɶÁ¿Í»§¶Ë reader#1 À´¶Á·ÓɼüÇø¼äΪ ka ¡ kc µÄʼþ£¬¶ø¿Í»§¶Ë reader#2
¶Á·ÓɼüÇø¼äΪ kd ¡ kf µÄʼþ¡£ÔÚͬһ¶ÁÕß×飨Reader Group£©ÄڵĶÁ¿Í»§¶Ë»á¸ù¾Ý×ÔÉí¶Á¿Í»§¶ËÊýÁ¿£¬×Ô¶¯ÒÔ¸ºÔؾùºâµÄ·½Ê½¶ÔÓ¦µ½Áãµ½¶à¸ö²»Í¬µÄ
segment ʵÏÖ²¢ÐеĶÁ¡£¶ø Pravega µÄµ¯ÐÔÉìËõ»úÖÆÒ²ÔÊÐí¶ÁÕß×é¸ú×Ù segment µÄËõ·Å²¢²ÉÈ¡Êʵ±µÄ´ëÊ©£¬ÀýÈ磺ÔÚÔËÐÐʱÌí¼Ó»òɾ³ý¶Á¿Í»§¶ËʵÀý£¬Ê¹Õû¸öϵͳÄܹ»ÒÔе÷µÄ·½Ê½¶¯Ì¬À©Õ¹¡£Pravega
ÍŶÓÒѾºÍ Flink ÉçÇøºÏ×÷£¬Í¨¹ý¼àÌý segment ÊýÁ¿¸Ä±ä Flink ¶ÁÈ¡ºÍ´¦Àí Pravega
Êý¾ÝµÄ²¢Ðжȣ¬ÊµÏÖÁË Flink Pravega Source µÄ¶¯Ì¬ÉìËõ¡£
³¡¾° 2£º дËÙÂÊ > ´¦ÀíËÙÂÊ

ͼ 4: дËÙÂÊ > ´¦ÀíËÙÂÊ
ÔÚͼ 4 ÖУ¬´¦ÀíËÙ¶ÈСÓÚдÈëËÙ¶È£¬ËùÒÔÎÒÃÇ¿ÉÒÔÔÚд¿Í»§¶Ë½øÐв¢Ðл¯£¨ÓÉÓ¦ÓÃÍê³É£©£¬µ«Ö»Ðè·ÖÅäÒ»¸ö¶Á¿Í»§¶ËÀ´¶Á¡£ÓÉÓÚÓÐÁË
stream ºÍ segment µÄ³éÏó£¬Êý¾Ý´æ´¢µÄÕæÕýµÄ·ÖÇø»áÔÚ stream ÄÚ²¿ÊµÏÖ£¬Ö»ÒªÂ·Óɼü²»·¢Éú¸Ä±ä£¬Ð´¿Í»§¶ËµÄ²¢ÐС¢Êý¾ÝÁ¿µÄÔö¼Ó²¢²»»áÓ°ÏìÊý¾ÝµÄÕý³£·ÖÇø¡£
ÏÖʵÇé¿öÏ£¬ÎÒÃÇÍùÍù»á´¦ÓÚÉÏÊöÁ½ÖÖÇé¿öÖ®¼ä£¬²¢ÇÒ°éËæ×ÅÊý¾ÝÔ´µÄ±ä»¯ºÍʱ¼äµÄÍÆ½ø¶ø·¢Éú¸Ä±ä¡£¶Ôд¿Í»§¶ËÀ´Ëµ£¬Segment
µÄÍØÆËÊÇ͸Ã÷µÄ£¬ËüÃÇÖ»Ð踺Ôð·ÓɼüµÄ·ÖÇø¡£¶Ô¶Á¿Í»§¶ËÀ´Ëµ£¬Ö»Ðè¼òµ¥Ö¸Ïò Stream£¬¶ø Segment
µÄ¶¯Ì¬±ä»¯»á×Ô¶¯·´À¡¸ø¶Á¿Í»§¶Ë¡£
ÖÁ´Ë£¬¶Á¿Í»§¶ËºÍд¿Í»§¶Ë¿ÉÒÔ·Ö±ð¶ÀÁ¢µØ½øÐе¯ÐÔËõ·Å£¬¶ø²»Êܱ˴ËÓ°Ïì¡£
ÕæÊµÊý¾ÝÓÃÀý
ÎÒÃÇʹÓÃÓÉÃÀ¹úŦԼÊÐÕþ¸®ÊÚȨ¿ªÔ´µÄ³ö×â³µÊý¾Ý
£¬°üÀ¨ÉÏϳµÊ±¼ä£¬µØµã£¬Ðг̾àÀ룬ÖðÏîÆ±¼Û£¬¸¶¿îÀàÐÍ¡¢³Ë¿ÍÊýÁ¿µÈ×ֶΡ£ÎÒÃǰÑÀúÊ·Êý¾Ý¼¯Ä£Äâ³ÉÁËÁ÷ʽÊý¾ÝʵʱµØÐ´Èë
Pravega¡£ËùÈ¡µÄÊý¾Ý¼¯º¸ÇµÄÊÇ 2015 Äê 3 ÔµĻÆÉ«³ö×â³µµÄÐгÌÊý¾Ý£¬ÆäÊý¾ÝÁ¿Îª 1.9GB£¬°üÀ¨½üǧÍòÌõ¼Ç¼£¬Ã¿Ìõ¼Ç¼
17 ¸ö×ֶΡ£ÎÒÃÇѡȡÁËÆäÖÐ 12 ¸öСʱµÄÊý¾Ý£¬ÐγÉÈçͼ 4 ËùʾÊý¾Ýͳ¼Æ£º
»ÆÉ«ºÍÂÌÉ«µÄ³ö×â³µÐг̼Ǽ°üÀ¨²¶»ñÌá»õºÍϳµÈÕÆÚ/ʱ¼ä£¬½ÓËͺÍϳµµØµã£¬Ðг̾àÀ룬ÖðÏîÆ±¼Û£¬·ÑÂÊÀàÐÍ£¬¸¶¿îÀàÐͺÍ˾»ú±¨¸æµÄ³Ë¿ÍÊýÁ¿µÄ×ֶΡ£ÎÒÃǰÑÀúÊ·Êý¾Ý¼¯Ä£Äâ³ÉÁËÁ÷ʽÊý¾ÝʵʱµØÐ´Èë
Pravega¡£ËùÈ¡µÄÊý¾Ý¼¯º¸ÇµÄÊÇ 2015 Äê 3 ÔµĻÆÉ«³ö×â³µµÄÐгÌÊý¾Ý£¬ÆäÊý¾ÝÁ¿Îª 1.9GB£¬°üÀ¨½üǧÍòÌõ¼Ç¼£¬Ã¿Ìõ¼Ç¼
17 ¸ö×ֶΡ£ÎÒÃÇѡȡÁËÆäÖÐ 12 ¸öСʱµÄÊý¾Ý£¬ÐγÉÈçͼ 5 ËùʾÊý¾Ýͳ¼Æ£º

ͼ 5: ³ö×â³µÊý¾ÝÁ÷Á¿¼Ç¼
ÓÉÉÏͼÎÒÃÇ¿ÉÒԹ۲쵽£¬Êý¾ÝÁ÷Á¿ÔÚÔçÉÏ 4 µã×óÓÒ´¦Óڹȵ㣬¶øÔÚÔ糿 9 µã×óÓÒ´ïµ½·åÖµ¡£·åÖµÁ÷Á¿µÄдÈë×Ö½ÚÊý´óԼΪ¹ÈµãÁ÷Á¿µÄ
10 ±¶¡£ÎÒÃǽ« Stream µÄÉìËõ¹æÔòÅäÖÃΪÉÏÊö¹æÔò 2£¨»ùÓÚ´óСµÄÉìËõ¹æÔò£©¡£
Ïà¶ÔÓ¦µØ£¬Stream µÄ Segment ÈȵãͼÈçͼ 6 Ëùʾ¶¯Ì¬±ä»¯£º

ͼ 6: Segment Èȵãͼ
´ÓÉÏͼ¿ÉÒÔ¿´³ö£¬´ÓÍí 11 µãÖÁÁ賿 2 µã£¬Segment Ö𽥺ϲ¢£»´ÓÔ糿 6 µãÖÁ 10 µã£¬Segment
Öð²½²ð·Ö¡£´Ó²ð·Ö´ÎÊýÀ´¿´£¬´ó²¿·Ö Segment ×ܹ²²ð·Ö 3 ´Î£¬Ð¡²¿·Ö²ð·Ö 4 ´Î£¬ÕâÒ²Ó¡Ö¤ÁËÁ÷Á¿·åÖµ
10 ±¶Óڹȵ׵Äͳ¼ÆÖµ£¨3 < lg10 < 4£©¡£
ÎÒÃÇʹÓóö×â³µÐгÌÖеijö·¢µã×ø±êλÖÃÀ´×÷Ϊ·Óɼü¡£µ±¸ß·åÀ´ÁÙʱ£¬·±Ã¦µØ¶Î²úÉúµÄ´óÁ¿Ê¼þ»áµ¼Ö Segment
±»²ð·Ö£¬´Ó¶ø»áÓиü¶àµÄ¶Á¿Í»§¶ËÀ´½øÐд¦Àí£»µ±¹È·åÀ´ÁÙʱ£¬·Ç·±Ã¦µØ¶Î²úÉúµÄʼþËùÔÚµÄ Segment
»á½øÐкϲ¢£¬²¿·ÖµÄ¶Á¿Í»§¶Ë»áÏÂÏߣ¬Ê£ÏµĶÁ¿Í»§¶Ë»á´¦Àí¸ü¶àµØÀíÇø¿éÉϲúÉúµÄʼþ¡£
×ܽá
Pravega µÄ¶¯Ì¬ÉìËõ»úÖÆ¿ÉÒÔÈÃÓ¦Óÿª·¢ºÍÔËάÈËÔ±²»±Ø¹ØÐÄÒòÁ÷Á¿±ä»¯¶øµ¼ÖµķÖÇø±ä»¯ÐèÒª£¬ÎÞÐèÊÖ¶¯µ÷¶È¼¯Èº¡£·ÖÇøµÄÁ÷Á¿¼à¿ØºÍÏàÓ¦±ä»¯ÓÉ
Pravega À´½øÐУ¬´Ó¶øÊ¹Á÷Á¿±ä»¯Äܹ»ÊµÊ±¶øÇÒÆ½»¬µØÌåÏÖµ½Ó¦ÓóÌÐòµÄÉìËõÉÏ¡£
¶ÀÁ¢ÉìËõ»úÖÆÊ¹µÃÉú²úÕߺÍÏû·ÑÕß¿ÉÒÔ¸÷×Ô¶ÀÁ¢µØ½øÐÐÉìËõ£¬¶ø²»Ó°Ïì±Ë´Ë¡£Õû¸öÊý¾Ý´¦Àí¹ÜµÀÒò´Ë±äµÃ¸»Óе¯ÐÔ£¬¿ÉÒÔÓ¦¶ÔʵʱÊý¾ÝµÄ²»¶Ï±ä»¯£¬½áºÏʵ¼Ê´¦ÀíÄÜÁ¦¶ø×ö³ö×îΪÊÊʱµÄ·´Ó¦¡£
|