¸üÐÂʱ¼ä:2023Äê08ÔÂ22ÈÕ11ʱ46·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
DorisÖ÷ÒªÕûºÏÁËGoogle Mesa(Êý¾ÝÄ£ÐÍ)£¬Apache Impala(MPP Query Engine)ºÍApache ORCFile (´æ´¢¸ñʽ£¬±àÂëºÍѹËõ)µÄ¼¼Êõ¡£
ΪʲôҪ½«ÕâÈýÖÖ¼¼ÊõÕûºÏ?
Mesa¿ÉÒÔÂú×ãÎÒÃÇÐí¶à´æ´¢ÐèÇóµÄÐèÇ󣬵«ÊÇMesa±¾Éí²»ÌṩSQL²éѯÒýÇæ¡£
ImpalaÊÇÒ»¸ö·Ç³£ºÃµÄMPP SQL²éѯÒýÇæ£¬µ«ÊÇȱÉÙÍêÃÀµÄ·Ö²¼Ê½´æ´¢ÒýÇæ¡£
×ÔÑÐÁÐʽ´æ´¢£º´æ´¢²ã¶Ô´æ´¢Êý¾ÝµÄ¹ÜÀíͨ¹ýstorage_root_path·¾¶½øÐÐÅäÖã¬Â·¾¶¿ÉÒÔÊǶà¸ö¡£´æ´¢Ä¿Â¼ÏÂÒ»²ã°´ÕÕ·ÖͰ½øÐÐ×éÖ¯£¬·ÖͰĿ¼Ï´æ·Å¾ßÌåµÄtablet£¬°´ÕÕtablet_idÃüÃû×ÓĿ¼¡£Òò´ËÑ¡ÔñÁËÕâÈýÖÖ¼¼ÊõµÄ×éºÏ¡£

DorisµÄϵͳ¼Ü¹¹ÈçÏ£¬DorisÖ÷Òª·ÖΪFEºÍBEÁ½¸ö×é¼þ¡£
ÕûÌå¼Ü¹¹
DorisµÄ¼Ü¹¹ºÜ¼ò½à£¬Ê¹ÓÃMySQLÐÒ飬Óû§¿ÉÒÔʹÓÃÈκÎMySQL ODBC/JDBCºÍMySQL¿Í»§¶ËÖ±½Ó·ÃÎÊDoris£¬Ö»ÉèFE(Frontend)¡¢BE(Backend)Á½ÖÖ½ÇÉ«¡¢Á½¸ö½ø³Ì£¬²»ÒÀÀµÓÚÍⲿ×é¼þ£¬·½±ã²¿ÊðºÍÔËά¡£
FE£ºFrontend£¬¼´DorisµÄǰ¶Ë½Úµã¡£Ö÷Òª¸ºÔð½ÓÊպͷµ»Ø¿Í»§¶ËÇëÇó¡¢ÔªÊý¾ÝÒÔ¼°¼¯Èº¹ÜÀí¡¢²éѯ¼Æ»®Éú³ÉµÈ¹¤×÷¡£
BE£ºBackend£¬¼´DorisµÄºó¶Ë½Úµã¡£Ö÷Òª¸ºÔðÊý¾Ý´æ´¢Óë¹ÜÀí¡¢²éѯ¼Æ»®Ö´Ðеȹ¤×÷¡£
FE,BE¶¼¿ÉÏßÐÔÀ©Õ¹?FEÖ÷ÒªÓÐÁ½¸ö½ÇÉ«£¬Ò»¸öÊÇfollower£¬ÁíÒ»¸öÊÇobserver¡£¶à¸öfollower×é³ÉÑ¡¾Ù×飬»áÑ¡³öÒ»¸ömaster£¬masterÊÇfollowerµÄÒ»¸öÌØÀý£¬Master¸úfollower£¬Ö÷ÒªÊÇÓÃÀ´´ïµ½ÔªÊý¾ÝµÄ¸ß¿ÉÓ㬱£Ö¤µ¥½Úµãå´»úµÄÇé¿öÏ£¬ÔªÊý¾ÝÄܹ»ÊµÊ±µØÔÚÏ߻ָ´£¬¶ø²»Ó°ÏìÕû¸ö·þÎñ¡£
Observer½Úµã½ö´Óleader½Úµã½øÐÐÔªÊý¾Ýͬ²½£¬²»²ÎÓëÑ¡¾Ù¡£¿ÉÒÔºáÏòÀ©Õ¹ÒÔÌṩԪÊý¾ÝµÄ¶Á·þÎñµÄÀ©Õ¹ÐÔ¡£
Êý¾ÝµÄ¿É¿¿ÐÔÓÉBE±£Ö¤£¬BE»á¶ÔÕû¸öÊý¾Ý´æ´¢¶à¸±±¾»òÕßÊÇÈý¸±±¾¡£¸±±¾Êý¿É¸ù¾ÝÐèÇó¶¯Ì¬µ÷Õû¡£

ÔªÊý¾Ý½á¹¹
Doris²ÉÓÃ==PaxosÐÒéÒÔ¼°Memory+ Checkpoint + JournalµÄ»úÖÆ==À´È·±£ÔªÊý¾ÝµÄ¸ßÐÔÄܼ°¸ß¿É¿¿¡£ÔªÊý¾ÝµÄÿ´Î¸üУ¬¶¼»á×ñÕÕÒÔϼ¸²½£º
£¨1£©Ð´Èëµ½´ÅÅ̵ÄÈÕÖ¾ÎļþÖÐ
£¨2£©ÔÙдµ½ÄÚ´æÖÐ
£¨3£©¶¨ÆÚcheckpointµ½±¾µØ´ÅÅÌÉÏ
Ï൱ÓÚÊÇÒ»¸ö´¿ÄÚ´æµÄÒ»¸ö½á¹¹£¬Ò²¾ÍÊÇ˵ËùÓеÄÔªÊý¾Ý¶¼»á»º´æÔÚÄÚ´æÖ®ÖУ¬´Ó¶ø±£Ö¤FEÔÚå´»úºóÄܹ»¿ìËÙ»Ö¸´ÔªÊý¾Ý£¬¶øÇÒ²»¶ªÊ§ÔªÊý¾Ý¡£
Leader¡¢followerºÍobserverËüÃÇÈý¸ö¹¹³ÉÒ»¸ö¿É¿¿µÄ·þÎñ£¬Èç¹û·¢Éú½Úµãå´»úµÄÇé¿ö£¬Ò»°ãÊDz¿ÊðÒ»¸öleaderÁ½¸öfollower£¬Ä¿Ç°À´Ëµ»ù±¾ÉÏÒ²ÊÇÕâô²¿ÊðµÄ¡£¾ÍÊÇ˵Èý¸ö½ÚµãÈ¥´ïµ½Ò»¸ö¸ß¿ÉÓ÷þÎñ¡£µ¥»úµÄ½Úµã¹ÊÕϵÄʱºòÆäʵ»ù±¾ÉÏÈý¸ö¾Í¹»ÁË£¬ÒòΪFE½Úµã±Ï¾¹ËüÖ»´æÁËÒ»·ÝÔªÊý¾Ý£¬ËüµÄѹÁ¦²»´ó£¬ËùÒÔÈç¹ûFEÌ«¶àµÄʱºòËü»áÈ¥ÏûºÄ»úÆ÷×ÊÔ´£¬ËùÒÔ¶àÊýÇé¿öÏÂÈý¸ö¾Í×ã¹»ÁË£¬¿ÉÒÔ´ïµ½Ò»¸öºÜ¸ß¿ÉÓõÄÔªÊý¾Ý·þÎñ¡£
±±¾©Ð£Çø