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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
È˹¤ÖÇÄÜÔÚÏßÌØÕ÷ϵͳÖеÄÊý¾Ý´æÈ¡¼¼Êõ
 
À´Ô´£º36´óÊý¾Ý ·¢²¼ÓÚ£º 2017-8-24
  2979  次浏览      28
 

Ò»¡¢ÔÚÏßÌØÕ÷ϵͳ

Ö÷Á÷»¥ÁªÍø²úÆ·ÖУ¬²»ÂÛÊǾ­µäµÄ¼ÆËã¹ã¸æ¡¢ËÑË÷¡¢ÍƼö£¬»¹ÊÇ´¹Ö±ÁìÓòµÄ·¾¶¹æ»®¡¢Ë¾»úÅɵ¥¡¢ÎïÁÏÖÇÄÜÉè¼Æ£¬½¨Á¢ÔÚÈ˹¤ÖÇÄܼ¼ÊõÖ®ÉϵIJßÂÔϵͳÒѾ­ÉîÈëµ½Á˲úÆ·¹¦Äܵķ½·½ÃæÃæ¡£ÏàÓ¦µÄ£¬Ã¿Ò»¸ö²ßÂÔϵͳ¶¼Àë²»¿ª´óÁ¿µÄÔÚÏßÌØÕ÷£¬À´Ö§³ÅÄ£ÐÍËã·¨»òÈ˹¤¹æÔò¶ÔÇëÇóµÄ¾«×¼ÏìÓ¦£¬Òò´ËÌØÕ÷ϵͳ³ÉΪÁËÖ§³ÖÏßÉϲßÂÔϵͳµÄÖØÒªÖ§Öù¡£ÃÀÍŵãÆÀ¼¼Êõ²©¿ÍÖ®Ç°ÍÆ³öÁË¶àÆª¹ØÓÚÌØÕ÷ϵͳµÄÎÄÕ£¬Èç¡¶»úÆ÷ѧϰÖеÄÊý¾ÝÇåÏ´ÓëÌØÕ÷´¦Àí×ÛÊö¡·²àÖØÓÚ½éÉÜÌØÕ÷Éú²ú¹ý³ÌÖеÄÀëÏßÊý¾ÝÇåÏ´¡¢ÍÚ¾ò·½·¨£¬¡¶ÒµÎñ¸³ÄÜÀûÆ÷Ö®ÍâÂôÌØÕ÷µµ°¸¡·²àÖØÓÚÓò»Í¬µÄ´æ´¢ÒýÇæ½â¾ö²»Í¬µÄÌØÕ÷Êý¾Ý²éѯÐèÇó¡£¶ø¡¶ÍâÂôÅÅÐòÏµÍ³ÌØÕ÷Éú²ú¿ò¼Ü¡·²àÖØ½éÉÜÁËÌØÕ÷¼ÆËã¡¢Êý¾Ýͬ²½ºÍÏßÉϲéѯµÄÌØÕ÷Éú²úPipeline¡£

±¾ÎÄÒÔÃÀÍžÆÂÃÔÚÏßÌØÕ÷ϵͳΪԭÐÍ£¬Öصã´ÓÏßÉÏÊý¾Ý´æÈ¡½Ç¶È½éÉÜһЩʵ¼ùÖеÄͨÓü¼Êõµã£¬ÒÔ½â¾öÔÚÏßÌØÕ÷ϵͳÔڸ߲¢·¢ÇéÐÎÏÂÃæÁÙµÄÎÊÌâ¡£

1.1 ÔÚÏßÌØÕ÷ϵͳ¿ò¼Ü¡ª¡ªÉú²ú¡¢µ÷¶È¡¢·þÎñÒ»Ì廯

ÔÚÏßÌØÕ÷ϵͳ¾ÍÊÇͨ¹ýϵͳÉÏÏÂÎÄ£¬»ñµÃÏà¹ØÌØÕ÷Êý¾ÝµÄÔÚÏß·þÎñ¡£Æä¹¦ÄÜ¿ÉÒÔÊÇÒ»¸ö¼òµ¥µÄKey-Value(KV)ÐÍ´æ´¢£¬¶ÔÏßÉÏÌá¹©ÌØÕ÷²éѯ·þÎñ£¬Ò²¿ÉÒÔ·øÉ䵽ͨÓÃÌØÕ÷Éú²ú¡¢Í³Ò»ÌØÕ÷µ÷¶È¡¢ÊµÊ±ÌØÕ÷¼à¿ØµÈÈ«Ì×ÌØÕ÷·þÎñÌåϵ¡£¿ÉÒÔ˵£¬¼¸¸öÈËÈվͿÉÒÔÍê³ÉÒ»¸ö¼òµ¥ÄÜÓõÄÌØÕ÷ϵͳ£¬µ«ÔÚ¸´ÔÓµÄÒµÎñ³¡¾°ÖУ¬°ÑÕâ¼þÊÂ×öµÃ¸ü·½±ã¡¢¿ìËÙºÍÎȶ¨£¬È´ÐèÒªÒ»¸öÍŶӳ¤ÆÚµÄ»ýÀÛ¡£

ÒÔÉϽṹͼΪһÌå»¯ÌØÕ÷ϵͳµÄ¸Åò£¬×Ôµ×ÏòÉÏΪÊý¾ÝÁ÷¶¯µÄ·½Ïò£¬¸÷²¿·ÖµÄ¹¦ÄÜÈçÏ£º

Êý¾ÝÔ´£ºÓÃÓÚ¼ÆËãÌØÕ÷µÄԭʼÊý¾Ý¡£¸ù¾ÝÒµÎñÐèÇó£¬Êý¾ÝÀ´Ô´¿ÉÄÜÊÇ·Ö²¼Ê½Îļþϵͳ(ÈçHive)£¬¹ØÏµÐÍÊý¾Ý¿â(ÈçMySQL)£¬ÏûÏ¢¶ÓÁÐ(ÈçKafka)µÈ¡£

ÌØÕ÷Éú²ú£º¸Ã²¿·Ö¸ºÔð´Ó¸÷ÖÖÊý¾ÝÔ´¶ÁÈ¡Êý¾Ý£¬Ìṩ¼ÆËã¿ò¼ÜÓÃÓÚÉú²úÌØÕ÷¡£Éú²ú¿ò¼ÜÐèÒª¸ù¾ÝÊý¾ÝÔ´µÄÀàÐÍ¡¢²»Í¬µÄ¼ÆËãÐèÇó×ÛºÏÉè¼Æ£¬Òò´Ë»áÓжàÌ×Éú²ú¿ò¼Ü¡£

ÌØÕ÷µ¼È룺¸Ã²¿·Ö¸ºÔ𽫼ÆËãºÃµÄÌØÕ÷дÈëµ½ÏßÉÏ´æ´¢¹©ÌØÕ÷·þÎñ¶ÁÈ¡¡£¸Ã²¿·ÖÖ÷Òª¹Ø×¢µ¼Èë×÷ÒµÖ®¼äµÄÒÀÀµ¡¢²¢·¢Ð´ÈëµÄËÙ¶ÈÓëÒ»ÖÂÐÔµÈÎÊÌâ¡£

ÌØÕ÷·þÎñ£º¸Ã²¿·ÖΪÕû¸öÌØÕ÷ϵͳµÄºËÐŦÄܲ¿·Ö£¬ÌṩÔÚÏßÌØÕ÷µÄ´æÈ¡·þÎñ£¬Ö±½Ó·þÎñÓÚÉϲã²ßÂÔϵͳ¡£

ÌØÕ÷µÄÉúÃüÖÜÆÚ°´ÕÕÉÏÊö¹ý³Ì£¬¿ÉÒÔ³éÏóΪÎå¸ö²½Ö裺¶Á¡¢Ë㡢д¡¢´æ¡¢È¡¡£Õû¸öÁ÷³ÌÓÚÌØÕ÷ϵͳ¿ò¼ÜÄÚ³ÉΪһ¸öÕûÌ壬×÷ÎªÌØÕ÷¹¤³ÌµÄÒ»Ì廯½â¾ö·½°¸¡£±¾ÎÄÖ÷ÒªÎ§ÈÆÌØÕ÷·þÎñµÄºËÐŦÄÜ¡°´æ¡±¡¢¡°È¡¡±£¬½éÉÜһЩͨÓõÄʵ¼ù¾­Ñé¡£ÌØÕ÷ϵͳµÄÑÓÉ첿·Ö£¬ÈçÌØÕ÷Éú²ú¡¢ÏµÍ³¿ò¼ÜµÈÖ÷Ìâ»áÔÚºóÐøÎÄÕÂÖÐ×öÏêϸ½éÉÜ¡£

1.2 ÌØÕ÷ϵͳµÄºËÐÄ¡ª¡ª´æÓëÈ¡

¼òµ¥À´Ëµ£¬¿ÉÒÔÈÏÎªÌØÕ÷ϵͳµÄºËÐŦÄÜÊÇÒ»¸ö´óºÅµÄHashMap£¬ÓÃÓÚ´æ´¢ºÍ¿ìËÙÌáȡÿ´ÎÇëÇóÖÐÏà¹ØÎ¬¶ÈµÄÌØÕ÷¼¯ºÏ¡£È»¶øÊµ¼ÊÇé¿ö²¢²»ÏñHashMapÄÇÑù¼òµ¥£¬ÒÔÎÒÃǵÄͨÓÃÔÚÏßÌØÕ÷ϵͳ(Datahub)µÄϵͳָ±êΪÀý£¬ËüµÄºËÐŦÄÜÖ÷ÒªÐèÃæ¶Ô´æ´¢Óë¶ÁÈ¡·½ÃæµÄÌôÕ½£º

¸ß²¢·¢£º²ßÂÔÏµÍ³ÃæÏòÓû§¶Ë£¬·þÎñ¶Ë·åÖµQPS³¬¹ý1Íò£¬Êý¾Ý¿â·åÖµQPS³¬¹ý100Íò(ÅúÁ¿ÇëÇóÔì³É)¡£

¸ßÍÌÍ£ºÃ¿´ÎÇëÇó¿ÉÄܰüº¬ÉÏÇ§Î¬ÌØÕ÷£¬ÍøÂçIO¸ß¡£·þÎñ¶ËÍøÂç³ö¿ÚÁ÷Á¿¾ùÖµ500Mbps£¬·åֵΪ1.5Gbps¡£

´óÊý¾Ý£ºËäÈ»ÏßÉÏÐèҪʹÓõÄÌØÕ÷Êý¾Ý²»»áÏñÀëÏßHive¿âÄÇÑùÅӴ󣬵«Êý¾ÝÌõÊýÒ²»á³¬¹ý10ÒÚ£¬×Ö½ÚÁ¿»á´ïµ½TB¼¶¡£

µÍÑÓ³Ù£ºÃæ¶ÔÓû§µÄÇëÇó£¬Îª±£³ÖÓû§ÌåÑ飬½Ó¿ÚµÄÑÓ³ÙÒª¾¡¿ÉÄܵͣ¬·þÎñ¶ËTP99Ö¸±êÐèÒªÔÚ10msÒÔÏ¡£

ÒÔÉÏÖ¸±êÊý×Ö½öÊÇÒÔÎÒÃÇϵͳ×÷Ϊ²Î¿¼£¬Êµ¼Ê¸÷¸ö²¿ÃÅ¡¢¹«Ë¾µÄÌØÕ÷ϵͳ¹æÄ£¿ÉÄܲî±ðºÜ´ó£¬µ«ÎÞÂÛÒ»¸öÌØÕ÷ϵͳµÄ¹æÄ£ÔõÑù£¬ÆäϵͳºËÐÄÄ¿±ê±Ø¶¨ÊÇ¿¼ÂÇ£º¸ß²¢·¢¡¢¸ßÍÌÍ¡¢´óÊý¾Ý¡¢µÍÑÓ³Ù£¬Ö»²»¹ý¸÷Óв»Í¬µÄÓÅÏȼ¶°ÕÁË¡£µ±ÏµÍ³µÄÓÅ»¯·½ÏòÊǶàÄ¿±êʱ£¬ÎÒÃDz»¿ÉÄܶÀÁ¢µÄÓÃÈκÎÒ»ÖÖ·½Ê½£¬ÔÚÓÐÏÞ×ÊÔ´µÄÇé¿öÏÂ×öµ½ÃæÃæ¾ãµ½¡£Áô¸øÎÒÃǵÄÊÇÒµÎñ×îÖØÒªµÄÐèÇóÌØÐÔ£¬ÒÔ¼°¶ÔÓ¦ÕâÐ©ÌØÐԵĽâ¾ö·½°¸¡£

¶þ¡¢ÔÚÏßÌØÕ÷´æÈ¡¼¼Êõ

±¾½Ú½éÉÜһЩÔÚÏßÌØÕ÷ϵͳÉϳ£ÓõĴæÈ¡¼¼Êõµã£¬ÒԷḻÎÒÃǵÄÎäÆ÷¿â¡£Ö÷ÒªÄÚÈÝÒ²²¢·ÇÏêϸµÄϵͳÉè¼Æ£¬¶øÊÇһЩ³£¼ûÎÊÌâµÄͨÓü¼Êõ½â¾ö·½°¸¡£µ«ÈçÉϽÚËù˵£¬ÈçºÎ¸ù¾Ý²ßÂÔÐèÇó£¬ÀûÓúÏÊʵļ¼Êõ£¬Öƶ¨¶ÔÓ¦µÄ·½°¸£¬²ÅÊǸ÷λ¼Ü¹¹Ê¦µÄºËÐļÛÖµËùÔÚ¡£

2.1 Êý¾Ý·Ö²ã

ÌØÕ÷×ÜÊý¾ÝÁ¿´ïµ½TB¼¶ºó£¬µ¥Ò»µÄ´æ´¢½éÖÊÒѾ­ºÜÄÑÖ§³ÅÍêÕûµÄÒµÎñÐèÇóÁË¡£¸ßÐÔÄܵÄÔÚÏß·þÎñÄÚ´æ»ò»º´æÔÚÊý¾ÝÁ¿ÉϳÉÁ˱­Ë®³µÐ½£¬·Ö²¼Ê½KV´æ´¢ÄÜÌṩ¸ü´óµÄ´æ´¢¿Õ¼äµ«ÔÚijЩ³¡¾°ÓÖ²»¹»¿ì¡£¿ªÔ´µÄ·Ö²¼Ê½KV´æ´¢»ò»º´æ·½°¸ºÜ¶à£¬±ÈÈçÎÒÃÇÓõ½µÄ¾ÍÓÐRedis/Memcache£¬HBase£¬TairµÈ£¬ÕâЩ¿ªÔ´·½°¸ÓдóÁ¿µÄ¹±Ï×ÕßÔÚΪËüÃǵŦÄÜ¡¢ÐÔÄÜ×ö³ö²»¶ÏŬÁ¦£¬±¾ÎľͲ»¸ü¶à×ÅÄ«ÁË¡£

¶Ô¹¹½¨Ò»¸öÔÚÏßÌØÕ÷ϵͳ¶øÑÔ£¬Êµ¼ÊÉÏÎÒÃÇÐèÒªÀí½âµÄÊÇÎÒÃǵÄÌØÕ÷Êý¾ÝÊÇÔõÑùµÄ¡£ÓеÄÊý¾Ý·Ç³£ÈÈ£¬ÎÒÃÇͨ¹ýÄڴ渱±¾»òÕßÊÇ»º´æÄܹ»ÒÔ¼«Ð¡µÄÄÚ´æ´ú¼Û¸²¸Ç´óÁ¿µÄÇëÇó¡£ÓеÄÊý¾Ý²»ÈÈ£¬µ«ÊÇÒ»µ©·ÃÎÊÒªÇóÎȶ¨¶ø¿ìËÙµÄÏìÓ¦ËÙ¶È£¬Õâʱ»ùÓÚÈ«ÄÚ´æµÄ·Ö²¼Ê½´æ´¢·½°¸¾ÍÊDz»´íµÄÑ¡Ôñ¡£¶ÔÓÚÊý¾ÝÁ¿¼¶·Ç³£´ó£¬»òÕßÔö³¤·Ç³£¿ìµÄÊý¾Ý£¬ÎÒÃÇÐèҪѡÔñÓдÅÅ̶µµ×µÄ´æ´¢·½°¸¡ª¡ªÆäÖÐÓÖÒª¸ù¾Ý¸÷À಻ͬµÄ¶Áд·Ö²¼£¬À´Ñ¡Ôñ´æ´¢¼¼Êõ¡£

µ±ÒµÎñ·¢Õ¹µ½Ò»¶¨²ã´Îºó£¬µ¥Ò»µÄÌØÕ÷ÀàÐͽ«ºÜÄѸ²¸ÇËùÓеÄÒµÎñÐèÇó¡£ËùÒÔÔÚ´æ´¢·½°¸Ñ¡ÐÍÉÏ£¬ÐèÒª¸ù¾ÝÌØÕ÷ÀàÐͽøÐÐÊý¾Ý·Ö²ã¡£·Ö²ãÖ®ºó£¬²»Í¬µÄ´æ´¢ÒýÇæÍ³Ò»¶Ô²ßÂÔ·þÎñÌá¹©ÌØÕ÷Êý¾Ý£¬ÕâÊDZ£³ÖϵͳÐÔÄܺ͹¦ÄܼæµÃµÄ×î¼Ñʵ¼ù¡£

2.2 Êý¾ÝѹËõ

º£Á¿µÄÀëÏßÌØÕ÷¼ÓÔØµ½ÏßÉÏϵͳ²¢ÔÚϵͳ¼äÁ÷ת£¬¶ÔÄÚ´æ¡¢ÍøÂç´ø¿íµÈ×ÊÔ´¶¼ÊDz»Ð¡µÄ¿ªÏú¡£Êý¾ÝѹËõÊǵäÐ͵ÄÒÔʱ¼ä»»¿Õ¼äµÄÀý×Ó£¬ÍùÍùÄܹ»³É±¶¼õÉÙ¿Õ¼äÕ¼Ó㬶ÔÓÚÏßÉÏÕä¹óµÄÄÚ´æ¡¢´ø¿í×ÊÔ´À´ËµÊÇĪ´óµÄ¸£Òô¡£Êý¾ÝѹËõ±¾ÖÊ˼ÏëÊǼõÉÙÐÅÏ¢ÈßÓ࣬Õë¶ÔÌØÕ÷ϵͳÕâ¸öÓ¦Óó¡¾°£¬ÎÒÃÇ»ýÀÛÁËһЩʵ¼ù¾­ÑéÓë´ó¼Ò·ÖÏí¡£

2.2.1 ´æ´¢¸ñʽ

ÌØÕ÷Êý¾Ý¼òµ¥À´Ëµ¼´ÌØÕ÷ÃûÓëÌØÕ÷Öµ¡£ÒÔÓû§»­ÏñΪÀý£¬Ò»¸öÓû§ÓÐÄêÁä¡¢ÐԱ𡢰®ºÃµÈÌØÕ÷¡£´æ´¢ÕâÑùµÄÌØÕ÷Êý¾Ýͨ³£À´ËµÓÐÏÂÃæ¼¸ÖÖ·½Ê½£º

JSON¸ñʽ£¬ÍêÕû±£ÁôÌØÕ÷Ãû-ÌØÕ÷Öµ¶Ô£¬ÒÔJSON×Ö·û´®µÄÐÎʽ±íʾ¡£

ÔªÊý¾Ý³éÈ¡£¬ÈçHiveÒ»Ñù£¬ÌØÕ÷Ãû(ÔªÊý¾Ý)µ¥¶À±£´æ£¬ÌØÕ÷Êý¾ÝÒÔString¸ñʽµÄÌØÕ÷ÖµÁбí±íʾ¡£

ÔªÊý¾Ý¹Ì»¯£¬Í¬Ñù½«ÔªÊý¾Ýµ¥¶À±£´æ£¬µ«ÊDzÉÓÃÇ¿ÀàÐͶ¨Òåÿ¸öÌØÕ÷£¬ÈçInteger¡¢DoubleµÈ¶ø·ÇͳһµÄStringÀàÐÍ¡£

ÈýÖÖ¸ñʽ¸÷ÓÐÓÅÁÓ£º

JSON¸ñʽµÄÓŵãÔÚÌØÕ÷ÊýÁ¿¿ÉÒÔÊDZ䳤µÄ¡£ÒÔÓû§»­ÏñΪÀý£¬AÓû§¿ÉÄÜÓÐÄêÁä¡¢ÐÔ±ð±êÇ©¡£BÓû§¿ÉÒÔÓм®¹á¡¢°®ºÃ±êÇ©¡£²»Í¬Óû§±êÇ©ÖÖÀà¿ÉÒÔ²î±ðºÜ´ó£¬¶¼Äܱã½ÝµÄ´æ´¢¡£µ«È±µãÊÇÿ×éÌØÕ÷¶¼Òª´æ´¢ÌØÕ÷Ãû£¬µ±ÌØÕ÷ÖÖÀàͬ¹¹ÐԺܸßʱ£¬»á°üº¬´óÁ¿ÈßÓàÐÅÏ¢¡£

ÔªÊý¾Ý³éÈ¡µÄÌØµãÓëJSON¸ñʽÏà·´£¬ËüÖ»±£ÁôÌØÕ÷Öµ±¾Éí£¬ÌØÕ÷Ãû×÷ΪԪÊý¾Ýµ¥¶À´æ·Å£¬ÕâÑù¼õÉÙÁËÈßÓàÌØÕ÷ÃûµÄ´æ´¢£¬µ«È±µãÊÇÊý¾Ý¸ñʽ±ØÐëÊÇͬ¹¹µÄ£¬¶øÇÒÈç¹ûÐèÒªÔöÉ¾ÌØÕ÷£¬ÐèÒª¸ü¸ÄÔªÊý¾ÝºóË¢ÐÂÕû¸öÊý¾Ý¼¯¡£

ÔªÊý¾Ý¹Ì»¯µÄÓŵãÓëÔªÊý¾Ý³éÈ¡Ïàͬ£¬¶øÇÒ¸ü¼Ó½ÚÊ¡¿Õ¼ä¡£È»¶øÆä´æÈ¡¹ý³ÌÐèҪʵÏÖרÓÐÐòÁл¯£¬ÊµÏÖÄѶȺͶÁдËٶȶ¼Óгɱ¾¡£

ÌØÕ÷ϵͳÖУ¬Ò»ÅúÌØÕ÷Êý¾Ýͨ³£À´ËµÊÇÍêȫͬ¹¹µÄ£¬Í¬Ê±ÎªÁËÓ¦¶Ô¸ß²¢·¢ÏµÄÅúÁ¿ÇëÇó£¬ÎÒÃÇÔÚʵ¼ùÖвÉÓÃÁËÔªÊý¾Ý³éÈ¡×÷Ϊ´æ´¢·½°¸£¬Ïà±ÈJSON¸ñʽ£¬ÓÐ2~10±¶µÄ¿Õ¼ä½ÚÔ¼(¾ßÌå±ÈÀýÈ¡¾öÓÚÌØÕ÷ÃûµÄ³¤¶È¡¢ÌØÕ÷¸öÊýÒÔ¼°ÌØÕ÷ÖµµÄÀàÐÍ)¡£

2.2.2 ×Ö½ÚѹËõ

Ìáµ½Êý¾ÝѹËõ£¬ºÜÈÝÒ׾ͻáÏëµ½ÀûÓÃÎÞËð×Ö½ÚѹËõËã·¨¡£ÎÞËðѹËõµÄÖ÷Ҫ˼·Êǽ«Æµ·±³öÏÖµÄģʽ(Pattern)Óý϶̵Ä×Ö½ÚÂë±íʾ¡£¿¼Âǵ½ÔÚÏßÌØÕ÷ϵͳµÄ¶ÁдģʽÊÇÒ»´ÎÈ«Á¿Ð´È룬¶à´ÎÖðÌõ¶ÁÈ¡£¬Òò´ËѹËõÐèÒªÕë¶Ôµ¥ÌõÊý¾Ý£¬¶ø·ÇÈ«¾ÖѹËõ¡£Ä¿Ç°Ö÷Á÷µÄJavaʵÏֵĶÌÎı¾Ñ¹ËõËã·¨ÓÐGzip¡¢Snappy¡¢Deflate¡¢LZ4µÈ£¬ÎÒÃÇ×öÁËÁ½×éʵÑ飬Ö÷Òª´Óµ¥Ìõƽ¾ùѹËõËÙ¶È¡¢µ¥Ìõƽ¾ù½âѹËÙ¶È¡¢Ñ¹ËõÂÊÈý¸öÖ¸±êÀ´¶Ô±ÈÒÔÉϸ÷¸öËã·¨¡£

Êý¾Ý¼¯£ºÎÒÃÇѡȡÁË2·ÝÏßÉÏÕæÊµµÄÌØÕ÷Êý¾Ý¼¯£¬·Ö±ðÈ¡10ÍòÌõÌØÕ÷¼Ç¼¡£¼Ç¼Ϊ´¿Îı¾¸ñʽ£¬Æ½¾ù³¤¶ÈΪ300~400×Ö·û(600~800×Ö½Ú)¡£

ѹËõËã·¨£ºDeflateËã·¨ÓÐ1~9¸öѹËõ¼¶±ð£¬¼¶±ðÔ½¸ß£¬Ñ¹Ëõ±ÈÔ½´ó£¬²Ù×÷ËùÐèÒªµÄʱ¼äÒ²Ô½³¤¡£¶øLZ4Ëã·¨ÓÐÁ½¸öѹËõ¼¶±ð£¬ÎÒÃÇÓÃ0£¬1±íʾ¡£³ý´ËÖ®Í⣬LZ4Óв»Í¬µÄʵÏÖ°æ±¾£ºJNI¡¢Java Unsafe¡¢Java Safe£¬ÏêÏ¸Çø±ð²Î¿¼ https://github.com/lz4/lz4-java £¬ÕâÀï²»×ö¹ý¶à½âÊÍ¡£

ʵÑé½á¹ûͼÖеĺÁÃëʱ¼äΪµ¥Ìõ¼Ç¼µÄѹËõ»ò½âѹËõʱ¼ä¡£Ñ¹Ëõ±ÈµÄ¼ÆË㷽ʽΪѹËõǰ×Ö½ÚÂ볤¶È/ѹËõºó×Ö½ÚÂ볤¶È¡£¿ÉÒÔ¿´³ö£¬ËùÓÐѹËõËã·¨µÄѹËõ/½âѹʱ¼ä¶¼»áËæ×ÅѹËõ±ÈµÄÉÏÉý¶øÕûÌå³ÊÉÏÉýÇ÷ÊÆ¡£ÆäÖÐLZ4µÄJava Unsafe¡¢Java Safe°æÓÉÓÚ¿¼ÂÇÆ½Ì¨¼æÈÝÐÔÎÊÌ⣬³öÏÖÁËÃ÷ÏÔµÄËÙ¶ÈÒì³£¡£

´ÓʹÓó¡¾°(Ò»´ÎÈ«Á¿Ð´È룬¶à´ÎÖðÌõ¶ÁÈ¡)³ö·¢£¬ÌØÕ÷ϵͳÖ÷ÒªµÄ·þÎñÖ¸±êÊÇÌØÕ÷¸ß²¢·¢ÏµÄÏìӦʱ¼äÓëÌØÕ÷Êý¾Ý´æ´¢Ð§ÂÊ¡£Òò´ËÌØÕ÷ѹËõ¹Ø×¢µÄÖ¸±êÆäʵÊÇ£º¿ìËٵĽâѹËÙ¶ÈÓë½Ï¸ßµÄѹËõ±È£¬¶ø¶ÔѹËõËÙ¶ÈÆäʵҪÇ󲻸ߡ£Òò´Ë×ÛºÏÉÏÊöʵÑéÖи÷¸öËã·¨µÄ±íÏÖ£¬SnappyÊǽÏΪºÏÊÊÎÒÃǵÄÐèÇó¡£

2.2.3 ×ÖµäѹËõ

ѹËõµÄ±¾ÖÊÊÇÀûÓù²ÐÔ£¬ÔÚ²»Ó°ÏìÐÅÏ¢Á¿µÄÇé¿öϽøÐÐÖØÐ±àÂ룬ÒÔËõ¼õ¿Õ¼äÕ¼Óá£ÉϽÚÖеÄ×Ö½ÚѹËõÊǵ¥ÐÐѹËõ£¬Òò´ËÖ»ÄÜÔËÓõ½Í¬Ò»Ìõ¼Ç¼ÖеĹ²ÐÔ£¬¶øÎÞ·¨¹Ë¼°È«¾Ö¹²ÐÔ¡£¾Ù¸öÀý×Ó£º¼ÙÉèij¸öÓû§Î¬¶ÈÌØÕ÷ËùÓÐÓû§µÄÌØÕ÷ÖµÊÇÍêȫһÑùµÄ£¬×Ö½ÚѹËõÖðÌõѹËõ²»ÄܽÚÊ¡ÈκεĴ洢¿Õ¼ä£¬¶øÎÒÃÇÈ´ÖªµÀʵ¼ÊÉÏÖ»ÓÐÒ»¸öÖØ¸´µÄÖµÔÚ·´¸´³öÏÖ¡£¼´±ãÊǵ¥Ìõ¼Ç¼ÄÚ²¿£¬ÓÉÓÚѹËõËã·¨´°¿Ú´óСµÄÏÞÖÆ£¬³¤PatternÒ²ºÜÄѱ»¹Ë¼°µ½¡£Òò´Ë£¬¶ÔÈ«¾ÖµÄÌØÕ÷Öµ×öÒ»´Î×Öµäͳ¼Æ£¬×Ô¶¯»òÈ˹¤µÄ½«Æµ·±Pattern¼ÓÈëµ½×ֵ䲢֨бàÂ룬Äܹ»½â¾ö¶ÌÎı¾×Ö½ÚѹËõµÄ¾ÖÏÞÐÔ¡£

2.3 Êý¾Ýͬ²½

µ±Ã¿´ÎÇëÇ󣬲ßÂÔ¼ÆËãÐèÒª´óÁ¿µÄÌØÕ÷Êý¾Ýʱ(±ÈÈçÒ»´ÎÇëÇóÉÏǧÌõµÄ¹ã¸æÉÌÌØÕ÷)£¬ÎÒÃÇÐèÒª·Ç³£Ç¿º·µÄÔÚÏßÊý¾Ý»ñÈ¡ÄÜÁ¦¡£¶øÔÚ´æ´¢ÌØÕ÷µÄ²»Í¬·½·¨ÖУ¬·ÃÎʱ¾µØÄÚ´æºÁÎÞÒÉÎÊÊÇÐÔÄÜ×î¼ÑµÄ½â¾ö·½Ê½¡£ÏëÒªÔÚ±¾µØÄÚ´æÖзÃÎʵ½ÌØÕ÷Êý¾Ý£¬Í¨³£ÎÒÃÇÓÐÁ½ÖÖÓÐЧÊֶΣºÄڴ渱±¾ºÍ¿Í»§¶Ë»º´æ¡£

2.3.1 Äڴ渱±¾¼¼Êõ

µ±Êý¾Ý×ÜÁ¿²»´óʱ£¬²ßÂÔʹÓ÷½¿ÉÒÔÔÚ±¾µØÍêÈ«¾µÏñÒ»·ÝÌØÕ÷Êý¾Ý£¬Õâ·Ý¾µÏñ½ÐÄڴ渱±¾¡£Ê¹ÓÃÄڴ渱±¾ºÍʹÓñ¾µØµÄÊý¾ÝÍêȫһÖ£¬Ê¹ÓÃÕßÎÞÐè¹ØÐÄÔ¶¶ËÊý¾ÝÔ´µÄ´æÔÚ¡£Äڴ渱±¾ÐèÒªºÍÊý¾ÝԴͨ¹ýijЩЭÒé½øÐÐͬ²½¸üУ¬ÕâÀàͬ²½¼¼Êõ³ÆÎªÄڴ渱±¾¼¼Êõ¡£ÔÚÏßÌØÕ÷ϵͳµÄ³¡¾°ÖУ¬Êý¾ÝÔ´¿ÉÒÔ³éÏóΪһ¸öKVÀàÐ͵ÄÊý¾Ý¼¯£¬Äڴ渱±¾¼¼ÊõÐèÒª°ÑÕâÑùÒ»¸öÊý¾Ý¼¯ÍêÕûµÄͬ²½µ½Äڴ渱±¾ÖС£

ÍÆÀ­½áºÏ¡ª¡ªÊ±Ð§ÐÔºÍÒ»ÖÂÐÔ

Ò»°ãÀ´Ëµ£¬Êý¾Ýͬ²½ÎªÁ½ÖÖÀàÐÍ£ºÍÆ(Push)ºÍÀ­(Pull)¡£PushµÄ¼¼Êõ±È½Ï¼òµ¥£¬ÒÀÀµÄ¿Ç°³£¼ûµÄÏûÏ¢¶ÓÁÐÖмä¼þ£¬¿ÉÒÔ¸ù¾ÝÐèÇó×öµ½½«Ò»¸öÊý¾Ý±ä»¯´«Ë͵½Ò»¸öÄڴ渱±¾ÖС£µ«ÊÇ£¬¼´Ê¹ÊµÏÖÁ˲»Öز»Â©µÄ¸ß¿É¿¿ÐÔÏûÏ¢¶ÓÁÐ֪ͨ(ͨ³£´ú¼ÛºÜ´ó)£¬Ò²»¹ÃæÁÙ×ųõʼ»¯Æô¶¯Ê±ÅúÁ¿Êý¾Ýͬ²½µÄÎÊÌ⡪¡ªËùÒÔ£¬PushÖ»ÄÜ×÷ΪһÖÖÌá¸ßÄڴ渱±¾Ê±Ð§ÐÔµÄÊֶΣ¬±¾ÖÊÉÏÄڴ渱±¾Í¬²½»¹µÃÒÀÀµPullЭÒé¡£PullÀàµÄͬ²½Ð­ÒéÓÐÒ»¸ö·Ç³£ºÃµÄÌØÐÔ¾ÍÊÇÃݵȣ¬Ò»´Îʧ°Ü»ò³É¹¦µÄͬ²½²»»áÓ°ÏìÏÂÒ»´Î½øÐÐеÄͬ²½¡£

PullЭÒéÓзdz£¶àµÄÑ¡Ôñ£¬×î¼òµ¥µÄÿ´Î½«ËùÓÐÊý¾ÝÈ«Á¿À­×ß¾ÍÊÇÒ»ÖÖ»ù´¡Ð­Òé¡£µ«ÊÇÔÚÒµÎñÐèÇóÖÐÐèҪ׷ÇóÊý¾Ýͬ²½Ð§ÂÊ£¬ËùÒÔÓÃһЩ±È½Ï¸ßЧµÄPullЭÒé¾ÍºÜÖØÒª¡£ÎªÁËËõ¼õÀ­È¡Êý¾ÝÁ¿£¬ÕâЩЭÒé±¾ÖÊÉÏÀ´Ëµ¶¼ÊÇÏ£Íû¸ßЧµÄ¼ÆËã³ö¾¡Á¿¾«È·µÄÊý¾Ý²îÒì(Diff)£¬È»ºóͬ²½ÕâЩ±ØÒªµÄÊý¾Ý±ä¶¯¡£ÕâÀï½éÉÜÁ½ÖÖÎÒÃÇÔø¾­ÔÚ¹¤³Ìʵ¼ùÖÐÓ¦ÓùýµÄPullÐÍÊý¾Ýͬ²½Ð­Òé¡£

»ùÓÚ°æ±¾ºÅͬ²½¡ª¡ª»Ø·ÅÈÕÖ¾(RedoLog)ºÍÍË»¯Ëã·¨

ÔÚÊý¾ÝÔ´¸üÐÂʱ£¬¶ÔÓÚÿһ´ÎÊý¾Ý±ä»¯£¬»ùÓÚ°æ±¾ºÅµÄͬ²½Ëã·¨»áΪÕâ´Î±ä»¯·ÖÅäÒ»¸öΨһµÄµÝÔö°æ±¾ºÅ£¬²¢Ê¹ÓÃÒ»¸ö¸üжÓÁмǼËùÓа汾ºÅ¶ÔÓ¦µÄÊý¾Ý±ä»¯¡£

Äڴ渱±¾·¢Æðͬ²½ÇëÇóʱ£¬»áЯ´ø¸Ã¸±±¾ÉÏÒ»´ÎÍê³Éͬ²½Ê±µÄ×î´ó°æ±¾ºÅ£¬ÕâÒâζ×ÅËùÓиð汾ºÅÖ®ºóµÄÊý¾Ý±ä»¯¶¼ÐèÒª±»À­È¡¹ýÀ´¡£Êý¾ÝÔ´·½ÊÕµ½ÇëÇóºó£¬´Ó¸üжÓÁÐÖÐÕÒµ½´óÓڸð汾ºÅµÄËùÓÐÊý¾Ý±ä»¯£¬²¢½«Êý¾Ý±ä»¯»ã×Ü£¬µÃµ½×îÖÕÐèÒª¸üеÄDiff£¬·µ»Ø¸ø·¢Æð·½¡£´ËʱÄڴ渱±¾Ö»ÐèÒª¸üÐÂÕâЩDiffÊý¾Ý¼´¿É¡£

¶ÔÓÚ´ó¶àÊýµÄÒµÎñ³¡¾°£¬ÌØÕ÷Êý¾ÝµÄÉú³É»áÊÕ¿Úµ½Ò»¸öͳһµÄ¸üзþÎñÖУ¬ËùÒÔµÝÔö°æ±¾ºÅ¿ÉÒÔ´®ÐеÄÉú³É¡£Èç¹ûÔÚ·Ö²¼Ê½µÄÊý¾Ý¸üл·¾³ÖУ¬ÔòÐèÒªÀûÓ÷ֲ¼Ê½idÉú³ÉÆ÷À´»ñÈ¡µÝÔö°æ±¾ºÅ¡£

ÁíÒ»¸öÎÊÌâÔòÊǸüжÓÁеij¤¶È¡£Èç¹û²»½øÐÐÈκÎÓÅ»¯£¬¸üжÓÁÐÀíÂÛÉÏÊÇÎÞÏÞ³¤µÄ£¬ÉõÖÁ»á³¬¹ýÊý¾Ý¼¯µÄ´óС¡£Ò»¸öÓÅ»¯·½·¨ÊÇÎÒÃÇÏÞ֯ס¸üжÓÁеÄ×î´ó³¤¶È£¬Ò»µ©³¤¶È³¬¹ýÏÞÖÆ£¬ÔòÖ´Ðкϲ¢(Merge)²Ù×÷¡£Merge²Ù×÷½«¶ÓÁÐÖеÄÊý¾Ý½øÐÐÁ½Á½ºÏ²¢£¬ºÏ²¢ºóµÄ°æ±¾ºÅÒԽϴóµÄ°æ±¾ºÅΪ׼£¬ºÏ²¢ºóµÄ¸üÐÂÊý¾Ý¼¯ÊÇÁ½¸öÊý¾Ý¼¯µÄ²¢¡£Mergeºó£¬ÐµĶÓÁ㤶ÈϽµÎªÔ­¸üжÓÁеÄÒ»°ë¡£

MergeÖ®ºóµÄ¸üжÓÁУ¬ÎÒÃÇÒÀÈ»¿ÉÒÔʹÓÃÏàͬµÄËã·¨½øÐÐͬ²½Diff¼ÆË㣺ÔÚ¶ÓÁÐÖÐÕÒµ½´óÓÚÉÏÒ»´Î¸üа汾ºÅµÄËùÓÐÊý¾Ý¼¯¡£¿ÉÒÔ¿´µ½ÓÉÓÚ°æ±¾ºÅµÄºÏ²¢£¬Ëã³öµÄDiff²»ÔÙÊÇÍêÈ«¾«×¼µÄ¸üÐÂÊý¾Ý£¬ÔÚ¶ÓÁÐÖÐ×îÔçµÄ¸üÐÂÊý¾Ý¼¯ÓпÉÄܰüº¬²¿·ÖÒѾ­Í¬²½¹ýµÄÊý¾Ý¡ª¡ªµ«ÕâÑùµÄÍË»¯²¢²»Ó°Ïìͬ²½ÕýÈ·ÐÔ£¬½ö½ö»áÔì³ÉÉÙÁ¿µÄͬ²½ÈßÓ࣬ÈßÓàµÄÁ¿È¡¾öÓÚDiffÖÐ×îÔçµÄÊý¾Ý¼¯¾­¹ýMergeµÄ´ÎÊý¡£

MerkleTreeͬ²½¡ª¡ªÊý¾Ý¼¯¶Ô±ÈËã·¨

»ùÓÚ°æ±¾ºÅµÄͬ²½Ê¹ÓõÄÊÇÀàËÆRedoLogµÄ˼Ï룬½«ÒµÎñ±ä¶¯µÄÀúÊ·¼Ç¼ÏÂÀ´£¬²¢Í¨¹ý»Ø·Åδͬ²½µÄÀúÊ·¼Ç¼µÃµ½Diff¡£ÓÉÓڼǼ²»¶ÏÔö³¤µÄRedoLogÐèÒª²»Ð¡µÄ¿ªÏú£¬ËùÒÔ²ÉÓÃÁËMerge²ßÂÔÀ´ÍË»¯Ô­Ê¼ÈÕÖ¾(Log)¡£¶ÔÓÚÅúÁ¿»òÕß΢ÅúÁ¿µÄ¸üÐÂÀ´Ëµ£¬»ùÓÚ°æ±¾ºÅµÄͬ²½Ëã·¨ÄܽϺõŤ×÷;Ïà·´£¬ÈôÊý¾ÝÊÇʵʱ¸üÐµģ¬½«»á³öÏÖ´óÁ¿µÄRedoLog£¬²¢¿ìËÙµÄÍË»¯£¬Ó°Ïìͬ²½µÄЧÂÊ¡£

Merkle Treeͬ²½Ëã·¨×ßµÄÊÇÁíÒ»Ìõ·£¬¼òµ¥À´Ëµ¾ÍÊÇͨ¹ýÿ´ÎÖ±½Ó±È½ÏÁ½¸öÊý¾Ý¼¯µÄ²îÒìÀ´»ñÈ¡Diff¡£Ê×ÏÈ¿´Ò»¸ö×î¼òµ¥µÄËã·¨£ºÃ¿´ÎÄڴ渱±¾½«ËùÓÐÊý¾ÝµÄHashÖµ·¢Ë͸øÊý¾ÝÔ´£¬Êý¾ÝÔ´±È½ÏÕû¸öÊý¾Ý¼¯£¬¶ÔÓÚHashÖµ²»Í¬µÄÊý¾ÝÖ´ÐÐͬ²½²Ù×÷¡ª¡ªÕâÑù¾Í¾«È·¼ÆËã³öÁËÁ½¸öÊý¾Ý¼¯Ö®¼äµÄDiff¡£µ«ÏÔ¶øÒ×¼ûµÄÎÊÌ⣬ÊÇÿ´Î´«ÊäËùÓÐÊý¾ÝµÄHashÖµ¿ÉÄܲ¢²»±È¶à´«¼¸¸öÊý¾ÝÇáËÉ¡£Merkle Treeͬ²½Ëã·¨¾ÍÊÇʹÓÃMerkle TreeÊý¾Ý½á¹¹À´ÓÅ»¯ÕâÒ»±È½Ï¹ý³Ì¡£

Merkle Tree¼òµ¥À´ËµÊǾÍÊǰÑËùÓÐÊý¾Ý¼¯µÄhashÖµ×éÖ¯³ÉÒ»¿ÃÊ÷£¬Õâ¿ÃÊ÷µÄÒ¶×Ó½ÚµãÃèÊöÒ»¸ö(»òÒ»×é)Êý¾ÝµÄHashÖµ¡£¶øÖмä½ÚµãµÄÖµÓÉÆäËùÓжù×ÓµÄHashÖµÔÙ´ÎHashµÃµ½£¬ÃèÊöÁËÒÔËüΪ¸ùµÄ×ÓÊ÷Ëù°üº¬µÄÊý¾ÝµÄÕûÌåHash¡£ÏÔÈ»£¬ÔÚ²»¿¼ÂÇHash³åÍ»µÄÇé¿öÏ£¬Èç¹ûÁ½¿ÅMerkle Tree¸ù½ÚµãÏàͬ£¬´ú±íÕâÊÇÁ½¸öÍêÈ«ÏàͬµÄÊý¾Ý¼¯¡£

Merkle Treeͬ²½Ð­ÒéÓɸ±±¾·¢Æð£¬½«¸±±¾¸ù½ÚµãÖµ·¢Ë͸øÊý¾ÝÔ´£¬ÈôÓëÊý¾ÝÔ´¸ù½ÚµãhashÖµÒ»Ö£¬ÔòûÓÐÊý¾Ý±ä¶¯£¬Í¬²½Íê³É¡£·ñÔòÊý¾ÝÔ´½«°Ñ¸ù½áµãµÄËùÓжù×Ó½ÚµãµÄhash·¢Ë͸ø¸±±¾£¬½øÐеݹé±È½Ï¡£¶ÔÓÚ²»Í¬µÄhashÖµ£¬Ò»Ö±³ÖÐø»ñȡֱµ½Ò¶×ӽڵ㣬¾Í¿ÉÒÔÍêȫȷ¶¨ÒѾ­¸Ä±äµÄÊý¾Ý¡£ÒÔ¶þ²æÊ÷ΪÀý£¬ËùÓеÄÊý¾Ýͬ²½×î¶à¾­¹ýLogN´Î½»»¥Íê³É¡£

2.3.2 ¿Í»§¶Ë»º´æ¼¼Êõ

µ±Êý¾Ý¹æÄ£´ó£¬ÎÞ·¨ÍêÈ«·ÅÈëµ½ÄÚ´æÖУ¬ÀäÈÈÊý¾Ý·ÖÃ÷£¬¶ÔÓÚÊý¾ÝʱЧÐÔÒªÇóÓÖ²»¸ßµÄʱºò£¬Í¨³£¸÷ÀàÒµÎñ¶¼»á²ÉÓÿͻ§¶Ë»º´æ¡£¿Í»§¶Ë»º´æµÄ¼¯ÖÐʵÏÖ£¬ÊÇÌØÕ÷·þÎñÑÓÉìµÄÒ»²¿·Ö¡£Í¨ÓõĻº´æÐ­ÒéºÍʹÓ÷½Ê½²»¶à˵£¬´ÓÔÚÏßÌØÕ÷ϵͳµÄÒµÎñ½Ç¶È³ö·¢£¬ÕâÀï¸ø³ö¼¸¸ö·½ÏòµÄ˼¿¼ºÍ¾­Ñé¡£

½Ó¿ÚͨÓû¯¡ª¡ª»º´æÂß¼­ÓëÒµÎñ·ÖÀë

Ò»¸öÌØÕ÷ϵͳҪÂú×ã¸÷ÀàÒµÎñÐèÇó£¬ËüµÄ½Ó¿Ú¿Ï¶¨ÊǷḻµÄ¡£´ÓÊý¾Ýº¬Òå½Ç¶È·ÖÓÐÓû§Àà¡¢ÉÌ»§Àà¡¢²úÆ·ÀàµÈµÈ£¬´ÓÊý¾Ý´«ÊäЭÒé·ÖÓÐThrift¡¢HTTP£¬´Óµ÷Ó÷½Ê½½Ç¶È·ÖÓÐͬ²½¡¢Òì²½£¬´ÓÊý¾Ý×éÖ¯ÐÎʽ½Ç¶È·ÖÓе¥Öµ¡¢List¡¢MapÒÔ¼°Ï໥ǶÌ׵ȵȡ­¡­Ò»¸öÁ¼ºÃµÄ¼Ü¹¹Éè¼ÆÓ¦¸Ã¾¡¿ÉÄܽ«Êý¾Ý´¦ÀíÓëÒµÎñ°þÀ뿪£¬³éÏó¸÷¸ö½Ó¿ÚµÄͨÓò¿·Ö£¬Ò»´Î»º´æÊµÏÖ£¬¶à´¦½Ó¿ÚͬʱÊÜÒæ¸´Óá£ÏÂÃæÒÔͬ²½Òì²½½Ó¿ÚΪÀý½éÉܿͻ§¶Ë½Ó¿ÚͨÓû¯¡£

ͬ²½½Ó¿ÚÖ»ÓÐÒ»²½£º

Ïò·þÎñ¶Ë·¢ÆðÇëÇóµÃµ½½á¹û¡£

Òì²½½Ó¿Ú·ÖΪÁ½²½£º

Ïò·þÎñ¶Ë·¢ÆðÇëÇóµÃµ½FutureʵÀý¡£

ÏòFutureʵÀý·¢ÆðÇëÇ󣬵õ½Êý¾Ý¡£

ͬ²½ºÍÒì²½½Ó¿ÚµÄÊý¾Ý´¦ÀíÖ»ÓÐ˳ÐòµÄ²î±ð£¬Ö»ÐèÒªÊáÀíºÃ¸÷¸ö²½ÖèµÄÖ´ÐÐ˳Ðò¼´¿É¡£ÒýÈ뻺´æºó£¬Êý¾Ý´¦ÀíÁ÷³Ì¶Ô±ÈÈçÏ£º

²»Í¬ÑÕÉ«µÄ´¦Àí¿ò±íʾ²»Í¬µÄÇëÇó¡£Òì²½Á÷³ÌÐèҪʹÓ÷½µÄÁ½´ÎÇëÇó²ÅÄÜ»ñÈ¡µ½Êý¾Ý¡£ÏñͼÖС°Ó÷þÎñ¶ËÊý¾Ý¸üлº´æ¡±(update cache)¡¢¡°·þÎñ¶ËÊý¾ÝÓ뻺´æÊý¾Ý»ã×Ü¡±(merge data)²½ÖèÔÚÒì²½Á÷³ÌÀïÊÇÔÚµÚ¶þ´ÎÇëÇóÖÐÍê³ÉµÄ£¬Çø±ðÓÚͬ²½Á÷³ÌµÚÒ»´ÎÇëÇó¾ÍÍê³ÉËùÓв½Öè¡£½«Êý¾ÝÁ÷³Ì²ð·ÖΪÕâЩ×Ó²½Ö裬ͬ²½ÓëÒì²½Ö»ÊÇÕâЩ²½ÖèµÄ²»Í¬Ë³ÐòµÄ×éºÏ¡£Òò´Ë¶Áд»º´æ(search cache¡¢update cache)ÕâÁ½¸ö²½Öè¿ÉÒÔ³éÏó³öÀ´£¬ÓëÆäÓàÂß¼­½âñî¡£

Êý¾Ý´æ´¢¡ª¡ªÊ±¼äÏÈÓڿռ䣬¿Í»§¶ËÓë·þÎñ¶Ë·ÖÀë

¿Í»§¶ËÖ®ÓÚ·þÎñ¶Ë£¬ÓÌÈç·þÎñ¶ËÖ®ÓÚÊý¾Ý¿â£¬ÆäʵÊý¾Ý´æ´¢Ñ¹ËõµÄ˼·ÊÇÍêȫһÑùµÄ¡£¾ßÌåµÄÊý¾ÝѹËõÓë´æ´¢²ßÂÔÔÚÉÏÎÄÊý¾ÝѹËõÕ½ÚÒѾ­×öÁËÏêϸ½éÉÜ£¬ÕâÀïÖ÷ÒªÏë˵Ã÷Á½µãÎÊÌ⣺

¿Í»§¶ËѹËõÓë·þÎñ¶ËѹËõÓÉÓÚÓ¦Óó¡¾°µÄ²»Í¬£¬ÆäÄ¿±êÊÇÓвîÒìµÄ¡£·þÎñ¶ËѹËõʹÓó¡¾°ÊÇÒ»´ÎÐÔ¸ßÍÌÍÂдÈ룬ÖðÌõ¸ß²¢·¢µÍÑÓ³Ù¶ÁÈ¡£¬ËüÖ÷Òª¹Ø×¢µÄÊǶÁȡʱµÄ½âѹʱ¼äºÍÊý¾Ý´æ´¢Ê±µÄѹËõ±È¡£¶ø¿Í»§¶Ë»º´æÊôÓÚÊý¾Ý´æ´¢·Ö²ãÖÐ×î¶¥¶ËµÄ²¿·Ö£¬ÓÉÓÚ¶ÁдµÄ³¡¾°¶¼ÊǸ߲¢·¢µÍÑӳٵı¾µØÄÚ´æ²Ù×÷£¬Òò´Ë¶ÔѹËõËÙ¶È¡¢½âѹËÙ¶È¡¢Êý¾ÝÁ¿´óС¶¼ÓкܸßÒªÇó£¬ËüÒª×öµÄȨºâ¸ü¶à¡£

Æä´Î£¬¿Í»§¶ËÓë·þÎñ¶ËÊÇÁ½¸öÍêÈ«¶ÀÁ¢µÄÄ£¿é£¬Ëµ°×ÁË£¬ËäÈ»ÎÒÃÇ»á±àд¿Í»§¶Ë´úÂ룬µ«Ëü²»ÊôÓÚ·þÎñµÄÒ»²¿·Ö£¬¶øÊǵ÷Ó÷½·þÎñµÄÒ»²¿·Ö¡£¿Í»§¶ËµÄÊý¾ÝѹËõÓ¦¸Ã¾¡Á¿Óë·þÎñ¶Ë½âñÇв»¿ÉΪÁḚ̈ͼʵÏÖ·½±ã£¬½«Á½ÕßµÄÊý¾Ý¸ñʽñîºÏÔÚÒ»Æð£¬Óë·þÎñ¶ËµÄÊý¾ÝͨПñʽӦ¸ÃÀí½âΪһÖÖ¶ÀÁ¢µÄЭÒ飬ÕýÈç·þÎñ¶ËÓëÊý¾Ý¿âµÄͨÐÅÒ»Ñù£¬Êý¾ÝͨПñʽÓëÊý¾Ý¿âµÄ´æ´¢¸ñʽûÓÐÈκιØÏµ¡£

ÄÚ´æ¹ÜÀí¡ª¡ª»º´æÓë·Ö´ú»ØÊÕµÄì¶Ü

»º´æµÄÄ¿±êÊÇÈÃÈÈÊý¾Ý(Ƶ·±±»·ÃÎʵÄÊý¾Ý)Äܹ»ÁôÔÚÄڴ棬ÒÔ±ãÌá¸ß»º´æÃüÖÐÂÊ¡£¶øJVMÀ¬»ø»ØÊÕ(GC)µÄÄ¿±êÊÇÊÍ·ÅʧȥÒýÓõĶÔÏóµÄÄÚ´æ¿Õ¼ä¡£Á½ÕßÄ¿±ê¿´ÉÏÈ¥ÏàËÆ£¬µ«Ï¸Î¢µÄ²îÒìÈÃÁ½ÕßÔڸ߲¢·¢µÄÇ龰ϺÜÄѹ²´æ¡£»º´æµÄÌÔÌ­»á²úÉú´óÁ¿µÄÄÚ´æÀ¬»ø£¬Ê¹Full GC±äµÃ·Ç³£Æµ·±¡£ÕâÖÖì¶ÜÆäʵ²»ÏÞÓÚ¿Í»§¶Ë£¬¶øÊÇËùÓÐJVM¶ÑÄÚ»º´æ¹²Í¬ÃæÁÙµÄÎÊÌâ¡£ÏÂÃæÎÒÃÇ×Ðϸ·ÖÎöÒ»¸ö³¡¾°£º

Ëæ×ÅÇëÇó²úÉúµÄÊý¾Ý»á²»¶Ï¼ÓÈ뻺´æ£¬QPS½Ï¸ßµÄÇéÐÎÏ£¬Young GCƵ·±·¢Éú£¬»á²»¶Ï´Ùʹ»º´æËùÕ¼ÓõÄÄÚ´æ´ÓÐÂÉú´úÒÆÏòÀÏÄê´ú¡£»º´æ±»ÌîÂúºó¿ªÊ¼²ÉÓÃLeast Recently Used(LRU)Ëã·¨ÌÔÌ­£¬ÀäÊý¾Ý±»Ìß³ö»º´æ£¬³ÉΪÀ¬»øÄڴ档Ȼ¶ø²»ÐÒµÄÊÇ£¬ÓÉÓÚÆµ·±µÄYoung GC£¬ÓкܶàÀäÊý¾Ý½øÈëÁËÀÏÄê´ú£¬ÌÔÌ­ÀÏÄê´úµÄ»º´æ£¬¾Í»á²úÉúÀÏÄê´úµÄÀ¬»ø£¬´Ó¶øÒý·¢Full GC¡£

¿ÉÒÔ¿´µ½£¬ÕýÊÇÓÉÓÚ»º´æµÄÌÔÌ­»úÖÆÓëÐÂÉú´úµÄGC²ßÂÔÄ¿±ê²»Ò»Ö£¬µ¼ÖÂÁË»º´æÌÔÌ­»á²úÉúºÜ¶àÀÏÄê´úµÄÄÚ´æÀ¬»ø£¬¶øÇÒ²úÉúÀ¬»øµÄËÙ¶ÈÓ뻺´æ´óСûÓÐÌ«¶à¹ØÏµ£¬¶øÓëÐÂÉú´úµÄGCƵÂÊÒÔ¼°¶Ñ»º´æµÄÌÔÌ­ËÙ¶ÈÏà¹Ø¡£¶øÕâÁ½¸öÖ¸±ê¾ùÓëQPSÕýÏà¹Ø¡£Òò´Ë¶ÑÄÚ»º´æ·Â·ð³ÉÁËÒ»¸öͨÏòÀÏÄê´úµÄÀ¬»ø¹ÜµÀ£¬QPSÔ½¸ß£¬À¬»ø²úÉúÔ½¿ì!

Òò´Ë£¬¶ÔÓڸ߲¢·¢µÄ»º´æÓ¦Óã¬Ó¦¸Ã±ÜÃâ²ÉÓÃJVMµÄ·Ö´ø¹ÜÀíÄڴ棬»òÕß¿ÉÒÔ˵£¬GCÄÚ´æ»ØÊÕ»úÖÆµÄ¿ªÏúºÍЧÂʲ¢²»ÄÜÂú×ã¸ß²¢·¢ÇéÐÎϵÄÄÚ´æ¹ÜÀíµÄÐèÇó¡£ÓÉÓÚJVMÐéÄâ»úµÄÇ¿ÖÆ¹ÜÀíÄÚ´æµÄÏÞÖÆ£¬´ËʱÎÒÃÇ¿ÉÒÔ½«¶ÔÏóÐòÁл¯´æ´¢µ½¶ÑÍâ(Off Heap)£¬À´´ïµ½ÈÆ¿ªJVM¹ÜÀíÄÚ´æµÄÄ¿µÄ£¬ÀýÈçEhcache£¬BigMemoryµÈµÚÈý·½¼¼Êõ±ãÊÇÈç´Ë¡£»òÕ߸͝JVMµ×²ãʵÏÖ(ÀàËÆÖ®Ç°ÌÔ±¦µÄ×ö·¨)£¬×öµ½¶ÑÄÚ´æ´¢£¬ÃâÓÚGC¡£

Èý¡¢½áÊøÓï

±¾ÎÄÖ÷Òª½éÉÜÁËһЩÔÚÏßÌØÕ÷ϵͳµÄ¼¼Êõµã£¬´ÓϵͳµÄ¸ß²¢·¢¡¢¸ßÍÌÍ¡¢´óÊý¾Ý¡¢µÍÑÓ³ÙµÄÐèÇó³ö·¢£¬²¢ÒÔһЩʵ¼ÊÌØÕ÷ϵͳΪԭÐÍ£¬Ìá³öÔÚÏßÌØÕ÷ϵͳµÄһЩÉè¼ÆË¼Â·¡£ÕýÈçÉÏÎÄËù˵£¬ÌØÕ÷ϵͳµÄ±ß½ç²¢²»ÏÞÓÚÊý¾ÝµÄ´æ´¢Óë¶ÁÈ¡¡£ÏñÊý¾Ýµ¼Èë×÷Òµµ÷¶È¡¢ÊµÊ±ÌØÕ÷¡¢ÌØÕ÷¼ÆËãÓëÉú²ú¡¢Êý¾Ý±¸·Ý¡¢ÈÝÔÖ»Ö¸´µÈµÈ£¬¶¼¿É¿´×÷ÎªÌØÕ÷ϵͳµÄÒ»²¿·Ö¡£±¾ÎÄÊÇÔÚÏßÌØÕ÷ϵͳϵÁÐÎÄÕµĵÚһƪ£¬ÎÒÃǵÄÌØÕ÷ϵͳҲÔÚÐèÇóÓëÌôÕ½Öв»¶ÏÑݽø£¬ºóÐø»áÓиü¶àʵ¼ùµÄ¾­ÑéÓë´ó¼Ò·ÖÏí¡£Ò»¼ÒÖ®ÑÔ£¬ÄÑÃâÓÐÒÅ©ºÍÆ«ÆÄÖ®´¦£¬µ«ÊÇËûɽ֮ʯ¿ÉÒÔ¹¥Óñ£¬ÈôÄÜΪ¸÷λ¼Ü¹¹Ê¦ÔÚÃæÏò×Ô¼ºÒµÎñʱÌṩһЩ˼·£¬ÉÆÄª´óÑÉ¡£

   
2979 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

»ùÓÚͼ¾í»ýÍøÂçµÄͼÉî¶Èѧϰ
×Ô¶¯¼ÝÊ»ÖеÄ3DÄ¿±ê¼ì²â
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
ÏîĿʵս£ºÈçºÎ¹¹½¨ÖªÊ¶Í¼Æ×
 
Ïà¹ØÎĵµ

5GÈ˹¤ÖÇÄÜÎïÁªÍøµÄµäÐÍÓ¦ÓÃ
Éî¶ÈѧϰÔÚ×Ô¶¯¼ÝÊ»ÖеÄÓ¦ÓÃ
ͼÉñ¾­ÍøÂçÔÚ½»²æÑ§¿ÆÁìÓòµÄÓ¦ÓÃÑо¿
ÎÞÈË»úϵͳԭÀí
Ïà¹Ø¿Î³Ì

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù