±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq£¬±¾Îļòµ¥µÄ½éÉÜÁ˵εε¥¼¯Èº¼Ü¹¹Æ¿¾±ÒÔ¼°µ¥¼¯ÈºÆ¿¾±µÄÌôÕ½¼°¶à¼¯Èº¼Ü¹¹Êµ¼ù¾Ñ飬ϣÍû¶ÔÄúµÄѧϰÓаïÖú¡£ |
|
Elasticsearch ÊÇ»ùÓÚ Lucene ʵÏֵķֲ¼Ê½ËÑË÷ÒýÇæ£¬ÌṩÁ˺£Á¿Êý¾Ýʵʱ¼ìË÷ºÍ·ÖÎöÄÜÁ¦¡£Elastic
¹«Ë¾¿ªÔ´µÄһϵÁвúÆ·×é³ÉµÄ Elastic Stack£¬¿ÉÒÔΪÈÕÖ¾·þÎñ¡¢ËÑË÷ÒýÇæ¡¢ÏµÍ³¼à¿ØµÈÌṩ¼òµ¥¡¢Ò×ÓõĽâ¾ö·½°¸¡£
µÎµÎ Elasticsearch ¼ò½é
µÎµÎ 2016 Äê³õ¿ªÊ¼¹¹½¨ Elasticsearch ƽ̨£¬Èç½ñÒѾ·¢Õ¹µ½³¬¹ý 3500+ Elasticsearch
ʵÀý£¬³¬¹ý 5PB µÄÊý¾Ý´æ´¢£¬·åֵдÈë tps ³¬¹ýÁË 2000w/s µÄ³¬´ó¹æÄ£¡£
Elasticsearch ÔڵεÎÓÐ×ŷdz£·á¸»µÄʹÓó¡¾°£¬ÀýÈçÏßÉϺËÐĵĴò³µµØÍ¼ËÑË÷£¬¿Í·þ¡¢ÔËÓªµÄ¶àά¶È²éѯ£¬µÎµÎÈÕÖ¾·þÎñµÈ½üǧ¸öƽ̨Óû§¡£
³¬´óµÄ¹æÄ£ºÍ·á¸»µÄ³¡¾°¸øµÎµÎ Elasticsearch ƽ̨´øÀ´Á˼«´óµÄÌôÕ½£¬ÎÒÃÇÔÚÕâÆÚ¼ä»ýÀÛÁ˷ḻ¾Ñ飬ҲȡµÃÁËһЩ³É¹û¡£±¾Îĸø´ó¼Ò·ÖÏíϵεÎÔÚ
Elasticsearch ¶à¼¯Èº¼Ü¹¹µÄʵ¼ù¡£
µ¥¼¯Èº¼Ü¹¹Æ¿¾±
½éÉܵ¥¼¯Èº¼Ü¹¹Æ¿¾±Ç°£¬ÏÈÀ´¿´ÏµεÎ
Elasticsearch µ¥¼¯ÈºµÄ¼Ü¹¹¡£

µÎµÎÔÚµ¥¼¯Èº¼Ü¹¹µÄʱºò£¬Ð´ÈëºÍ²éѯ¾ÍÒѾͨ¹ý Sink ·þÎñºÍ Gateway ·þÎñ¹Ü¿ØÆðÀ´¡£
Sink ·þÎñ
µÎµÎ¼¸ºõËùÓÐдÈë Elasticsearch µÄÊý¾Ý¶¼ÊǾÓÉ kafka Ïû·ÑÈëµ½ Elasticsearch¡£kafka
µÄÊý¾Ý°üÀ¨ÒµÎñ log Êý¾Ý¡¢mysql binlog Êý¾ÝºÍÒµÎñ×ÔÖ÷Éϱ¨µÄÊý¾Ý£¬Sink ·þÎñ½«ÕâЩÊý¾ÝʵʱÏû·ÑÈëµ½
Elasticsearch¡£
×î³õÉè¼Æ Sink ·þÎñÊÇÏë¶ÔдÈë Elasticsearch ¼¯Èº½øÐйܿأ¬±£»¤ Elasticsearch
¼¯Èº£¬·ÀÖ¹º£Á¿µÄÊý¾ÝдÈëÍÏ¿å Elasticsearch£¬Ö®ºóÎÒÃÇÒ²Ò»Ö±ÑØÓÃÁË Sink ·þÎñ£¬²¢½«¸Ã·þÎñ´Ó
Elasticsearch ƽ̨·ÖÀë³öÈ¥£¬³ÉÁ¢µÎµÎ Sink Êý¾ÝͶµÝƽ̨£¬¿ÉÒÔ´Ó kafka »òÕß
MQ ʵʱͬ²½Êý¾Ýµ½ Elasticsearch¡¢HDFS¡¢Ceph µÈ¶à¸ö´æ´¢·þÎñ¡£
ÓÐÁ˶༯Ⱥ¼Ü¹¹ºó£¬Elasticsearch ƽ̨¿ÉÒÔÏû·ÑÒ»·Ý MQ Êý¾ÝдÈë¶à¸ö Elasticsearch
¼¯Èº£¬×öµ½¼¯Èº¼¶±ðµÄÈÝÔÖ£¬»¹ÄÜͨ¹ý MQ »ØËÝÊý¾Ý½øÐйÊÕϻָ´¡£
Gateway ·þÎñ
ËùÓÐÒµÎñµÄ²éѯ¶¼ÊǾ¹ý Gateway ·þÎñ£¬Gateway ·þÎñʵÏÖÁË Elasticsearch
µÄ http restful ºÍ tcp ÐÒ飬ҵÎñ·½¿ÉÒÔͨ¹ý Elasticsearch ¸÷ÓïÑÔ°æ±¾µÄ
sdk Ö±½Ó·ÃÎÊ Gateway ·þÎñ£¬Gateway ·þÎñ»¹ÊµÏÖÁË SQL ½Ó¿Ú£¬ÒµÎñ·½¿ÉÒÔÖ±½ÓʹÓÃ
SQL ·ÃÎÊ Elasticsearch ƽ̨¡£
Gateway ·þÎñ×î³õÌṩÁËÓ¦ÓÃȨÏ޵Ĺܿأ¬·ÃÎʼǼ£¬ÏÞÁ÷¡¢½µ¼¶µÈ»ù±¾ÄÜÁ¦£¬ºóÃæËæ×ÅÆ½Ì¨Ñݽø£¬Gateway
·þÎñ»¹ÌṩÁËË÷Òý´æ´¢·ÖÀë¡¢DSL ¼¶±ðµÄÏÞÁ÷¡¢¶à¼¯ÈºÔÖ±¸µÈÄÜÁ¦¡£
Admin ·þÎñ
Õû¸ö Elasticsearch ƽ̨ÓÉ Admin ·þÎñͳһ¹Ü¿ØÆðÀ´¡£Admin ·þÎñÌṩÁËË÷ÒýµÄÉúÃüÖÜÆÚ¹ÜÀí£¬Ë÷ÒýÈÝÁ¿×Ô¶¯¹æ»®£¬Ë÷Òý½¡¿µ·Ö£¬¼¯Èº¼à¿ØµÈ·á¸»µÄƽ̨ÄÜÁ¦£¬ÒÔ¼°Îª
Sink¡¢Gateway ·þÎñÌṩË÷Òý¡¢È¨ÏÞµÈÔªÊý¾ÝÐÅÏ¢¡£
Elasticsearch µ¥¼¯ÈºÆ¿¾±
Ëæ×ŵεΠElasticsearch ƽ̨¹æÄ£µÄ¿ìËÙ·¢Õ¹£¬Elasticsearch ¼¯ÈºÔ½À´Ô½´ó£¬×î´óµÄʱºò£¬ÊÇÓɼ¸°Ų̀ÎïÀí»ú×é³É¼¯Èº£¬µ±Ê±¼¯Èº¹²
3000+ µÄË÷Òý£¬³¬¹ýÁË 50000 ¸ö shard£¬¼¯Èº×ÜÈÝÁ¿´ïµ½ÁË PB ¼¶±ð¡£³¬´óµÄ Elasticsearch
¼¯ÈºÃæÁÙÁ˺ܴóµÄÎȶ¨ÐÔ·çÏÕ£¬ÕâЩ·çÏÕÖ÷ÒªÀ´×ÔÓÚÒÔÏÂÈý¸ö·½Ã棺
1.Elasticsearch ¼Ü¹¹Æ¿¾±
2.Ë÷Òý×ÊÔ´¹²Ïí·çÏÕ
3.ÒµÎñ³¡¾°²îÒì´ó
Elasticsearch ¼Ü¹¹Æ¿¾±
Elasticsearch ¼Ü¹¹ÔÚ¼¯Èº±ä´óµ½Ò»¶¨µÄ¹æÄ£»áÓöµ½Æ¿¾±£¬Æ¿¾±Ö÷Òª¸ú Elasticsearch
ÈÎÎñ´¦ÀíÄ£ÐÍÓйء£
Elasticsearch ¿´ÆðÀ´ÊÇ p2p ¼Ü¹¹£¬µ«Êµ¼ÊÉÏ£¬ÈÔÈ»ÊÇÖÐÐÄ»¯µÄ·Ö²¼Ê½¼Ü¹¹¡£Õû¸ö¼¯ÈºÖ»ÓÐÒ»¸ö
active master¡£master ¸ºÔðÕû¸ö¼¯ÈºµÄÔªÊý¾Ý¹ÜÀí¡£¼¯ÈºµÄËùÓÐÔªÊý¾Ý±£´æÔÚ ClusterState
¶ÔÏóÖУ¬Ö÷Òª°üÀ¨È«¾ÖµÄÅäÖÃÐÅÏ¢¡¢Ë÷ÒýÐÅÏ¢ºÍ½ÚµãÐÅÏ¢¡£Ö»ÒªÔªÊý¾Ý·¢ÉúÐ޸쬶¼µÃÓÉ master Íê³É¡£
Elasticsearch master µÄÈÎÎñ´¦ÀíÊǵ¥Ïß³ÌÍê³ÉµÄ£¬Ã¿´Î´¦ÀíÈÎÎñ£¬Éæ¼°µ½ ClusterState
µÄ¸Ä¶¯£¬¶¼»á½«×îÐ嵀 ClusterState ¶ÔÏó publish ¸ø¼¯ÈºµÄÈ«²¿½Úµã£¬²¢×èÈûµÈ´ýÈ«²¿½Úµã½ÓÊܵ½±ä¸üÏûÏ¢£¬´¦ÀíÍê±ä¸üÈÎÎñºó£¬²ÅÍê³É±¾´ÎÈÎÎñ¡£
ÕâÑùµÄ¼Ü¹¹Ä£Ð͵¼ÖÂÔÚ¼¯Èº¹æÄ£±ä´óµÄʱºò³öÏÖºÜÑÏÖØµÄÎȶ¨ÐÔ·çÏÕ¡£
Èç¹ûÓнڵã¼ÙËÀ£¬±ÈÈç jvm ÄÚ´æ±»´òÂú£¬½ø³Ì»¹´æ»î×Å£¬ÏìÓ¦ master ÈÎÎñʱ¼ä»áºÜ³¤£¬Ó°Ïìµ¥¸öÈÎÎñµÄÍê³Éʱ¼ä¡£
ÓдóÁ¿»Ö¸´ÈÎÎñµÄʱºò£¬ÓÉÓÚ master Êǵ¥Ï̴߳¦ÀíµÄ£¬ËùÓÐÈÎÎñÐèÒªÅŶӴ¦Àí£¬²úÉú´óÁ¿µÄ pending_tasks¡£»Ö¸´Ê±¼ä±äµÃºÜ³¤¡£
Elasticsearch µÄÈÎÎñ·ÖÁËÓÅÏȼ¶£¬ÀýÈç put-mapping ÈÎÎñÓÅÏȼ¶µÍÓÚ´´½¨¡¢»Ö¸´Ë÷Òý£¬Èç¹ûһЩҵÎñÉϵÍÓÅÏȼ¶Ë÷ÒýÔÚ»Ö¸´£¬Õý³£Ë÷ÒýÓÐÐÂ×Ö¶ÎдÈëʱ»á±»×èÈû¡£
master ÈÎÎñ´¦ÀíÄ£ÐÍ£¬ÔÚÈÎÎñÖ´ÐÐÍê³Éºó£¬»á»Øµ÷´óÁ¿ listener ´¦ÀíÔªÊý¾Ý±ä¸ü¡£ÆäÖÐÓÐЩ»Øµ÷Âß¼ÔÚË÷Òý¡¢shard
ÅòÕͺ󣬻á³öÏÖ´¦Àí»ºÂýµÄÎÊÌ⣬µ± shard ÅòÕ͵½ 5-6w ʱ£¬Ò»Ð©ÈÎÎñ´¦ÀíÐèÒª 8-9s µÄʱ¼ä£¬ÑÏÖØÓ°ÏìÁ˼¯ÈºµÄ»Ö¸´ÄÜÁ¦¡£
Õë¶ÔÕâЩÎÊÌ⣬Elasticsearch Ò²ÔÚ²»¶ÏÓÅ»¯£¬Õë¶ÔÏàͬÀàÐ͵ÄÈÎÎñ£¬±ÈÈç put-mapping
ÈÎÎñ£¬master »áÒ»´ÎÐÔ´¦ÀíËùÓжѻýÔÚ¶ÓÁÐÀïµÄÏàͬÈÎÎñ¡£ClusterState ¶ÔÏóÖ»´«µÝ diff
ÄÚÈÝ£¬ÓÅ»¯»Øµ÷ listener Ä£¿éµÄ´¦ÀíºÄʱ»·½ÚµÈµÈ¡£
µ«ÊÇÓÉÓÚÕû¸ö¼¯ÈºµÄÈÎÎñ¶¼¼¯ÖÐÔÚÒ»¸ö master µÄÒ»¸öÏß³ÌÖд¦Àí£¬ÔÚÏß³ÌÖÐÐèҪͬ²½ÔªÊý¾Ý±ä¸ü¸ø¼¯ÈºµÄÿ¸ö½Úµã£¬²¢×èÈûµÈ´ýÈ«²¿½Úµãͬ²½Íê³É¡£Õâ¸öÄ£ÐÍÔÚ¼¯Èº¹æÄ£²»¶ÏÅòÕÍʱ£¬Îȶ¨ÐԻ᲻¶ÏϽµ¡£
Ë÷Òý×ÊÔ´¹²Ïí·çÏÕ
Elasticsearch Ë÷ÒýÊÇÓɶà¸ö shard ×é³É£¬master »á¶¯Ì¬¸øÕâЩ shard
·ÖÅä½Úµã×ÊÔ´¡£ ²»Í¬µÄË÷Òý»á´æÔÚ×ÊÔ´»ì²¿µÄÇé¿ö¡£

Elasticsearch ͨ¹ý Shard Allocation Awareness µÄÉè¼Æ£¬¿ÉÒÔ½«¼¯ÈºµÄ½Úµã°´¼¯ºÏ»®·Ö³É²»Í¬µÄ
rack¡£ÔÚ·ÖÅäË÷Òýʱ¿ÉÒÔÖ¸¶¨ rack ÁÐ±í£¬ÕâÑùË÷Òý¾ÍÖ»»á·ÖÅäÔÚÖ¸¶¨ rack ¶ÔÓ¦µÄ½ÚµãÁбíÖУ¬´Ó¶ø×öµ½ÎïÀí×ÊÔ´µÄ¸ôÀë¡£
µ«ÊÇʵ¼ÊʹÓÃÖУ¬ºÜ¶àÈÝÁ¿Ð¡µÄË÷ÒýÓÉÓÚÕ¼ÓÃ×ÊÔ´ÓÐÏÞ£¬»á»ì²¿ÔÚһЩ½ÚµãÖС£ÕâÖÖÇé¿öÏ£¬»áÒòΪ¸ö±ðË÷ÒýµÄ²éѯ¡¢Ð´ÈëÁ¿ìÉý£¬¶øÓ°Ïìµ½ÆäËûË÷ÒýµÄÎȶ¨ÐÔ¡£Èç¹û³öÏÖÁ˽ڵã¹ÊÕÏ£¬¾Í»áÓ°Ïìµ½Õû¸ö¼¯ÈºµÄÎȶ¨ÐÔ¡£
Õû¸ö¼¯Èº master¡¢clientnode ×ÊÔ´Êǹ²ÏíµÄ£¬master ·çÏÕÇ°ÃæÒѾµ¥¶ÀÌá¼°£¬clientnode
¹²Ïí´øÀ´µÄ gc¡¢¶¶¶¯¡¢Òì³£ÎÊÌâ¶¼»áÓ°Ïìµ½¼¯ÈºÄÚµÄÈ«²¿Ë÷Òý¡£
ÒµÎñ³¡¾°²îÒì´ó
Elasticsearch ÊÊÓõÄÒµÎñ³¡¾°²îÒìÌØ±ð´ó¡£
Õë¶ÔÏßÉϺËÐĵÄÈë¿ÚËÑË÷£¬Ò»°ã°´³ÇÊл®·ÖË÷Òýºó£¬Ë÷ÒýÈÝÁ¿²»´ó£¬Êý¾ÝûÓÐʵʱдÈë»òÕßʵʱдÈë tps
ºÜС£¬±ÈÈçµØÍ¼ poi Êý¾Ý²ÉÓÃÀëÏ߸üеķ½Ê½£¬ÍâÂôÉ̼ҡ¢²ËƷдÈëÁ¿Ò²ºÜС¡£µ«ÊDzéѯµÄ qps ºÜ¸ß£¬²éѯ¶Ô
rt µÄƽ¾ùʱ¼äºÍ¶¶¶¯Çé¿öÒªÇóºÜ¸ß¡£
Õë¶ÔÈÕÖ¾¼ìË÷µÄµÄ³¡¾°£¬ÊµÊ±Ð´ÈëÁ¿Ìرð´ó£¬ÓÐЩË÷ÒýÉõÖÁ³¬¹ýÁË 100w/s µÄ tps£¬¸Ã³¡¾°¶ÔÍÌÍÂÁ¿ÒªÇóºÜ¸ß£¬µ«¶Ô²éѯ
qps ºÍ²éѯ rt ÒªÇ󲻸ߡ£
Õë¶Ô binlog Êý¾ÝµÄ¼ìË÷£¬Ð´ÈëÁ¿Ïà±ÈÈÕÖ¾»áСºÜ¶à£¬µ«ÊǶԲéѯµÄ¸´ÔÓ¶È¡¢qps ºÍ rt ÓÐÒ»¶¨µÄÒªÇó¡£
Õë¶Ô¼à¿Ø¡¢·ÖÎöÀàµÄ³¡¾°£¬¾ÛºÏ²éѯÐèÇó»á±È½Ï¶à£¬¶Ô Elasticsearch ÄÚ´æÑ¹Á¦½Ï´ó£¬ÈÝÒ×ÒýÆð½ÚµãµÄ¶¶¶¯ºÍ
gc¡£
ÕâЩ³¡¾°¸÷Ò죬Îȶ¨ÐÔ¡¢ÐÔÄÜÒªÇó¸÷²»ÏàͬµÄ³¡¾°£¬Ò»¸ö Elasticsearch ¼¯Èº¼´Ê¹Ê¹Óø÷ÖÖÓÅ»¯ÊֶΣ¬ºÜÄÑÈ«²¿Âú×ãÐèÇó£¬×îºÃµÄ·½Ê½»¹Êǰ´ÒµÎñ³¡¾°»®·Ö
Elasticsearch ¼¯Èº¡£
¶à¼¯ÈºÌôÕ½
ÕýÊǵ¥¼¯ÈºÃæÁÙÁ˷dz£´óµÄÎȶ¨ÐÔ·çÏÕ£¬ÎÒÃÇ¿ªÊ¼¹æ»®¶à¼¯ÈºµÄ¼Ü¹¹¡£ÎÒÃÇÔÚÉè¼Æ¶à¼¯Èº·½°¸µÄʱºò£¬ÆÚÍû¶ÔÒµÎñ·½ÊÇÁã¸ÐÖªµÄ¡£
дÈ뻹ÊǾ¹ý kafka£¬Sink ·þÎñ¿ÉÒÔ½«²»Í¬ topic µÄÊý¾ÝÈëµ½²»Í¬µÄ Elasticsearch
¼¯Èº¡£
²éѯ¼ÌÐøÍ¨¹ý Gateway ·þÎñ£¬¶øÇÒÒµÎñ·½ÈÔÈ»Ïñ֮ǰһÑù´«µÝË÷ÒýÃû³Æ£¬¶øÎÞÐè¸ÐÖªµ½Æ½Ì¨ÄÚ²¿µÄË÷Òý·Ö²¼¡£ËùÓеÄË÷ÒýÔÚ²»Í¬¼¯ÈºµÄ·Ö²¼Ï¸½Ú£¬¾ùÓÉ
Gateway ·þÎñÆÁ±Î¡£
Õû¸ö¸ÄÔì×î´óµÄÌôÕ½ÔÚÓÚ²éѯ·½Ê½µÄ¼æÈÝ¡£Elasticsearch ²éѯË÷ÒýµÄ·½Ê½·Ç³£Áé»î£¬¿ÉÒÔÖ§³Ö
* ºÅ×÷ΪͨÅä·ûÆ¥Åä¡£ÕâÑùÒ»¸öË÷Òý query ¿ÉÄܲéѯµÄÊǶà¸öË÷Òý£¬±ÈÈçÓÐÈçÏ 3 ¸öË÷Òý£º
1.index_a
2.index_b
3.index_c
ʹÓà index* ²éѯµÄʱºò£¬¿ÉÒÔͬʱ²éѯµ½ index_a¡¢index_b¡¢index_c Èý¸öË÷Òý¡£
Elasticsearch ÕâÖÖʵÏÖ·½Ê½·Ç³£¼òµ¥£¬ÓÉÓÚÒ»´Î query ×îÖÕ²éѯµÄÊǶà¸ö shard
µÄÊý¾Ý£¬ËùÒÔÎÞÂÛ¶ÔÓÚ¾ßÌåµÄË÷Òý£¬»¹ÊÇÄ£ºýµÄË÷Òý£¬¶¼ÊÇÏȸù¾ÝË÷ÒýÃû³ÆµÃµ½ shard ÁÐ±í£¬ÔÙ½«¶à¸ö
shard µÄ query ½á¹û merge µ½Ò»Æð·µ»Ø¡£
ÕâÑùµÄʹÓ÷½Ê½£¬¶ÔÓڶ༯Ⱥ·½°¸¾Í»áÓöµ½ÎÊÌ⣬±ÈÈç index_a ÔÚ A ¼¯Èº£¬index_b ÔÚ
B ¼¯Èº¡¢index_c ÔÚ C ¼¯Èº£¬¶ÔÓÚ index* µÄ query£¬¾ÍÎÞ·¨ÔÚÒ»¸ö¼¯ÈºÉÏÍê³É¡£
tribenode ½éÉÜ
¾¹ýµ÷ÑУ¬ÎÒÃÇ·¢ÏÖ Elasticsearch tribenode ÌØÐÔ¿ÉÒԺܺõÄÂú×ã¶à¼¯Èº²éѯµÄÌØÐÔ¡£
tribenode µÄʵÏַdz£ÇÉÃî¡£
org.elasticsearch.tribe °üÏÂÖ»ÓÐÈý¸öÎļþ£¬ºËÐÄÀàÊÇ TribeService¡£tribenode
µÄºËÐÄÔÀí¾ÍÊÇ merge ÿ¸ö¼¯ÈºµÄ ClusterState ¶ÔÏó³ÉÒ»¸ö¹«¹²µÄ ClusterState
¶ÔÏó£¬ClusterState °üº¬ÁËË÷Òý¡¢shard ºÍ½ÚµãÊý¾Ý·Ö²¼±í¡£¶ø Elasticsearch
µÄ¹¤×÷Âß¼¶¼ÊÇ»ùÓÚ ClusterState ÔªÊý¾ÝÇý¶¯µÄ£¬ËùÒÔ¶ÔÍâ¿´ÆðÀ´¾ÍÊÇÒ»¸ö°üº¬È«²¿Ë÷ÒýµÄµÄ
clientnode¡£

tribenode ͨ¹ýÅäÖöà¸ö Elasticsearch ¼¯ÈºµØÖ·£¬È»ºóÒÔ clientnode
½ÇÉ«·Ö±ðÁ¬½Óÿ¸ö¼¯Èº£¬Ã¿¸ö¼¯Èº¿´ÆðÀ´»á¶àÁËÒ»¸ö clientnode¡£
tribenode ͨ¹ý¸Ã clientnode ½ÇÉ«»ñÈ¡µ½¼¯ÈºµÄ ClusterState ÐÅÏ¢£¬²¢°ó¶¨
listener ¼àÌý ClusterState ±ä»¯¡£tribenode ½«»ñÈ¡µÄËùÓм¯ÈºµÄ ClusterState
ÐÅÏ¢ merge µ½Ò»Æð£¬ÐγÉÒ»¸ö¶ÔÍⲿ·ÃÎÊʹÓÃµÄ ClusterState ¶ÔÏ󣬶ÔÍâÌṩ·þÎñ¡£tribenode
³ýÁË×¢²á listener ºÍ merge ClusterState£¬ÆäËûµÄËùÓÐÂß¼¶¼ÊǸ´ÓÃÁË clientnode
µÄ´úÂë¡£
¿ÉÒÔ¿´µ½ tribenode µÄÓŵ㣺
1.Äܹ»Âú×ã¶à¼¯Èº·ÃÎʵÄÐèÇ󣬶ÔÍâʹÓÃÊÇ͸Ã÷µÄ¡£
2.ʵÏֵļòµ¥¡¢ÓÅÑÅ£¬¿É¿¿ÐÔÓб£Ö¤¡£
ͬʱ tribenode ÓÐЩ²»×ãµÄµØ·½£º
tribenode ±ØÐëÒÔ clientnode ¼ÓÈ뵽ÿ¸ö Elasticsearch ¼¯Èº£¬master
µÄ±ä¸üÈÎÎñ±ØÐëµÈ´ý tribenode µÄ»ØÓ¦²ÅÄܼÌÐø£¬¿ÉÄÜÓ°Ïìµ½Ô¼¯ÈºµÄÎȶ¨ÐÔ¡£
tribenode ²»»á³Ö¾Ã»¯ ClusterState ¶ÔÏó£¬ÖØÆôʱÐèÒª´Óÿ¸ö Elasticsearch
¼¯Èº»ñȡԪÊý¾Ý¡£¶øÔÚ»ñȡԪÊý¾ÝÆÚ¼ä£¬tribenode ¾ÍÒѾÄܹ»Ìṩ·ÃÎÊ£¬»áµ¼Ö²éѯµ½»¹ÔÚ³õʼ»¯Öеļ¯ÈºË÷Òý·ÃÎÊʧ°Ü¡£tribenode
Á¬½ÓµÄ¼¯Èº¶àÁË£¬³õʼ»¯»á±äµÃºÜÂý¡£Õë¶Ô¸ÃȱÏÝ£¬ÎÒÃÇÆ½Ì¨ÔÚÖØÆôij¸ö tribenode ¼¯ÈºÊ±£¬½« Gateway
·ÃÎʸü¯ÈºµÄÈ«²¿Á÷Á¿Çе½±¸·Ý tribenode ¼¯Èº½â¾ö¡£
Èç¹û¶à¸ö¼¯ÈºÓÐÏàͬµÄË÷ÒýÃû³Æ£¬tribenode Ö»ÄÜÉèÖÃÒ»ÖÖ perfer ¹æÔò£ºËæ»ú¡¢¶ªÆú¡¢prefer
Ö¸¶¨¼¯Èº¡£Õâ¿ÉÄÜ´øÀ´²éµ½²»·ûºÏÔ¤ÆÚµÄÒì³£¡£µÎµÎ Elasticsearch ƽ̨ͨ¹ýͳһ¹Ü¿ØË÷Òý£¬±ÜÃâÁËͬһ¸öË÷ÒýÃû³Æ³öÏÖÔÚ
tribenode Á¬½ÓµÄ¶à¸ö¼¯ÈºÖС£
ÕýÊÇ tribenode ÓÐÁËÕâЩ覴ã¬Elasticsearch Ôڸ߰汾ÒýÈëÁË Cross Cluster
Search µÄÉè¼Æ£¬Cross Cluster ²»»áÒÔ½ÚµãµÄÐÎʽÁ¬½Óµ½ÆäËû¼¯Èº£¬Ö»Êǽ«ÇëÇó´úÀí¡£Ä¿Ç°ÎÒÃÇ»¹ÔÚÆÀ¹À
Cross Cluster µÄ·½°¸£¬ÕâÀï²»Õ¹¿ª½éÉÜ¡£
¶à¼¯Èº¼Ü¹¹ÍØÆË
×îÖÕ¸ÄÔìºó£¬ÎÒÃǵļ¯Èº¼Ü¹¹ÍØÆËÈçÏ£º

°´ÕÕ²»Í¬µÄÓ¦Óó¡¾°£¬Æ½Ì¨½« Elasticsearch ¼¯Èº»®·Ö³ÉËÄÖÖÀàÐÍ£¬Log ¼¯Èº¡¢Binlog
¼¯Èº¡¢ÎĵµÊý¾Ý¼¯Èº¡¢¶ÀÁ¢¼¯Èº¡£¹«¹²¼¯ÈºÒ»°ã×î¶à 100 ̨ datanode Ϊ»ù×¼×é³ÉÒ»¸ö¼¯Èº¡£ÎÒÃÇÀûÓõεÎÔÆ
ʵÏÖÁ˼¯ÈºµÄ×Ô¶¯»¯²¿ÊðºÍµ¯ÐÔÀ©ËõÈÝ£¬¿ÉÒԺܷ½±ãµÄˮƽÀ©Õ¹¼¯Èº¡£
Elasticsearch ¼¯ÈºÇ°ÃæÊǶà×é tribenode ¼¯Èº£¬Ö÷ÒªÊÇΪÁ˽â¾ö tribenode
µÄÎȶ¨ÐÔÎÊÌâ¡£
Gateway »áͬʱÁ¬½Ó tribenode ¼¯ÈººÍ Elasticsearch ¼¯Èº£¬¸ù¾ÝÓ¦Ó÷ÃÎʵÄË÷ÒýÁÐ±í£¬ÅäÖÃÓ¦Ó÷ÃÎʵļ¯ÈºÃû³Æ£¬Gateway
¸ù¾Ý¼¯ÈºÃû³Æ£¬½«ÇëÇó´úÀíµ½Ö¸¶¨¼¯Èº·ÃÎÊ£¬Èç¹û·ÃÎʵÄÊÇ tribenode ¼¯Èº£¬Ôò¸ÃÓ¦ÓÿÉÒÔ·ÃÎʵ½¶à¸ö¼¯ÈºµÄË÷Òý¡£
Admin ·þÎñÔò¹Ü¿ØÁËËùÓÐµÄ Elasticsearch ¼¯Èº£¬ÒÔ¼°Ë÷ÒýºÍ¼¯ÈºµÄ¶ÔÓ¦¹ØÏµ¡£Ò»ÏµÁй¦Äܶ¼Õë¶Ô¶à¼¯Èº×öÁ˸ÄÔì¡£
Sink ·þÎñÒѾ´Ó Elasticsearch ƽ̨·ÖÀë³öÈ¥£¬³ÉÁ¢ DSink Êý¾ÝͶµÝƽ̨£¬DSink
Manager ¸ºÔð¹ÜÀí DSink ½Úµã£¬DSink Manager ´Ó Elasticsearch
Admin ·þÎñ»ñÈ¡Ë÷ÒýµÄÔªÊý¾ÝÐÅÏ¢£¬Ï·¢¸ø¶ÔÓ¦µÄ DSink ½Úµã¡£
¶à¼¯Èº¼Ü¹¹Êµ¼ù×ܽá
¶à¼¯Èº¼Ü¹¹ÊÕÒæ
Elasticsearch ¶à¼¯Èº¼Ü¹¹¸ÄÔì¸ø Elasticsearch ƽ̨´øÀ´ÁËÈçÏÂÊÕÒæ£º
Elasticsearch ƽ̨µÄ¸ôÀëÐÔ¿ÉÒÔ´ÓÎïÀí½Úµã¼¶±ðÉÏÉýµ½ Elasticsearch ¼¯Èº¼¶±ð¡£¶ÔÓÚºËÐĵÄÏßÉÏÓ¦Ó㬿ÉÒÔʹÓöÀÁ¢µÄ
Elasticsearch ¼¯ÈºÖ§³Ö¡£
²»Í¬ÀàÐ͵ÄÊý¾Ý°´¼¯Èº»®·Ö£¬±ÜÃâÏ໥ӰÏ죬¼õСÁ˹ÊÕϵÄÓ°ÏìÃæ£¬¶Ôƽ̨Îȶ¨ÐÔ´øÀ´¼«´óµÄÌáÉý¡£
Elasticsearch ƽ̨µÄÀ©Õ¹ÄÜÁ¦½øÒ»²½ÌáÉý£¬Í¨¹ýÐÂÔö¼¯Èº¿ÉÒԺܺõÄ×öµ½Ë®Æ½À©Õ¹¡£
¶à¼¯Èº¼Ü¹¹×îÖÕ×öµ½Á˶ÔÒµÎñ·½ÎÞ¸ÐÖª£¬ÒµÎñ¿´ÆðÀ´£¬Elasticsearch ƽ̨¾ÍÏñÒ»¸öÎÞÏÞ´óµÄ
Elasticsearch ¼¯Èº£¬¶øÎÞÐè¸ÐÖªË÷ÒýÕæÊµµÄ¼¯Èº·Ö²¼¡£
¶à¼¯Èº¼Ü¹¹Êµ¼ù¾Ñé
µÎµÎ Elasticsearch ƽ̨¶à¼¯ÈºµÄ¼Ü¹¹ÒѾÑݽøÁËÒ»Äê°ëʱ¼ä£¬ÕâÆÚ¼äÒ²Óöµ½Ò»Ð©¶à¼¯Èº¼Ü¹¹´øÀ´µÄÌôÕ½¡£
tribenode Îȶ¨ÐÔÌôÕ½£º
Ëæ×ż¯ÈºÊýÁ¿Ô½À´Ô½¶à£¬Ç°ÃæÌáµ½µÄ tribenode ²»×ãÔ½À´Ô½Ã÷ÏÔ£¬±ÈÈç³õʼ»¯µÄʱ¼äÔ½À´Ô½³¤µÈµÈ¡£ÎÒÃDzÉÈ¡µÄÓ¦¶Ô²ßÂÔÊDz¿Êð¶à×é
tribenode ¼¯Èº£¬Óм¸×éÁ¬½ÓÈ«Á¿µÄ¼¯Èº£¬»¥ÎªÔÖ±¸£¬Óм¸×éÖ»Á¬½ÓºËÐĵÄһЩ¼¯Èº£¬ÓÃ×÷¸üÎªÖØÒªµÄ¿ç¼¯Èº·ÃÎʳ¡¾°¡£
tribenode µÄ ClusterState ÔªÊý¾Ý°üº¬ÁËÌ«¶àµÄË÷ÒýºÍ shard£¬Elasticsearch
µÄ search Âß¼ÔÚÓÐЩ case ´¦ÀíÏÂÈÝÒ׳öÏÖºÄʱ¹ý³¤µÄÇé¿ö¡£Elasticsearch ÔÚ
client ½ÓÊÕµ½ search ÇëÇóʱ£¬ÊÇÔÚ netty µÄ io Ïß³ÌÖÐÍê³ÉÇëÇóת·¢¸øÃ¿¸ö shard
µÄ£¬µÍ°æ±¾µÄ Elasticsearch »¹Ã»ÓÐÏÞÖÆÒ»´Î query µÄ shard ÊýÁ¿£¬ÔÚһЩ¸´ÔÓµÄÄ£ºýË÷ÒýÆ¥Åä
shard µÄÂß¼ÖУ¬ÒÔ¼°¸øÃ¿¸ö shard ·¢ËÍ query ÇëÇóʱ£¬»á³öÏֽϸߵĺÄʱ£¬¿ÉÄÜÓг¬¹ý
1-2s µÄ case£¬Õâ»áÓ°Ïìµ½¸Ã netty worker ÉÏµÄÆäËûµÄÇëÇó£¬Ôì³É²¿·ÖÏìÓ¦ì¸ßµÄÇé¿ö¡£ÎÒÃÇÓÅ»¯ÁË
tribenode search Á÷³ÌÖÐһЩË÷Òý¡¢shard ÅòÕÍÖ®ºóµÄºÄʱÂß¼£¬½â¾öÁ˸ÃÎÊÌâ¡£
¶à¼¯ÈºÅäÖᢰ汾ͳһµÄÌôÕ½£º
ÔÚÖ»ÓÐÒ»¸ö¼¯ÈºµÄʱºò£¬Æ½Ì¨Ö»ÓÃά»¤Ò»·Ý¼¯ÈºµÄÅäÖúͰ汾¡£µ±¼¯ÈºÊýÁ¿Ôö¶àºó£¬²»Í¬¼¯Èº¼äµÄ _cluster
settings ÐÅÏ¢»á³öÏÖ²¿·Ö²îÒ죬ÕâЩ²îÒ죬¿ÉÄܻᵼÖ¼¯Èº¼äµÄ¸ºÔز»¾ù£¬»Ö¸´Ëٶȹý¿ì»òÕß¹ýÂýµÈÎÊÌ⣬ÿ¸ö¼¯Èº»¹ÓÐÒ»·Ý»ù´¡µÄË÷ÒýÄ£°åÅäÖã¬ÕâÀïÃæÒ²³öÏÖÁ˲¿·Ö²îÒì¡£Õâ¸öÎÊÌâĿǰÎÒÃÇ»¹ÔÚ½â¾öÖУ¬ÎÒÃǼƻ®½«
Admin ·þÎñ·ÖÀë³ÉË÷Òý¹ÜÀí·þÎñºÍ¼¯Èº¹ÜÀí·þÎñ£¬¼¯Èº¹ÜÀí»áרעÓÚ¼¯Èº°æ±¾¡¢ÅäÖᢲ¿Êð¡¢À©ÈÝ¡¢¼à¿ØµÈ·½Ãæ¶Ô
Elasticsearch ¼¯Èº½øÐиüÈ«ÃæµÄ¹Ü¿Ø¡£
ÎÒÃÇ×öµÄһЩ Elasticsearch Ô´ÂëÓÅ»¯£¬»áÏȺóÔÚ²¿·Ö¼¯ÈºÉÏÏߣ¬ÕâÑùµ¼ÖÂÁ˼¯Èº¼äµÄ°æ±¾»ìÂÒµÄÎÊÌâ¡£ÎÒÃǵĽâ¾ö·½°¸ÊÇÔÚ
Elasticsearch ºÍ Lucene ÄÚÔö¼ÓÄÚ²¿µÄ°æ±¾ºÅ£¬Í¨¹ý¹«Ë¾ÄÚ²¿µÄ·¢²¼ÏµÍ³£¬·¢²¼ Elasticsearch
µÄ¸üУ¬ºóÐø¼¯Èº¹ÜÀí·þÎñ»á½«¼¯ÈºµÄ°æ±¾¹ÜÀíÆðÀ´¡£
¶à¼¯Èº¼äÈÝÁ¿¾ùºâµÄÌôÕ½£º
ÎÒÃÇÖ÷Òª´Ó¿ç¼¯ÈºË÷ÒýÇ¨ÒÆºÍÈÝÁ¿¹æ»®½â¾ö¼¯Èº¼äÈÝÁ¿¾ùºâµÄÌôÕ½£¬ÔÚµ¥ Elasticsearch ¼¯ÈºµÄʱºò£¬Êý¾ÝÇ¨ÒÆ¿ÉÒÔÒÀÀµ
Elasticsearch µÄ rebalance ÄÜÁ¦Íê³É¡£ÔÚʹÓö༯Ⱥ¼Ü¹¹ºó£¬Æ½Ì¨ÄÚ²¿µÄ Elasticsearch
¼¯Èº»á³öÏÖ×ÊÔ´·ÖÅä²»¾ùµÄÎÊÌ⣬ÀýÈçÓÐЩË÷ÒýÈÝÁ¿Ôö³¤µÄºÜ¿ì£¬µ¼ÖÂËùÔÚ¼¯ÈºµÄ×ÊÔ´½ôÕÅ£¬ÓÐЩË÷ÒýÊý¾Ý¼õÉÙ£¬²»ÐèÒªÕ¼ÓÃÌ«¶à×ÊÔ´£¬µ¼Ö¼¯Èº×ÊÔ´¿ÕÏС£ÓÚÊDzúÉúÁËË÷Òý¿ç¼¯ÈºÇ¨ÒƵÄÐèÇó¡£Õë¶ÔÕâ¸öÐèÇó£¬ÎÒÃÇͨ¹ý¸øË÷ÒýÌí¼Ó°æ±¾ºÅ£¬½â¾öÁËË÷Òý¿ç¼¯ÈºÇ¨ÒÆÎÊÌâ¡£Ö®ºóÎÒÃÇÓÐÎÄÕ»áÏêϸµÄ½éÉܸ÷½°¸¡£
µÎµÎ Elasticsearch ƽ̨ʵÏÖÁËË÷ÒýÈÝÁ¿µÄ×Ô¶¯¹æ»®£¬½â¾öÁ˼¯Èº¼äµÄÈÝÁ¿¾ùºâ¡£Elasticsearch
ƽ̨¿ÉÒÔ¶¯Ì¬µÄ¹æ»®Ë÷ÒýµÄÈÝÁ¿¡£µ±Ò»¸ö¼¯ÈºÈÝÁ¿¹æ»®²»×ãʱ£¬Æ½Ì¨¿ÉÒÔ¶¯Ì¬µÄÇ¨ÒÆÒ»²¿·ÖË÷Òýµ½¿ÕÏеļ¯ÈºÖС£ÐµÄË÷Òý½ÓÈëÐèÇó»áÓÅÏȽÓÈëÔÚ¿ÕÏеļ¯Èº×ÊÔ´ÖС£µÎµÎ
Elasticsearch ƽ̨ÊÇÈçºÎʵÏÖË÷ÒýÈÝÁ¿µÄ×Ô¶¯¹æ»®£¬Ò²ÇëÆÚ´ýºóÐøµÄ·ÖÏí¡£
×ܽá
µÎµÎµÄ¶à¼¯Èº¼Ü¹¹£¬×î³õÊÇΪÁ˽â¾ö Elasticsearch µ¥¼¯Èº¼Ü¹¹µÄÆ¿¾±¡£ÎªÁËÖ§³Ö¶à¼¯Èº¼Ü¹¹£¬ºóÃæµÄºÜ¶à×é¼þ¶¼ÐèÒª¿¼ÂÇÁ¬½Ó¶à¸ö¼¯ÈºµÄ³¡¾°£¬¸øÆ½Ì¨¼Ü¹¹´øÀ´ÁËÒ»¶¨µÄ¸´ÔÓÐÔ¡£µ«ÊǶà
Elasticsearch ¼¯Èº´øÀ´µÄÎȶ¨ÐԺ͸ôÀëÐÔµÄÌáÉý£¬ËüËù´øÀ´µÄÊÕÒæÔ¶Ô¶´óÓڼܹ¹µÄ¸´ÔÓÐÔ¡£¸ÄÔì³É¶à¼¯Èº¼Ü¹¹ºó£¬ÎÒÃÇ¿¸×¡ÁË
Elasticsearch ƽ̨¹æÄ£±¬Õ¨Ê½Ôö³¤£¬Elasticsearch ƽ̨µÄ¹æÄ£·ÁË 5 ±¶¶à£¬¶à¼¯Èº¼Ü¹¹ºÜºÃµÄÖ§³ÅÁËÒµÎñµÄ¿ìËÙ·¢Õ¹¡£
|