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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
 
×÷ÕߣºÓÀ²»ÑÔÆú01
  3747  次浏览      28
 2020-2-26
 
±à¼­ÍƼö:
±¾ÎĽ²Êö´«Í³ÏµÍ³µÄÎÊÌ⣬Lambda¼Ü¹¹µÄ±³¾°£¬´óÊý¾ÝϵͳµÄ¹Ø¼üÌØÐÔ£¬Êý¾ÝϵͳµÄ±¾ÖÊµÈ Ï£Íû¶ÔÄúÓÐËù°ïÖú
±¾ÎÄÀ´×ÔÓÚ΢ÐźŰ¢ÀïÔÆÔÆÆÜºÅ£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­¡¢ÍƼö¡£

´«Í³ÏµÍ³µÄÎÊÌâ

¡°ÎÒÃÇÕýÔÚ´ÓITʱ´ú×ßÏòDTʱ´ú(Êý¾Ýʱ´ú)¡£ITºÍDTÖ®¼ä£¬²»½ö½öÊǼ¼ÊõµÄ±ä¸ï£¬¸üÊÇ˼ÏëÒâʶµÄ±ä¸ï£¬ITÖ÷ÒªÊÇΪ×ÔÎÒ·þÎñ£¬ÓÃÀ´¸üºÃµØ×ÔÎÒ¿ØÖƺ͹ÜÀí£¬DTÔòÊǼ¤»îÉú²úÁ¦£¬ÈñðÈË»îµÃ±ÈÄãºÃ¡±¡ª¡ª°¢Àï°Í°Í¶­Ê¾ÖÖ÷ϯÂíÔÆ¡£

Êý¾ÝÁ¿´ÓMµÄ¼¶±ðµ½GµÄ¼¶±ðµ½ÏÖÔÚTµÄ¼¶¡¢PµÄ¼¶±ð¡£Êý¾ÝÁ¿µÄ±ä»¯£¬Êý¾Ý¹ÜÀíϵͳ£¨DBMS£©ºÍÊý²Öϵͳ£¨DW£©Ò²ÔÚÇÄÈ»µÄ±ä»¯×Å¡£

´«Í³Ó¦ÓõÄÊý¾Ýϵͳ¼Ü¹¹Éè¼ÆÊ±£¬Ó¦ÓÃÖ±½Ó·ÃÎÊÊý¾Ý¿âϵͳ¡£µ±Óû§·ÃÎÊÁ¿Ôö¼Óʱ£¬Êý¾Ý¿âÎÞ·¨Ö§³ÅÈÕÒæÔö³¤µÄÓû§ÇëÇóµÄ¸ºÔØÊ±£¬´Ó¶øµ¼ÖÂÊý¾Ý¿â·þÎñÆ÷ÎÞ·¨¼°Ê±ÏìÓ¦Óû§ÇëÇ󣬳öÏÖ³¬Ê±µÄ´íÎó¡£³öÏÖÕâÖÖÇé¿öÒÔºó£¬ÔÚϵͳ¼Ü¹¹ÉϾͲÉÓÃͼ£¨A£©µÄ¼Ü¹¹£¬ÔÚÊý¾Ý¿âºÍÓ¦ÓÃÖмä¹ýÒ»²ã»º³å¸ôÀ룬»º½âÊý¾Ý¿âµÄ¶ÁдѹÁ¦¡£È»¶ø£¬µ±Óû§·ÃÎÊÁ¿³ÖÐøÔö¼Óʱ£¬¾ÍÐèÒª¿¼ÂǶÁд·ÖÀë¼¼Êõ£¨Master£­Slave£©¼Ü¹¹Èçͼ£¨B£©£¬·Ö¿â·Ö±í¼¼Êõ¡£ÏÖÔÚ£¬¼Ü¹¹±äµÃÔ½À´Ô½¸´ÔÓÁË£¬Ôö¼Ó¶ÓÁС¢·ÖÇø¡¢¸´ÖƵȴ¦ÀíÂß¼­¡£Ó¦ÓóÌÐòÐèÒªÁ˽âÊý¾Ý¿âµÄschema£¬²ÅÄÜ·ÃÎʵ½ÕýÈ·µÄÊý¾Ý¡£

Lambda¼Ü¹¹µÄ±³¾°

´óÊý¾Ý´¦Àí¼¼ÊõÐèÒª½â¾öÕâÖÖ¿ÉÉìËõÐÔÓ븴ÔÓÐÔ¡£

Ê×ÏÈÒªÈÏʶµ½ÕâÖÖ·Ö²¼Ê½µÄ±¾ÖÊ£¬ÒªºÜºÃµØ´¦Àí·ÖÇøÓë¸´ÖÆ£¬²»»áµ¼Ö´íÎó·ÖÇøÒýÆð²éѯʧ°Ü£¬¶øÊÇÒª½«ÕâЩÂß¼­ÄÚ»¯µ½Êý¾Ý¿âÖС£µ±ÐèÒªÀ©Õ¹ÏµÍ³Ê±£¬¿ÉÒԷdz£·½±ãµØÔö¼Ó½Úµã£¬ÏµÍ³Ò²Äܹ»Õë¶ÔÐÂ½Úµã½øÐÐrebalance¡£

Æä´ÎÊÇÒªÈÃÊý¾Ý³ÉΪ²»¿É±äµÄ¡£Ô­Ê¼Êý¾ÝÓÀÔ¶¶¼²»Äܱ»Ð޸ģ¬ÕâÑù¼´Ê¹·¸ÁË´íÎó£¬Ð´ÁË´íÎóÊý¾Ý£¬Ô­À´ºÃµÄÊý¾Ý²¢²»»áÊܵ½ÆÆ»µ¡£

StormµÄ×÷ÕßNathan MarzÌá³öµÄÒ»¸öʵʱ´óÊý¾Ý´¦Àí¿ò¼Ü£¨Lambda¼Ü¹¹£©¾ÍÂú×ãÒÔÉÏÁ½µã¡£MarzÔÚTwitter¹¤×÷ÆÚ¼ä¿ª·¢ÁËÖøÃûµÄʵʱ´óÊý¾Ý´¦Àí¿ò¼ÜStorm£¬Lambda¼Ü¹¹ÊÇÆä¸ù¾Ý¶àÄê½øÐзֲ¼Ê½´óÊý¾ÝϵͳµÄ¾­Ñé×ܽáÌáÁ¶¶ø³É¡£

Lambda¼Ü¹¹µÄÄ¿±êÊÇÉè¼Æ³öÒ»¸öÄÜÂú×ãʵʱ´óÊý¾Ýϵͳ¹Ø¼üÌØÐԵļܹ¹£¬°üÀ¨ÓУº¸ßÈÝ´í¡¢µÍÑÓʱºÍ¿ÉÀ©Õ¹µÈ¡£Lambda¼Ü¹¹ÕûºÏÀëÏß¼ÆËãºÍʵʱ¼ÆË㣬Èںϲ»¿É±äÐÔ£¨Immunability£©£¬¶Áд·ÖÀëºÍ¸´ÔÓÐÔ¸ôÀëµÈһϵÁмܹ¹Ô­Ôò£¬¿É¼¯³ÉHadoop£¬Kafka£¬Storm£¬Spark£¬HbaseµÈ¸÷Àà´óÊý¾Ý×é¼þ¡£

´óÊý¾ÝϵͳµÄ¹Ø¼üÌØÐÔ

Marz½éÉÜBig Data SystemÐí¾ß±¸µÄÊôÐÔ£º

a¡¢Robust and fault-tolerant£¨ÈÝ´íÐԺͳ°ôÐÔ£©£º¶Ô´ó¹æÄ£·Ö²¼Ê½ÏµÍ³À´Ëµ£¬»úÆ÷ÊDz»¿É¿¿µÄ£¬¿ÉÄܻᵱ»ú£¬µ«ÊÇϵͳÐèÒªÊǽ¡×³¡¢ÐÐΪÕýÈ·µÄ£¬¼´Ê¹ÊÇÓöµ½»úÆ÷´íÎó¡£³ýÁË»úÆ÷´íÎó£¬È˸ü¿ÉÄܻ᷸´íÎó¡£ÔÚÈí¼þ¿ª·¢ÖÐÄÑÃâ»áÓÐһЩBug£¬ÏµÍ³±ØÐë¶ÔÓÐBugµÄ³ÌÐòдÈëµÄ´íÎóÊý¾ÝÓÐ×ã¹»µÄÊÊÓ¦ÄÜÁ¦£¬ËùÒԱȻúÆ÷ÈÝ´íÐÔ¸ü¼ÓÖØÒªµÄÈÝ´íÐÔÊÇÈËΪ²Ù×÷ÈÝ´íÐÔ¡£¶ÔÓÚ´ó¹æÄ£µÄ·Ö²¼Ê½ÏµÍ³À´Ëµ£¬È˺ͻúÆ÷µÄ´íÎóÿÌì¶¼¿ÉÄܻᷢÉú£¬ÈçºÎÓ¦¶ÔÈ˺ͻúÆ÷µÄ´íÎó£¬ÈÃϵͳÄܹ»´Ó´íÎóÖпìËÙ»Ö¸´ÓÈÆäÖØÒª¡£

b¡¢Low latency reads and updates£¨µÍÑÓʱ£©£ººÜ¶àÓ¦ÓöÔÓÚ¶ÁºÍд²Ù×÷µÄÑÓʱҪÇó·Ç³£¸ß£¬ÒªÇó¶Ô¸üкͲéѯµÄÏìÓ¦ÊǵÍÑÓʱµÄ¡£

c¡¢Scalable£¨ºáÏòÀ©ÈÝ£©£ºµ±Êý¾ÝÁ¿/¸ºÔØÔö´óʱ£¬¿ÉÀ©Õ¹ÐÔµÄϵͳͨ¹ýÔö¼Ó¸ü¶àµÄ»úÆ÷×ÊÔ´À´Î¬³ÖÐÔÄÜ¡£Ò²¾ÍÊdz£ËµµÄϵͳÐèÒªÏßÐÔ¿ÉÀ©Õ¹£¬Í¨³£²ÉÓÃscale out£¨Í¨¹ýÔö¼Ó»úÆ÷µÄ¸öÊý£©¶ø²»ÊÇscale up£¨Í¨¹ýÔöÇ¿»úÆ÷µÄÐÔÄÜ£©¡£

d¡¢General£¨Í¨ÓÃÐÔ£©£ºÏµÍ³ÐèÒªÄܹ»ÊÊÓ¦¹ã·ºµÄÓ¦Ó㬰üÀ¨½ðÈÚÁìÓò¡¢Éç½»ÍøÂç¡¢µç×ÓÉÌÎñÊý¾Ý·ÖÎöµÈ¡£

e¡¢Extensible£¨¿ÉÀ©Õ¹£©£ºÐèÒªÔö¼Óй¦ÄÜ¡¢ÐÂÌØÐÔʱ£¬¿ÉÀ©Õ¹µÄϵͳÄÜÒÔ×îСµÄ¿ª·¢´ú¼ÛÀ´Ôö¼Óй¦ÄÜ¡£

f¡¢Allows ad hoc queries£¨·½±ã²éѯ£©£ºÊý¾ÝÖÐÔ̺¬ÓмÛÖµ£¬ÐèÒªÄܹ»·½±ã¡¢¿ìËٵIJéѯ³öËùÐèÒªµÄÊý¾Ý¡£

d¡¢Minimal maintenance£¨Ò×ÓÚά»¤£©£ºÏµÍ³ÒªÏë×öµ½Ò×ÓÚά»¤£¬Æä¹Ø¼üÊÇ¿ØÖÆÆä¸´ÔÓÐÔ£¬Ô½ÊǸ´ÔÓµÄϵͳԽÈÝÒ׳ö´í¡¢Ô½ÄÑά»¤¡£

h¡¢Debuggable£¨Ò×µ÷ÊÔ£©£ºµ±³öÎÊÌâʱ£¬ÏµÍ³ÐèÒªÓÐ×ã¹»µÄÐÅÏ¢À´µ÷ÊÔ´íÎó£¬ÕÒµ½ÎÊÌâµÄ¸ùÔ´¡£Æä¹Ø¼üÊÇÄܹ»×·¸ùËÝÔ´µ½Ã¿¸öÊý¾ÝÉú³Éµã¡£

Êý¾ÝϵͳµÄ±¾ÖÊ

MarzÈÏΪ£ºÊý¾Ýϵͳͨ¹ý²éѯ¹ýÈ¥µÄ£¨²¿·Ö¡¢È«²¿£©Êý¾ÝÈ¥»Ø´ðÎÊÌâ¡£È磺ËûÊÇÒ»¸öʲôÑùµÄÈË£¿ËûÓжàÉÙÅóÓÑ£¿Õâ¸öÕ˺ÅÊÇ·ñÊÕ֧ƽºâ£¿¡£Òò´Ë£¬Data SystemµÄͨÓö¨ÒåΪ£º

Query £½ Function£¨all data£©¡£

¶ÔͨÓõıí´ïʽ½øÐзֽâµÃµ½£º

Êý¾Ýϵͳ £½ Êý¾Ý £« ²éѯ

´Ó¶ø¿ÉÒÔ´ÓÊý¾ÝºÍ²éѯÁ½¸ö·½ÃæÈÏʶ´óÊý¾ÝϵͳµÄ±¾ÖÊ¡£

Êý¾Ý±¾±¾ÖÊ£ºWhenºÍWhat

Êý¾ÝÊÇÒ»¸ö²»¿É·Ö¸îµÄµ¥Ôª£¬Êý¾ÝÓÐÁ½¸ö¹Ø¼üµÄÌØÐÔ£ºWhen ºÍ What¡£

WhenÊÇÖ»Êý¾ÝÊÇÓëʱ¼äÏà¹ØµÄ£¬Ò²¾ÍÊÇÊý¾ÝÊÇÔÚij¸öʱ¼ä²úÉúµÄ¡£Õâ¸ö·Ç³£ÖØÒª£¬ÔÚ¾ßÓÐÊÂÎñÌØÐÔµÄÊý¾Ý¿âÖУ¬²Ù×÷µÄÏȺó˳Ðò¶Ô½á¹ûÖÁ¹ØÖØÒª¡£ÀýÈçÊý¾Ý¿âµÄBinlogÈÕÖ¾¡£Òò´Ë£¬Êý¾ÝµÄʱ¼äÐÔÖʾö¶¨ÁËÊý¾ÝµÄÈ«¾Ö·¢ÉúÏȺó£¬Ò²¾Í¾ö¶¨ÁËÊý¾ÝµÄ½á¹û¡£

WhatÊÇÖ»Êý¾ÝµÄ±¾Éí¡£ÓÉÓÚÊý¾Ý¸úij¸öʱ¼äµãÏà¹Ø£¬ËùÒÔÊý¾ÝµÄ±¾ÉíÊDz»¿É±äµÄ(immutable)£¬¹ýÍùµÄÊý¾ÝÒѾ­³ÉΪÊÂʵ£¨Fact£©£¬Äã²»¿ÉÄܻص½¹ýÈ¥µÄij¸öʱ¼äµãÈ¥¸Ä±äÊý¾ÝÊÂʵ¡£ÕâÒ²¾ÍÒâζ×ŶÔÊý¾ÝµÄ²Ù×÷ÆäʵֻÓÐÁ½ÖÖ£º¶ÁÈ¡ÒÑ´æÔÚµÄÊý¾ÝºÍÌí¼Ó¸ü¶àµÄÐÂÊý¾Ý¡£²ÉÓÃÊý¾Ý¿âµÄ¼Ç·¨£¬CRUD¾Í±ä³ÉÁËCR£¬UpdateºÍDelete±¾ÖÊÉÏÆäʵÊÇвúÉúµÄÊý¾ÝÐÅÏ¢£¬ÓÃCÀ´¼Ç¼¡£

Êý¾ÝµÄ´æ´¢

Store Everything Rawly and Immutably

¸ù¾ÝÉÏÊö¶ÔÊý¾ÝÌØÐԵķÖÎö£¬lambda¼Ü¹¹ÖжÔÊý¾ÝµÄ´æ´¢²ÉÓõķ½Ê½ÊÇ£ºÊý¾Ý²»¿É±ä£¬´æ´¢ËùÓÐÊý¾Ý¡£

²ÉÓÃÕâÁ½ÖÖ·½Ê½´æ´¢µÄºÃ´¦£º

a¡¢¼òµ¥¡£²ÉÓò»¿É±äµÄÊý¾ÝÄ£ÐÍ£¬´æ´¢Êý¾ÝʱֻÐèÒª¼òµ¥µÄÍùÖ÷Êý¾Ý¼¯ºó×·¼ÓÊý¾Ý¼´¿É¡£Ïà±ÈÓÚ²ÉÓÿɱäµÄÊý¾ÝÄ£ÐÍ£¬ÎªÁËUpdate²Ù×÷£¬Êý¾Ýͨ³£ÐèÒª±»Ë÷Òý£¬´Ó¶øÄÜ¿ìËÙÕÒµ½Òª¸üеÄÊý¾ÝÈ¥×ö¸üвÙ×÷¡£

b¡¢Ó¦¶ÔÈËΪºÍ»úÆ÷µÄ´íÎó¡£È˺ͻúÆ÷ÿÌì¶¼¿ÉÄÜ»á³ö´í£¬ÈçºÎÓ¦¶ÔÈ˺ͻúÆ÷µÄ´íÎó£¬ÈÃÊý¾Ýϵͳ¿ìËÙ»Ö¸´¼«ÆäÖØÒª¡£²»¿É±äºÍ¿ÉÖØ¸´¼ÆËãÊÇÓ¦¶ÔÈÏΪºÍ»úÆ÷´íÎóµÄ³£Ó÷½·¨¡£²ÉÓÿɱäÊý¾ÝÄ£ÐÍ£¬Òý·¢´íÎóµÄÊý¾ÝÓпÉÄܱ»¸²¸Ç¶ø¶ªÊ§¡£

Ïà±ÈÓÚ²ÉÓò»¿É±äµÄÊý¾ÝÄ£ÐÍ£¬ÒòΪËùÓеÄÊý¾Ý¶¼ÔÚ£¬Òý·¢´íÎóµÄÊý¾ÝÒ²ÔÚ¡£

ÐÞ¸´µÄ·½·¨¾Í¿ÉÒÔ¼òµ¥µÄÊDZéÀúÊý¾Ý¼¯ÉÏ´æ´¢µÄËùÓеÄÊý¾Ý£¬¶ªÆú´íÎóµÄÊý¾Ý£¬ÖØÐ¼ÆËãµÃµ½Views¡£ÖØÐ¼ÆËãµÄ¹Ø¼üµãÔÚÓÚÀûÓÃÊý¾ÝµÄʱ¼äÌØÐÔ¾ö¶¨µÄÈ«¾Ö´ÎÐò£¬ÒÀ´Î˳ÐòÖØÐÂÖ´ÐУ¬±ØÈ»Äܵõ½ÕýÈ·µÄ½á¹û¡£

µ±Ç°Òµ½çÓкܶà²ÉÓò»¿É±äÊý¾ÝÄ£ÐÍÀ´´æ´¢ËùÓÐÊý¾ÝµÄÀý×Ó¡£±ÈÈç·Ö²¼Ê½Êý¾Ý¿âDatomic£¬»ùÓÚ²»¿É±äÊý¾ÝÄ£ÐÍÀ´´æ´¢Êý¾Ý£¬´Ó¶ø¼ò»¯ÁËÉè¼Æ¡£·Ö²¼Ê½ÏûÏ¢Öмä¼þKafka£¬»ùÓÚLogÈÕÖ¾£¬ÒÔ×·¼Óappend-onlyµÄ·½Ê½À´´æ´¢ÏûÏ¢¡£

Lambda¼Ü¹¹

Lambda¼Ü¹¹µÄÖ÷Ҫ˼ÏëÊǽ«´óÊý¾Ýϵͳ¼Ü¹¹Îª¶à²ã¸ö²ã´Î£¬·Ö±ðΪÅú´¦Àí²ã£¨batch layer£©¡¢ÊµÊ±´¦Àí²ã£¨speed layer£©¡¢·þÎñ²ã£¨serving layer£©Èçͼ£¨C£©¡£

ÀíÏë״̬Ï£¬ÈκÎÊý¾Ý·ÃÎʶ¼¿ÉÒÔ´Ó±í´ïʽQuery = function(all data)¿ªÊ¼£¬µ«ÊÇ£¬ÈôÊý¾Ý´ïµ½Ï൱´óµÄÒ»¸ö¼¶±ð£¨ÀýÈçPB£©£¬ÇÒ»¹ÐèÒªÖ§³Öʵʱ²éѯʱ£¬¾ÍÐèÒªºÄ·Ñ·Ç³£ÅÓ´óµÄ×ÊÔ´¡£Ò»¸ö½â¾ö·½Ê½ÊÇÔ¤ÔËËã²éѯº¯Êý£¨precomputed query funciton£©¡£ÊéÖн«ÕâÖÖÔ¤ÔËËã²éѯº¯Êý³ÆÖ®ÎªBatch View£¨A£©£¬ÕâÑùµ±ÐèÒªÖ´Ðвéѯʱ£¬¿ÉÒÔ´ÓBatch ViewÖжÁÈ¡½á¹û¡£ÕâÑùÒ»¸öÔ¤ÏÈÔËËãºÃµÄViewÊÇ¿ÉÒÔ½¨Á¢Ë÷ÒýµÄ£¬Òò¶ø¿ÉÒÔÖ§³ÖËæ»ú¶ÁÈ¡£¨B£©¡£ÓÚÊÇϵͳ¾Í±ä³É£º

£¨A£©batch view = function(all data)£»

£¨B£©query = function(batch view)¡£

Batch Layer

ÔÚLambda¼Ü¹¹ÖУ¬ÊµÏÖ£¨A£©batch view = function(all data)µÄ²¿·Ö³ÆÖ®ÎªBatch Layer¡£Ëû³Ðµ£Á½¸öÖ°Ôð£º

a¡¢´æ´¢Master Dataset£¬ÕâÊÇÒ»¸ö²»±äµÄ³ÖÐøÔö³¤µÄÊý¾Ý¼¯

b¡¢Õë¶ÔÕâ¸öMaster Dataset½øÐÐÔ¤ÔËËã

ÔÚÈ«ÌåÊý¾Ý¼¯ÉÏÔÚÏßÔËÐвéѯº¯ÊýµÃµ½½á¹ûµÄ´ú¼ÛÌ«´ó£¬Í¬Ê±´¦Àí²éѯʱ¼ä¹ý³¤£¬µ¼ÖÂÓû§ÌåÑé²»ºÃ¡£Èç¹ûÎÒÃÇÔ¤ÏÈÔÚÊý¾Ý¼¯ÉϼÆËã²¢±£´æÔ¤¼ÆËãµÄ½á¹û£¬²éѯµÄʱºòÖ±½Ó·µ»ØÔ¤¼ÆËãµÄ½á¹û£¬¶øÎÞÐèÖØÐ½øÐи´ÖƺÄʱµÄ¼ÆËã¡£ÏÔÈ»£¬batch view ÊÇÒ»¸öÅú´¦Àí¹ý³Ì£¬Èç²ÉÓÃHadoop»òsparkÖ§³ÖµÄmap£­reduce·½Ê½¡£²ÉÓÃÕâÖÖ·½Ê½¼ÆËãµÃµ½µÄÿ¸öview¶¼Ö§³ÖÔٴμÆË㣬ÇÒÿ´Î¼ÆËãµÄ½á¹û¶¼Ïàͬ¡£

¶ÔViewµÄÀí½â£º

ViewÊÇÒ»¸öºÍÒµÎñ¹ØÁªÐԱȽϴóµÄ¸ÅÄViewµÄ´´½¨ÐèÒª´ÓÒµÎñ×ÔÉíµÄÐèÇó³ö·¢¡£Ò»¸öͨÓõÄÊý¾Ý¿â²éѯϵͳ£¬²éѯ¶ÔÓ¦µÄº¯Êýǧ±äÍò»¯£¬²»¿ÉÄÜÇî¾Ù¡£µ«ÊÇÈç¹û´ÓÒµÎñ×ÔÉíµÄÐèÇó³ö·¢£¬¿ÉÒÔ·¢ÏÖÒµÎñËùÐèÒªµÄ²éѯ³£³£ÊÇÓÐÏ޵ġ£

Batch LayerÐèÒª×öµÄÒ»¼þÖØÒªµÄ¹¤×÷¾ÍÊǸù¾ÝÒµÎñµÄÐèÇ󣬿¼²ì¿ÉÄÜÐèÒªµÄ¸÷ÖÖ²éѯ£¬¸ù¾Ý²éѯ¶¨ÒåÆäÔÚÊý¾Ý¼¯É϶ÔÓ¦µÄViews¡£

Batch LayerµÄImmutable dataÄ£ÐͺÍViews

Èçͼ£¨E£©×øÏ¯£¨agentid£½50023£©µÄÈË£¬ÔÚ10:00:06·ÖµÄʱºò£¬×´Ì¬ÊÇcalling£¬ÔÚ10:00:10µÄʱºò״̬Ϊwaiting¡£ÔÚ´«Í³µÄÊý¾Ý¿âÉè¼ÆÖУ¬Ö±½ÓºóÃæµÄ¼Í¼¸²¸ÇÇ°ÃæµÄ¼Í¼£¬¶øÔÚImmutable Êý¾ÝÄ£ÐÍÖУ¬²»»á¶ÔÔ­ÓÐÊý¾Ý½øÐиü¸Ä£¬¶øÊDzÉÓòåÈëÐ޸ļͼµÄÐÎʽ¸ü¸ÄÀúÊ·¼Í¼¡£

ͼ£¨E£©

ÉÏÎÄËùÌá¼°µÄViewÊÇͼ£¨E£©ÖÐÔ¤ÏȼÆËãµÃµ½µÄÏà¹ØÊÓͼ£¬ÀýÈ磺2016-06-21µ±ÌìËùÓÐÉÏÏßµÄagentÊý£¬Ã¿ÌõÈÈÏß¡¢¹«Ë¾ÏÂÉÏÏßµÄAgentÊý¡£¸ù¾ÝÒµÎñÐèÒª£¬Ô¤ÏȼÆËã³ö½á¹û¡£´Ë¹ý³ÌÏ൱ÓÚ´«Í³Êý²Ö½¨Ä£µÄÓ¦Óò㣬ӦÓòãÒ²ÊǸù¾ÝÒµÎñ³¡¾°£¬Ô¤Ïȼӹ¤³öµÄview¡£

Speed Layer

Batch LayerÄܹ»ºÜºÃµÄ´¦ÀíÀëÏßÊý¾Ý£¬µ«ÊÇÔںܶೡ¾°Êý¾Ý²»¶Ï²úÉú£¬²¢ÇÒÒµÎñ³¡¾°ÐèҪʵʱ²éѯ¡£Speed Layer¾ÍÊÇÉè¼ÆÓÃÀ´´¦ÀíÔöÁ¿ÊµÊ±Êý¾Ý¡£

Speed LayerºÍBatch Layer±È½ÏÀàËÆ£¬¶ÔÊý¾Ý½øÐмÆËã²¢Éú³ÉRealtime View£¬ÆäÖ÷ÒªµÄÇø±ðÔÚÓÚ£º

a¡¢Speed Layer´¦ÀíµÄÊý¾ÝÊÇ×î½üµÄÔöÁ¿Êý¾ÝÁ÷£¬Batch Layer´¦ÀíµÄÊÇÈ«ÌåÊý¾Ý¼¯¡£

b¡¢Speed LayerΪÁËЧÂÊ£¬½ÓÊÕµ½ÐÂÊý¾Ý¼°Ê±¸üÐÂRealtime View£¬¶øBatch Layer¸ù¾ÝÈ«ÌåÀëÏßÊý¾ÝÖ±½ÓµÃµ½Batch View¡£Speed LayerÊÇÒ»ÖÖÔöÁ¿¼ÆË㣬¶ø·ÇÖØÐ¼ÆË㣨recomputation£©¡£

c¡¢Speed LayerÒòΪ²ÉÓÃÔöÁ¿¼ÆË㣬ËùÒÔÑÓ³ÙС£¬¶øBatch LayerÊÇÈ«Êý¾Ý¼¯µÄ¼ÆË㣬ºÄʱ±È½Ï³¤¡£

×ÛÉÏËùËߣ¬Speed LayerÊÇBatch LayerÔÚʵʱÐÔÉϵÄÒ»¸ö²¹³ä¡£Èçͼ£¨F£©

ͼ£¨F£©

Speed Layer¿É×ܽáΪÒÔ£¨C£©

Realtime View £½ function£¨Realtime View£¬ new data£©£»

Lambda Architecture½«Êý¾Ý´¦Àí·Ö½âΪBatch Layer ºÍSpeed LayerÓÐÈçÏÂÓŵ㣺

a¡¢ÈÝ´íÐÔ£ºSpeed LayerÖд¦ÀíµÄÊý¾Ý²»¶ÏдÈëBatch Layer£¬µ±Batch LayerÖÐÖØÐ¼ÆËãÊý¾Ý¼¯°üº¬Speed Layer´¦ÀíµÄÊý¾Ý¼¯ºó£¬µ±Ç°µÄRealtime View¾Í¿ÉÒÔ¶ªÆú£¬Õâ¾ÍÒâζ×ÅSpeed Layer´¦ÀíÖÐÒýÈëµÄ´íÎó£¬ÔÚBatch LayerÖØÐ¼ÆËãʱ¶¼¿ÉÒԵõ½ÐÞÖ¤¡£ÕâµãÒ²¿ÉÒÔ¿´³ÉʱCAPÀíÂÛÖеÄ×îÖÕÒ»ÖÂÐÔ£¨Eventual Consistency£©µÄÌåÏÖ¡£

b¡¢¸´ÔÓÐÔ¸ôÀë¡£Batch Layer´¦ÀíµÄÊÇÀëÏßÊý¾Ý£¬¿ÉÒԺܺõÄÕÆ¿Ø¡£Speed Layer²ÉÓÃÔöÁ¿Ëã·¨´¦ÀíʵʱÊý¾Ý£¬¸´ÔÓÐÔ±ÈBatch LayerÒª¸ßºÜ¶à¡£Í¨¹ý·Ö¿ªBatch LayerºÍSpeed Layer£¬°Ñ¸´ÔÓÐÔ¸ôÀëµ½Speed Layer£¬¿ÉÒԺܺõÄÌá¸ßÕû¸öϵͳµÄ³°ôÐԺͿɿ¿ÐÔ¡£

Serving Layer

Batch Layerͨ¹ý¶ÔMaster DatasetÖ´Ðвéѯ»ñµÃBatch View£¬Speed Layerͨ¹ýÔöÁ¿¼ÆËãÌṩRealtime View¡£Lambda¼Ü¹¹µÄServingLayerÓÃÓÚÏìÓ¦Óû§µÄ²éѯÇëÇ󣬺ϲ¢Batch ViewºÍRealtime ViewÖеĽá¹ûÊý¾Ý¼¯µ½×îÖÕµÄÊý¾Ý¼¯£¬Èçͼ£¨G£©¡£Òò´Ë£¬Serving LayerµÄÖ°Ôð°üº¬£º

a¡¢¶Ôbatch ViewºÍRealTime ViewµÄËæ»ú·ÃÎÊ

b¡¢¸üÐÂBatch VeiwºÍRealTime View£¬²¢¸ºÔð½áºÏÁ½ÕßµÄÊý¾Ý£¬¶ÔÓû§ÌṩͳһµÄ½Ó¿Ú

ͼ£¨G£©

×ÛÉÏËùËߣ¬Serving Layer²ÉÓÃÈçϵÈʽ£¨D£©±íʾ£º

Query £½ function£¨Batch Views£¬ Realtime View£©¡£

Lambda ¼Ü¹¹×é¼þÑ¡ÐÍ

ÏÂͼ¸ø³öÁËLambda¼Ü¹¹Öи÷×é¼þÔÚ´óÊý¾ÝÉú̬ϵͳÖкͰ¢ÀOÍŵij£ÓÃ×é¼þ¡£

Êý¾ÝÁ÷´æ´¢Ñ¡Óò»¿É±äÈÕÖ¾µÄ·Ö²¼Ê½ÏµÍ³Kafa¡¢TT¡¢Metaq£»Batch LayerÊý¾Ý¼¯µÄ´æ´¢Ñ¡ÓÃHadoopµÄHDFS»òÕß°¢ÀïÔÆµÄODPS£»Batch ViewµÄ¼Ó¹¤²ÉÓÃMapReduce£»Batch ViewÊý¾ÝµÄ´æ´¢²ÉÓÃMysql£¨²éѯÉÙÁ¿µÄ×î½ü½á¹ûÊý¾Ý£©¡¢Hbase£¨²éѯ´óÁ¿µÄÀúÊ·½á¹ûÊý¾Ý£©¡£Speed Layer²ÉÓÃÔöÁ¿Êý¾Ý´¦ÀíStorm¡¢Flink£»Realtime ViewÔöÁ¿½á¹ûÊý¾Ý¼¯²ÉÓÃÄÚ´æÊý¾Ý¿âRedis¡£

ͼ£¨H£©

LambdaÊÇÒ»¸öͨÓÿò¼Ü£¬¸÷Ä£¿éÑ¡ÐͲ»Òª¾ÖÏÞÓÚÉÏÃæ¸ø³öµÄ×é¼þ£¬ÌرðÊÇviewµÄÑ¡ÐÍ¡£ÒòΪViewÊǺ͸÷ÒµÎñ¹ØÁª·Ç³£´óµÄ¸ÅÄViewÑ¡Ôñ×é¼þʱҪ¸ù¾ÝÒµÎñµÄÐèÇó£¬Ñ¡Ôñ×îºÏÊʵÄ×é¼þ¡£

Lambda¼Ü¹¹µÄÆÀ¹À

Óŵ㣺

a¡¢Êý¾ÝµÄ²»¿É±äÐÔ¡£ÀïÃæ¸ø³öµÄÊý¾Ý´«ÊäÄ£ÐÍÊÇÔÚ³õʼ»¯½×¶Î¶ÔÊý¾Ý½øÐÐʵÀý»¯£¬ÕâÑùµÄ×ö·¨ÊÇÄÜ»ñÒæÁ¼¶àµÄ¡£Äܹ»Ê¹µÃ´óÁ¿µÄMapReduce¹¤×÷±äµÃÓм£¿ÉÑ­£¬´Ó¶ø±ãÓÚÔÚ²»Í¬½×¶Î½øÐжÀÁ¢µ÷ÊÔ¡£

b¡¢Ç¿µ÷ÁËÊý¾ÝµÄÖØÐ¼ÆËãÎÊÌâ¡£ÔÚÁ÷´¦ÀíÖÐÖØÐ¼ÆËãÊǸöÖ÷ÒªÌôÕ½£¬µ«ÊǾ­³£±»ºöÊÓ¡£±È·½Ëµ£¬Ä³¹¤×÷Á÷µÄÊý¾ÝÊä³öÊÇÓÉÊäÈë¾ö¶¨µÄ£¬ÄÇôһµ©´úÂë·¢Éú¸Ä¶¯£¬ÎÒÃǽ«²»µÃ²»ÖØÐ¼ÆËãÀ´¼ìÊÓ±ä¸üµÄЧ¶È¡£Ê²Ã´Çé¿öÏ´úÂë»á¸Ä¶¯ÄØ£¿ÀýÈçÐèÇó·¢Éú±ä¸ü£¬¼ÆËã×Ö¶ÎÐèÒªµ÷Õû»òÕß³ÌÐò·¢³ö´íÎó£¬ÐèÒª½øÐе÷ÊÔ¡£

ȱµã£º

a¡¢Jay KrepsÈÏΪLambda°üº¬¹ÌÓеĿª·¢ºÍÔËάµÄ¸´ÔÓÐÔ¡£LambdaÐèÒª½«ËùÓеÄË㷨ʵÏÖÁ½´Î£¬Ò»´ÎÊÇΪÅú´¦Àíϵͳ£¬ÁíÒ»´ÎÊÇΪʵʱϵͳ£¬»¹ÒªÇó²éѯµÃµ½µÄÊÇÁ½¸öϵͳ½á¹ûµÄºÏ²¢¡£

ÓÉÓÚ´æÔÚÒÔÉÏȱµã£¬LinkedinµÄJay krepsÌá³öÁËKappa¼Ü¹¹Èçͼ£¨I£©£º

ͼ£¨I£©

1¡¢Ê¹ÓÃKafka»òÆäËüϵͳÀ´¶ÔÐèÒªÖØÐ¼ÆËãµÄÊý¾Ý½øÐÐÈÕÖ¾¼Ç¼£¬ÒÔ¼°Ìṩ¸ø¶à¸ö¶©ÔÄÕßʹÓá£ÀýÈçÐèÒªÖØÐ¼ÆËã30ÌìÄÚµÄÊý¾Ý£¬ÎÒÃÇ¿ÉÒÔÔÚKafkaÖÐÉèÖÃ30ÌìµÄÊý¾Ý±£ÁôÖµ¡£

2¡¢µ±ÐèÒª½øÐÐÖØÐ¼ÆËãʱ£¬Æô¶¯Á÷´¦Àí×÷ÒµµÄµÚ¶þ¸öʵÀý¶Ô֮ǰ»ñµÃµÄÊý¾Ý½øÐд¦Àí£¬Ö®ºóÖ±½Ó°Ñ½á¹ûÊý¾Ý·ÅÈëеÄÊý¾ÝÊä³ö±íÖС£

3¡¢µ±×÷ÒµÍê³Éʱ£¬ÈÃÓ¦ÓóÌÐòÖ±½Ó¶ÁȡеÄÊý¾Ý¼Ç¼±í¡£

4¡¢Í£Ö¹ÀúÊ·×÷Òµ£¬É¾³ý¾ÉµÄÊý¾ÝÊä³ö±í¡£

Kappa¼Ü¹¹ÔÝʱδ×öÉîÈëÁ˽⣬Ôڴ˲»×öÆÀ¼Û¡£ÎÒ¸öÈ˾õµÃ£¬²»Í¬µÄÊý¾Ý¼Ü¹¹Óи÷×ÔµÄÓÅȱµã£¬ÎÒÃÇʹÓõÄʱºòÖ»Äܸù¾ÝÓ¦Óó¡¾°£¬Ñ¡Ôñ¸üºÏÊʵļܹ¹£¬²ÅÄÜÑﳤ±Ü¶Ì¡£

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

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ