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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÓŲ½·Ö²¼Ê½×·×Ù¼¼ÊõÔٶȾ«½ø
 
×÷Õß:Yuri Shkuro À´Ô´£ºInfoQ ·¢²¼ÓÚ£º2017-3-23
  2911  次浏览      27
 

¶ÔÓÚÏ£Íû¼àÊÓ¸´ÔÓµÄ΢·þÎñ¼Ü¹¹ÏµÍ³µÄ×éÖ¯£¬·Ö²¼Ê½×·×ÙÕýÔÚ¿ìËÙ³ÉΪһÖÖ²»¿É»òȱµÄ¹¤¾ß¡£Uber¹¤³ÌÍŶӵĿªÔ´·Ö²¼Ê½×·×ÙϵͳJaeger×Ô2016ÄêÆð£¬ÔÚ¹«Ë¾ÄÚ²¿ÊµÏÖÁË´ó·¶Î§µÄÔËÓã¬ÒѾ­¼¯³ÉÓÚÊý°Ù¸ö΢·þÎñÖУ¬Ä¿Ç°Ã¿ÃëÖÓÒѾ­¿ÉÒԼǼÊýǧÌõ×·×ÙÊý¾Ý¡£ÐÂÄêÒÁʼ£¬ÎÒÃÇÏëÏò´ó¼Ò½éÉÜÒ»ÏÂÕâÒ»ÇÐÊÇÈçºÎʵÏֵ쬴ÓÎÒÃÇ×ʼʹÓÃÏֳɵĽâ¾ö·½°¸£¬ÈçZipkin£¬µ½ÎÒÃÇ´ÓÀ­È¡×ª»»ÎªÍÆËͼܹ¹µÄÔ­Òò£¬ÒÔ¼°2017ÄêÓйطֲ¼Ê½×·×ٵķ¢Õ¹¼Æ»®¡£

´ÓÕûÌåʽµ½Î¢·þÎñ¼Ü¹¹

Ëæ×ÅUberµÄÒµÎñ·ÉËÙÔö³¤£¬Èí¼þ¼Ü¹¹µÄ¸´ÔÓ¶ÈÒ²ÓëÈÕ¾ãÔö¡£´ó¸ÅÒ»Äê¶àǰ£¬2015ÄêÇï¼¾£¬ÎÒÃÇÓдóÔ¼500¸ö΢·þÎñ£¬2017Äê³õÕâÒ»ÊýÁ¿ÒÑÔö³¤ÖÁ³¬¹ý2000¸ö¡£ÕâÑùµÄÔö·ù²¿·ÖÊÇÓÉÓÚÒµÎñ¸Ã¹¦ÄܵÄÔö¼Ó£¬ÀýÈçÃæÏòÓû§µÄUberEATSºÍUberRUSHµÈ¹¦ÄÜ£¬ÒÔ¼°ÀàËÆÆÛÕ©¼ì²â¡¢Êý¾ÝÍÚ¾ò¡¢µØÍ¼´¦ÀíµÈÄÚ²¿¹¦ÄܵÄÔö¼Ó¡£´ËÍâËæ×ÅÎÒÃÇ´Ó´ó¹æÄ£ÕûÌåʽӦÓóÌÐòÏò×Å·Ö²¼Ê½Î¢·þÎñ¼Ü¹¹Ç¨ÒÆ£¬Ò²Ôì³ÉÁ˸´ÔӶȵÄÔö¼Ó¡£

Ç¨ÒÆµ½Î¢·þÎñÉú̬×ÜÊÇ»áÓöµ½¶ÀÌØµÄÌôÕ½¡£ÀýÈçɥʧ¶ÔϵͳµÄÄܼû¶È£¬·þÎñÖ®¼ä¿ªÊ¼²úÉú¸´ÔӵĽ»»¥µÈ¡£Uber¹¤³ÌÍŶӺÜÇå³þ£¬ÎÒÃǵļ¼Êõ»á¶Ô´ó¼ÒµÄÉú»î²úÉúÖ±½ÓÓ°Ï죬ϵͳµÄ¿É¿¿ÐÔÖÁ¹ØÖØÒª£¬µ«ÕâÒ»Çж¼Àë²»¿ª¡°¿É¹Û²âÐÔ¡±ÕâһǰÌá¡£´«Í³µÄ¼àÊÓ¹¤¾ß£¬ÀýÈç¶ÈÁ¿ÖµºÍ·Ö²¼Ê½ÈÕÖ¾ÒÀÈ»·¢»Ó×Å×Ô¼ºµÄ×÷Ó㬵«ÕâÀ๤¾ßÍùÍùÎÞ·¨Ìṩ¿çÔ½²»Í¬·þÎñµÄÄܼû¶È¡£·Ö²¼Ê½×·×ÙÓ¦Ô˶øÉú¡£

Uber×î³õµÄ×·×Ùϵͳ

Uber×î³õ¹ã·ºÊ¹ÓõÄ×·×Ùϵͳ½Ð×öMerckx£¬ÕâÒ»Ãû³ÆÔ´×ÔÈ«ÇòËÙ¶È×î¿ìµÄ×ÔÐгµÆïÐÐÑ¡ÊÖ¡£MerckxºÜ¿ì¾Í°ïÖúÎÒÃÇÁ˽âÁËÓйØUber»ùÓÚPythonµÄÕûÌåʽºó¶ËµÄºÜ¶àÎÊÌâ¡£ÎÒÃÇ¿ÉÒÔ²éѯÖîÈç¡°²éÕÒÒѵǼÓû§µÄÇëÇ󣬲¢ÇÒÇëÇóµÄ´¦Àíʱ¼ä³¬¹ý2ÃëÖÓ£¬²¢ÇÒʹÓÃÁËijһÊý¾Ý¿âÀ´´¦Àí£¬²¢ÇÒÊÂÎñά³Ö´ò¿ª×´Ì¬µÄʱ¼ä³¬¹ý500ms¡±ÕâÑùµÄÎÊÌâ¡£ËùÓдý²éѯµÄÊý¾Ý±»×éÖ¯³ÉÊ÷×´¿é£¬Ã¿¸ö¿é´ú±íijһ²Ù×÷»òij¸öÔ¶³Ìµ÷Óã¬ÕâÖÖ×éÖ¯·½Ê½ÀàËÆÓÚOpenTracing APIÖС°Span¡±Õâ¸ö¸ÅÄî¡£Óû§¿ÉÒÔÔÚKafkaÖÐʹÓÃÃüÁîÐй¤¾ßÕë¶ÔÊý¾ÝÁ÷Ö´Ðм´Ï¯²éѯ£¬Ò²¿ÉÒÔʹÓÃWeb½çÃæ²é¿´Ô¤¶¨ÒåµÄÕªÒª£¬ÕâЩÐÅÏ¢¾ù´ÓAPI¶ËµãµÄ¸ß¼¶±ðÐÐΪºÍCeleryÈÎÎñÖÐÕªÒª»ã×ܶøÀ´¡£

MerckxʹÓÃÁËÒ»ÖÖÀàËÆÓÚÊ÷×´¿éµÄµ÷ÓÃͼ£¬Ã¿¸ö¿é´ú±íÓ¦ÓóÌÐòÖеÄÒ»¸ö²Ù×÷£¬ÀýÈçÊý¾Ý¿âµ÷Óá¢RPC£¬ÉõÖÁ¿âº¯Êý£¬ÀýÈç½âÎöJSON¡£

MerckxµÄ±àÅŵ÷¶È¿É×Ô¶¯Ó¦ÓÃÓÚʹÓÃPython±àдµÄһϵÁлù´¡¼Ü¹¹¿â£¬°üÀ¨HTTP¿Í»§¶ËºÍ·þÎñÆ÷¡¢SQL²éѯ¡¢Redisµ÷Óã¬ÉõÖÁJSONµÄÐòÁл¯¡£ÕâЩ±àÅŵ÷¶È¿É¼Ç¼ÓйØÃ¿´Î²Ù×÷µÄijЩÐÔÄܶÈÁ¿ÖµºÍÔªÊý¾Ý£¬ÀýÈçHTTPµ÷ÓõÄURL£¬»òÊý¾Ý¿âµ÷ÓõÄSQL²éѯ¡£´ËÍ⻹ÄܼǼÆäËûÐÅÏ¢£¬ÀýÈçÊý¾Ý¿âÊÂÎñά³Ö´ò¿ª×´Ì¬µÄʱ³¤£¬·ÃÎÊÁËÄÄЩÊý¾Ý¿âShardºÍ¸±±¾¡£

Merckx¼Ü¹¹Ê¹ÓÃÁËÀ­È¡Ä£Ê½£¬¿É´ÓKafkaµÄÖ¸ÁîÊý¾ÝÖÐÀ­È¡Êý¾ÝÁ÷¡£

Merckx×î´óµÄ²»×ãÔÚÓÚÆäÉè¼ÆÖ÷ÒªÃæÏòUberʹÓÃÕûÌåʽAPIµÄÄê´ú¡£Merckxȱ·¦·Ö²¼Ê½ÉÏÏÂÎÄ´«²¥µÄ¸ÅÄËäÈ»¿ÉÒԼǼSQL²éѯ¡¢Redisµ÷Óã¬ÉõÖÁ¶ÔÆäËû·þÎñµÄµ÷Ó㬵«ÎÞ·¨½øÒ»²½ÉîÈë¡£Merckx»¹ÓÐÁíÒ»¸öÓÐȤµÄ¾ÖÏÞ£ºÒòΪMerckxÊý¾Ý´æ´¢ÔÚÒ»¸öÈ«¾ÖÏ̱߳¾µØ´æ´¢ÖУ¬ÖîÈçÊý¾Ý¿âÊÂÎñ×·×ٵȴóÁ¿¸ß¼¶¹¦ÄÜÖ»ÄÜÔÚuWSGIÏÂʹÓá£Ëæ×ÅUber¿ªÊ¼Ê¹ÓÃTornado£¨Ò»ÖÖÊÊÓÃÓÚPython·þÎñµÄÒì²½Ó¦ÓóÌÐò¿ò¼Ü£©£¬Ï̱߳¾µØ´æ´¢ÎÞ·¨ÌåÏÖTornadoµÄIOLoopÖÐͬһ¸öÏß³ÌÄÚÔËÐеĴ󲿷ֲ¢·¢ÇëÇó¡£ÎÒÃÇ¿ªÊ¼Òâʶµ½²»½èÖúÈ«¾Ö±äÁ¿»òÈ«¾Ö״̬£¬×ªÎªÍ¨¹ýijÖÖ·½Ê½±£´æÇëÇó״̬£¬²¢½øÐÐÇ¡µ±µÄ´«²¥µÄÖØÒªÐÔ¡£

Ëæºó£¬Ê¹ÓÃTChannel½øÐÐ×·×Ù

2015Äê³õ£¬ÎÒÃÇ¿ªÊ¼¿ª·¢TChannel£¬ÕâÊÇÒ»ÖÖÊÊÓÃÓÚRPCµÄÍøÂç¶à·¸´ÓúͿò¼ÜЭÒé¡£¸ÃЭÒéµÄÉè¼ÆÄ¿±êÖ®Ò»Êǽ«ÀàËÆÓÚDapperµÄ·Ö²¼Ê½×·×ÙÄÜÁ¦ÈÚÈëЭÒéÖУ¬²¢ÎªÆäÌṩ×îÓÅÐãµÄÖ§³Ö¡£ÎªÁËʵÏÖÕâһĿ±ê£¬TChannelЭÒ鹿·¶½«×·×Ù×Ö¶ÎÖ±½Ó¶¨Òåµ½Á˶þ½øÖƸñʽÖС£

spanid:8 parentid:8 traceid:8 traceflags:1

×·×Ù×Ö¶Î×÷Ϊ¶þ½øÖƸñʽµÄÒ»²¿·ÖÒѰüº¬ÔÚTChannelЭÒ鹿·¶ÖС£

³ýÁËЭÒ鹿·¶£¬ÎÒÃÇ»¹·¢²¼Á˶à¸ö¿ªÔ´¿Í»§¶Ë¿â£¬ÓÃÓÚÒÔ²»Í¬ÓïÑÔʵÏÖ¸ÃЭÒé¡£ÕâЩ¿âµÄÉè¼ÆÔ­ÔòÖ®Ò»ÊÇÈÃÓ¦ÓóÌÐòÐèÒªÓõ½µÄÇëÇóÉÏÏÂÎÄÕâÒ»¸ÅÄîÄܹ»´Ó·þÎñÆ÷¶Ëµã¹á´©ÖÁÏÂÓεĵ÷ÓÃÕ¾µã¡£ÀýÈçÔÚtchannel-goÖУ¬ÈóöÕ¾µ÷ÓÃʹÓÃJSON½øÐбàÂëµÄÇ©ÃûÐèҪͨ¹ýµÚÒ»¸ö²ÎÊýÌṩÉÏÏÂÎÄ£º

func (c *Client) Call(ctx Context, method string, arg,  resp interface{}) error {..}
                         

Tchannel¿âʹµÃÓ¦ÓóÌÐò¿ª·¢ÕßÔÚ±àд×Ô¼ºµÄ´úÂëʱʼÖÕ½«·Ö²¼Ê½ÉÏÏÂÎÄ´«²¥ÕâÒ»¸ÅÄîÃú¼ÇÓÚÐÄ¡£

ͨ¹ý½«Ëù´«ÊäÄÚÈÝÒÔ¼°ÄÚ´æÖеÄÉÏÏÂÎĶÔÏóÖ®¼äµÄ×·×ÙÉÏÏÂÎĽøÐа²ÅÅ£¬²¢Î§ÈÆ·þÎñ´¦Àí³ÌÐòºÍ³öÕ¾µ÷Óô´½¨×·×ÙSpan£¬¿Í»§¶Ë¿âÄÚ½¨Á˶Էֲ¼Ê½×·×ÙµÄÖ§³Ö¡£´ÓÄÚ²¿À´¿´£¬ÕâЩSpanÔÚ¸ñʽÉÏÓëZipkin×·×Ùϵͳ¼¸ºõÍêÈ«Ïàͬ£¬Ò²Ê¹ÓÃÁËZipkinËù¶¨ÒåµÄ×¢ÊÍ£¬ÀýÈç¡°cs¡±£¨Client Send£©ºÍ¡°cr¡±£¨Client Receive£©¡£TchannelʹÓÃ×·×Ù±¨¸æ³ÌÐò£¨Reporter£©½Ó¿Ú½«ÊÕ¼¯µ½µÄ½ø³ÌÍâ×·×ÙSpan·¢ËÍÖÁ×·×ÙϵͳµÄºó¶Ë¡£¸Ã¼¼Êõ×Ô´øµÄ¿âĬÈϰüº¬Ò»¸öʹÓÃTchannel±¾ÉíºÍHyperbahnʵÏֵı¨¸æ³ÌÐòÒÔ¼°·¢ÏֺͷÓɲ㣬½è´Ë½«Thrift¸ñʽµÄSpan·¢ËÍÖÁÊÕ¼¯Æ÷Ⱥ¼¯¡£

Tchannel¿Í»§¶Ë¿âÒѾ­±È½Ï½üËÆÓÚÎÒÃÇËùÐèÒªµÄ·Ö²¼Ê½×·×Ùϵͳ£¬¸Ã¿Í»§¶Ë¿âÌṩÁËÏÂÁй¹½¨¿é£º

1¡¢×·×ÙÉÏÏÂÎĵĽø³Ì¼ä´«²¥ÒÔ¼°´øÄÚÇëÇó

2¡¢Í¨¹ý±àÅÅAPI¼Ç¼׷×ÙSpan

3¡¢×·×ÙÉÏÏÂÎĵĽø³ÌÄÚ´«²¥

4¡¢½«½ø³ÌÍâ×·×ÙÊý¾Ý±¨¸æÖÁ×·×Ùºó¶ËËùÐèµÄ¸ñʽºÍ»úÖÆ

¸ÃϵͳΨ¶ÀȱÉÙÁË×·×Ùºó¶Ë±¾Éí¡£×·×ÙÉÏÏÂÎĵĴ«Êä¸ñʽºÍ±¨±í³ÌÐòʹÓõÄĬÈÏThrift¸ñʽÔÚÉè¼ÆÉ϶¼¿ÉÒԷdz£¼òµ¥Ö±½ÓµØ½«TchannelÓëZipkinºó¶Ë¼¯³É£¬È»¶øµ±Ê±Ö»ÄÜͨ¹ýScribe½«Span·¢ËÍÖÁZipkin£¬¶øZipkinÖ»Ö§³ÖʹÓÃCassandra¸ñʽµÄÊý¾Ý´æ´¢¡£´ËÍ⵱ʱÎÒÃǶÔÕâЩ¼¼Êõûʲô¾­Ñ飬Òò´ËÎÒÃÇ¿ª·¢ÁËÒ»Ì׺ó¶ËÔ­ÐÍϵͳ£¬²¢½áºÏZipkin UIµÄһЩ×Ô¶¨Òå×é¼þ¹¹½¨ÁËÒ»¸öÍêÕûµÄ×·×Ùϵͳ¡£

ºó¶ËÔ­ÐÍϵͳ¼Ü¹¹£ºTchannelÉú³ÉµÄ×·×Ù¼ÇÂ¼ÍÆË͸ø×Ô¶¨ÒåÊÕ¼¯Æ÷¡¢×Ô¶¨Òå´æ´¢£¬ÒÔ¼°¿ªÔ´µÄZipkin UI¡£

·Ö²¼Ê½×·×ÙϵͳÔڹȸèºÍTwitterµÈÖ÷Òª¼¼Êõ¹«Ë¾»ñµÃµÄ³É¹¦Òâζ×ÅÕâЩ¹«Ë¾Öй㷺ʹÓõÄRPC¿ò¼Ü¡¢StubbyºÍFinagleÊÇÐÐÖ®ÓÐЧµÄ¡£

ͬÀí£¬Tchannel×Ô´øµÄ×·×ÙÄÜÁ¦Ò²ÊÇÒ»¸öÖØ´óµÄ·ÉÔ¾¡£ÎÒÃDz¿ÊðµÄºó¶ËÔ­ÐÍϵͳÒѾ­¿ªÊ¼´ÓÊýÊ®ÖÖ·þÎñÖÐÊÕ¼¯×·×ÙÐÅÏ¢¡£ËæºóÎÒÃÇʹÓÃTchannel¹¹½¨Á˸ü¶à·þÎñ£¬µ«ÔÚÉú²ú»·¾³ÖÐÈ«ÃæÍÆ¹ãºÍ¹ã·ºÊ¹ÓÃÒÀÈ»ÓÐЩÀ§ÄÑ¡£¸Ãºó¶ËÔ­ÐÍÒÔ¼°ËùʹÓõÄRiak/Solr´æ´¢ÏµÍ³ÎÞ·¨Í×ÉÆËõ·ÅÒÔÊÊÓ¦UberµÄÁ÷Á¿£¬Í¬Ê±ºÜ¶à²éѯ¹¦ÄÜÒÀÈ»ÎÞ·¨ÓëZipkin UIʵÏÖ×ã¹»ºÃµÄ»¥²Ù×÷¡£¾¡¹Üй¹½¨µÄ·þÎñ´óÁ¿Ê¹ÓÃÁËTchannel£¬UberÒÀÈ»ÓдóÁ¿·þÎñÉÐδÔÚRPC¹ý³ÌÖÐʹÓÃTchannel£¬Êµ¼ÊÉϳе£ºËÐÄÒµÎñµÄ´ó²¿·Ö·þÎñ¶¼Ã»ÓÐʹÓÃTchannel¡£ÕâЩ·þÎñÖ÷ÒªÊÇͨ¹ýËÄ´ó±à³ÌÓïÑÔ£¨Node.js¡¢Python¡¢GoºÍJava£©ÊµÏֵģ¬ÔÚ½ø³Ì¼äͨÐÅ·½ÃæÊ¹ÓÃÁ˶àÖÖ²»Í¬µÄ¿ò¼Ü¡£ÕâÖÖÒì¹¹µÄ¼¼Êõ»·¾³Ê¹µÃUberÔÚ·Ö²¼Ê½×·×ÙϵͳµÄ¹¹½¨·½Ãæ»áÃæÁٱȹȸèºÍTwitter¸üÑϾþµÄÌôÕ½¡£

ÔÚŦԼÊй¹½¨µÄJaeger

UberŦԼ¹¤³Ì×é֯ʼ½¨ÓÚ2015ÄêÉϰëÄ꣬Ö÷Òª°üº¬Á½¸öÍŶӣº»ù´¡¼Ü¹¹¶ËµÄObservabilityÒÔ¼°²úÆ·£¨°üÀ¨UberEATSºÍUberRUSH£©¶ËµÄUber Everything¡£¿¼Âǵ½·Ö²¼Ê½×·×Ùʵ¼ÊÉÏÊÇÒ»ÖÖÐÎʽµÄÉú²ú»·¾³¼àÊÓ£¬Òò´Ë¸üÊʺϽ»ÓÉObservabilityÍŶӸºÔð¡£

ÎÒÃÇ×齨ÁË·Ö²¼Ê½×·×ÙÍŶӣ¬¸ÃÍŶÓÓÉÁ½¸ö¹¤³Ìʦ×é³É£¬Ä¿±êÒ²ÓÐÁ½¸ö£º½«ÏÖÓеÄÔ­ÐÍϵͳת»»ÎªÒ»ÖÖ¿ÉÒÔÈ«¾ÖÔËÓõÄÉú²úϵͳ£¬È÷ֲ¼Ê½×·×Ù¹¦ÄÜ¿ÉÒÔÊÊÓò¢ÊÊÓ¦UberµÄ΢·þÎñ¡£ÎÒÃÇ»¹ÐèҪΪÕâ¸öÏîÄ¿ÆðÒ»¸ö¿ª·¢´úºÅ¡£ÎªÐÂÊÂÎïÃüÃûʵ¼ÊÉÏÊǼÆËã»ú¿ÆÑ§½çÁ½´óÀÏ´óÄÑÎÊÌâÖ®Ò»£¬ÎÒÃÇ»¨Á˼¸ÖÜʱ¼ä¼¯Ë¼¹ãÒæ£¬¿¼ÂÇÁË×·×Ù¡¢Ì½²â¡¢²¶»ñµÈÖ÷Ì⣬×îÖÕ¾ö¶¨ÃüÃûΪJaeger£¨?y¨¡-g?r£©£¬ÔÚµÂÓïÖÐÕâ¸ö´Ê´ú±íÁÔÊÖ»òÕßá÷ÁÔ¹ý³ÌÖеİïÊÖ¡£

ŦԼÍŶÓÔÚCassandraȺ¼¯·½ÃæÒѾ­¾ß±¸ÔËά¾­Ñ飬¸ÃÊý¾Ý¿âÖ±½ÓΪZipkinºó¶ËÌṩ×ÅÖ§³Ö£¬Òò´ËÎÒÃǾö¶¨ÆúÓûùÓÚRiak/SolrµÄÔ­ÐÍ¡£ÎªÁ˽ÓÊÜTChannelÁ÷Á¿²¢½«Êý¾ÝÒÔ¼æÈÝZipkinµÄ¶þ½øÖƸñʽ´æ´¢ÔÚCassandraÖУ¬ÎÒÃÇÓÃGoÓïÑÔÖØÐÂʵÏÖÁËÊÕ¼¯Æ÷¡£ÕâÑùÎÒÃǾͿÉÒÔÎÞÐè¸Ä¶¯£¬Ö±½ÓʹÓÃZipkinµÄWebºÍ²éѯ·þÎñ£¬²¢Í¨¹ý×Ô¶¨Òå±êÇ©»ñµÃÁËÔ­±¾²»¾ß±¸µÄ×·×ټǼËÑË÷¹¦ÄÜ¡£ÎÒÃÇ»¹ÎªÃ¿¸öÊÕ¼¯Æ÷¹¹½¨ÁËÒ»Ì׿ɶ¯Ì¬ÅäÖõı¶ÔöϵÊý£¨Multiplication factor£©£¬½è´Ë½«ÈëÕ¾Á÷Á¿±¶Ôön´Î£¬ÕâÖ÷ÒªÊÇΪÁËͨ¹ýÉú²úÊý¾Ý¶Ôºó¶Ëϵͳ½øÐÐѹÁ¦²âÊÔ¡£

JaegerµÄÔçÆÚ¼Ü¹¹ÒÀÈ»ÒÀÀµZipkin UIºÍZipkin´æ´¢¸ñʽ¡£

µÚ¶þ¸öÒµÎñÐèÇóÏ£ÍûÈÃ×·×Ù¹¦ÄÜ¿ÉÒÔÊÊÓÃÓÚδʹÓÃTChannel½øÐÐRPCµÄËùÓÐÏÖÓзþÎñ¡£Ëæºó¼¸¸öÔÂÎÒÃÇʹÓÃGo¡¢Java¡¢PythonºÍNode.js¹¹½¨Á˿ͻ§¶Ë¿â£¬½è´Ëδ°üÀ¨HTTP·þÎñÔÚÄÚ¸÷Àà·þÎñµÄ±àÅÅÌṩ֧³Ö¡£¾¡¹ÜZipkinºó¶Ë·Ç³£ÖøÃû²¢ÇÒÁ÷ÐУ¬µ«ÒÀȻȱ·¦×ã¹»ÍêÉÆµÄ±àÅÅÄÜÁ¦£¬ÓÈÆäÊÇÔÚJava/ScalaÉú̬ϵͳ֮ÍâµÄ±àÅÅÄÜÁ¦¡£ÎÒÃÇ¿¼Âǹý¸÷ÖÖ¿ªÔ´µÄ±àÅſ⣬µ«ÕâЩ¿âÊÇÓɲ»Í¬µÄÈËά»¤µÄ£¬ÎÞ·¨È·±£»¥²Ù×÷ÐÔ£¬²¢ÇÒͨ³£»¹Ê¹ÓÃÁËÍêÈ«²»Í¬µÄAPI£¬´ó²¿·Ö»¹ÐèҪʹÓÃScribe»òKafka×÷Ϊ±¨±íSpanµÄ´«Êä»úÖÆ¡£Òò´ËÎÒÃÇ×îÖÕ¾ö¶¨×ÔÐбàд¿â£¬ÕâÑù¿ÉÒÔͨ¹ý¼¯³É²âÊÔ¸üºÃµØ±£ÕÏ»¥²Ù×÷ÐÔ£¬¿ÉÒÔÖ§³ÖÎÒÃÇÐèÒªµÄ´«Êä»úÖÆ£¬¸üÖØÒªµÄÊÇ£¬¿ÉÒÔÓò»Í¬µÄÓïÑÔÌṩһÖµıàÅÅAPI¡£ÎÒÃǵÄËùÓпͻ§¶Ë¿â´ÓÒ»¿ªÊ¼¶¼¿ÉÖ§³ÖOpenTracing API¡£

ÔÚµÚÒ»°æ¿Í»§¶Ë¿âÖУ¬ÎÒÃÇ»¹Ôö¼ÓÁËÁíÒ»¸öÐÂÓ±µÄ¹¦ÄÜ£º¿ÉÒÔ´Ó×·×Ùºó¶ËÂÖѯ²ÉÑù²ßÂÔ¡£µ±Ä³¸ö·þÎñÊÕµ½²»°üº¬×·×ÙÔªÊý¾ÝµÄÇëÇóºó£¬Ëù±àÅŵÄ×·×Ù¹¦ÄÜͨ³£»áΪ¸ÃÇëÇóÆô¶¯Ò»¸öеÄ×·×Ù£¬²¢Éú³ÉеÄËæ»ú×·×ÙID¡£È»¶ø´ó²¿·ÖÉú²ú×·×Ùϵͳ£¬ÓÈÆäÊÇÓëUberµÄËõ·ÅÄÜÁ¦ÓйصÄϵͳÎÞ·¨¶Ôÿ¸ö×·×Ù½øÐС°Ãè»æ¡±£¨Profile£©»ò½«Æä¼Ç¼ÔÚ×Ô¼ºµÄ´æ´¢ÖС£ÕâÑù×ö»áÔÚ·þÎñÓëºó¶Ëϵͳ֮¼ä²úÉúÄÑÒÔÕмܵĴóÁ÷Á¿£¬ÉõÖÁ»á±È·þÎñËù´¦ÀíµÄʵ¼ÊÒµÎñÁ÷Á¿´ó³öºÃ¼¸¸öÊýÁ¿¼¶¡£ÎÒÃǸÄΪÈô󲿷Ö×·×Ùϵͳֻ¶ÔС±ÈÀýµÄ×·×Ù½øÐвÉÑù£¬²¢Ö»¶Ô²ÉÑùµÄ×·×Ù½øÐС°Ãè»æ¡±ºÍ¼Ç¼¡£ÓÃÓÚ½øÐвÉÑù¾ö²ßµÄËã·¨±»ÎÒÃdzÆÖ®Îª¡°²ÉÑù²ßÂÔ¡±¡£²ÉÑù²ßÂÔµÄÀý×Ó°üÀ¨£º

²ÉÑùÒ»ÇС£Ö÷ÒªÓÃÓÚ²âÊÔÓÃ;£¬µ«Éú²ú»·¾³ÖÐʹÓûáÔì³ÉÄÑÒÔ³ÐÊܵĿªÏú£¡

»ùÓÚ¸ÅÂʵIJÉÑù£¬°´Õչ̶¨¸ÅÂʶÔÌØ¶¨×·×Ù½øÐÐËæ»ú²ÉÑù¡£

ÏÞËÙ²ÉÑù£¬Ã¿¸öʱ¼äµ¥Î»¶ÔX¸ö×·×Ù½øÐвÉÑù¡£ÀýÈç¿ÉÄÜ»áʹÓéͰ£¨Leaky bucket£©Ëã·¨µÄ±äÌå¡£

´ó²¿·Ö¼æÈÝZipkinµÄÏÖÓбàÅÅ¿â¿ÉÖ§³Ö»ùÓÚ¸ÅÂʵIJÉÑù£¬µ«ÐèÒªÔÚ³õʼ»¯¹ý³ÌÖжԲÉÑùËÙÂʽøÐÐÅäÖá£ÒÔÎÒÃǵĹæÄ££¬ÕâÖÖ·½Ê½»áÔì³ÉһЩÑÏÖØµÄÎÊÌ⣺

ÿ¸ö·þÎñ¶Ô²»Í¬²ÉÑùËÙÂʶÔ×·×Ùºó¶ËϵͳÕûÌåÁ÷Á¿µÄÓ°ÏìÖªÖ®ÉõÉÙ¡£ÀýÈ磬¾ÍËã·þÎñ±¾ÉíʹÓÃÁËÊʶȵÄÿÃë²éѯÊý£¨QPS£©ËÙÂÊ£¬Ò²¿ÉÄܵ÷ÓÃÉȳö£¨Fanout£©ÒòËØ·Ç³£¸ßµÄÆäËûÏÂÓηþÎñ£¬»òÓÉÓÚÃܼ¯±àÅŵ¼Ö²úÉú´óÁ¿×·×ÙSpan¡£

¶ÔÓÚUberÀ´Ëµ£¬Ã¿Ì첻ͬʱ¶ÎµÄÒµÎñÁ÷Á¿ÓÐ×ÅÃ÷ÏÔ¹æÂÉ£¬·åֵʱÆÚ³Ë¿Í¸ü¶à¡£¹Ì¶¨²»±äµÄ²ÉÑù¸ÅÂʶԷǷåֵʱ¿Ì¿ÉÄÜÏԵùýµÍ£¬µ«¶Ô·åֵʱ¿Ì¿ÉÄÜÏԵùý¸ß¡£

Jaeger¿Í»§¶Ë¿âµÄÂÖѯ¹¦Äܰ´ÕÕÉè¼Æ¿ÉÒÔ½â¾öÕâЩÎÊÌ⡣ͨ¹ý½«ÓйØ×îÇ¡µ±²ÉÑù²ßÂԵľö²ßת½»¸ø×·×Ùºó¶Ëϵͳ£¬·þÎñµÄ¿ª·¢Õß²»ÔÙÐèÒª²Â²â×îÊʺϵIJÉÑùËÙÂÊ¡£¶øºó¶Ë¿ÉÒÔ°´ÕÕÁ÷Á¿Ä£Ê½µÄ±ä»¯¶¯Ì¬µØµ÷Õû²ÉÑùËÙÂÊ¡£Ï·½µÄʾÒâͼÏÔʾÁË´ÓÊÕ¼¯Æ÷µ½¿Í»§¶Ë¿âµÄ·´À¡»·Â·¡£

µÚÒ»°æ¿Í»§¶Ë¿âÒÀȻʹÓÃTChannel·¢Ëͽø³ÌÍâ×·×ÙSpan£¬»á½«ÆäÖ±½ÓÌá½»¸øÊÕ¼¯Æ÷£¬Òò´ËÕâЩ¿âÐèÒªÒÀÀµHyperbahn½øÐз¢ÏֺͷÓÉ¡£¶ÔÓÚÏ£ÍûÔÚ×Ô¼ºµÄ·þÎñÖÐÔËÓÃ×·×ÙÄÜÁ¦µÄ¹¤³Ìʦ£¬ÕâÖÖÒÀÀµÐÔÔì³ÉÁ˲»±ØÒªµÄĦ²Á£¬ÕâÑùµÄĦ²Á´æÔÚÓÚ»ù´¡¼Ü¹¹²ãÃæ£¬ÒÔ¼°ÐèÒªÔÚ·þÎñÖжîÍâ°üº¬µÄ¿âµÈ·½Ã棬½ø¶ø¿ÉÄܵ¼ÖÂÒÀÀµÐÔµØÓò¡£

ΪÁ˽â¾öÕâÖÖÎÊÌ⣬ÎÒÃÇʵÏÖÁËÒ»ÖÖjaeger-agent±ß³µ£¨Sidecar£©½ø³Ì£¬²¢½«Æä×÷Ϊ»ù´¡¼Ü¹¹×é¼þ£¬Ó븺ÔðÊÕ¼¯¶ÈÁ¿ÖµµÄ´úÀíÒ»Æð²¿Êðµ½ËùÓÐËÞÖ÷»úÉÏ¡£ËùÓÐÓë·Óɺͷ¢ÏÖÓйصÄÒÀÀµÏî¶¼·â×°ÔÚÕâ¸öjaeger-agentÖУ¬´ËÍâÎÒÃÇ»¹ÖØÐÂÉè¼ÆÁ˿ͻ§¶Ë¿â£¬¿É½«×·×ÙSpan±¨¸æ¸ø±¾µØUDP¶Ë¿Ú£¬²¢ÄÜÂÖѯ±¾µØ»Ø»·½Ó¿ÚÉϵĴúÀí»ñÈ¡²ÉÑù²ßÂÔ¡£ÐµĿͻ§¶ËÖ»ÐèÒª×î»ù±¾µÄÍøÂç¿â¡£¼Ü¹¹ÉϵÄÕâÖֱ仯Ïò×ÅÎÒÃÇÏÈ×·×Ùºó²ÉÑùµÄÔ¸¾°Âõ³öÁËÒ»´ó²½£¬ÎÒÃÇ¿ÉÒÔÔÚ´úÀíµÄÄÚ´æÖжÔ×·×ټǼ½øÐлº³å¡£

ĿǰµÄJaeger¼Ü¹¹£ººó¶Ë×é¼þʹÓÃGoÓïÑÔʵÏÖ£¬¿Í»§¶Ë¿âʹÓÃÁËËÄÖÖÖ§³ÖOpenTracing±ê×¼µÄÓïÑÔ£¬Ò»¸ö»ùÓÚReactµÄWebǰ¶Ë£¬ÒÔ¼°Ò»¸ö»ùÓÚApache SparkµÄºó´¦ÀíºÍ¾ÛºÏÊý¾Ý¹ÜµÀ¡£

ͳ°üʽ·Ö²¼Ê½×·×Ù

Zipkin UIÊÇÎÒÃÇÔÚJaegerÖÐʹÓõÄ×îºóÒ»¸öµÚÈý·½Èí¼þ¡£ÓÉÓÚÒª½«SpanÒÔZipkin Thrift¸ñʽ´æ´¢ÔÚCassandraÖв¢ÓëUI¼æÈÝ£¬Õâ¶ÔÎÒÃǵĺó¶ËºÍÊý¾ÝÄ£ÐͲúÉúÁËÒ»¶¨µÄÏÞÖÆ¡£ÓÈÆäÊÇZipkinÄ£ÐͲ»Ö§³ÖOpenTracing±ê×¼ºÍÎÒÃǵĿͻ§¶Ë¿âÖÐÁ½¸ö·Ç³£ÖØÒªµÄ¹¦ÄÜ£º¼ü-ÖµÈÕÖ¾API£¬ÒÔ¼°ÓøüΪͨÓõÄÓÐÏòÎÞ»·Í¼£¨Directed acyclic graph£©¶ø·ÇSpanÊ÷Ëù´ú±íµÄ×·×Ù¡£Òò´ËÎÒÃÇÒãÈ»¾ö¶¨³¹µ×¸ïкó¶ËËùÓõÄÊý¾ÝÄ£ÐÍ£¬²¢±àдеÄUI¡£ÈçÏÂͼËùʾ£¬ÐµÄÊý¾ÝÄ£ÐÍ¿ÉÔ­ÉúÖ§³Ö¼ü-ÖµÈÕÖ¾ºÍSpanµÄÒýÓ㬴ËÍ⻹¶Ô·¢Ë͵½½ø³ÌÍâµÄÊý¾ÝÁ¿½øÐÐÁËÓÅ»¯£¬±ÜÃâ½ø³Ì±êÇ©ÔÚÿ¸öSpanÉÏÖØ¸´£º

JaegerÊý¾ÝÄ£ÐÍ¿ÉÔ­ÉúÖ§³Ö¼ü-ÖµÈÕÖ¾ºÍSpanÒýÓá£

ĿǰÎÒÃÇÕýÔÚ½«ºó¶Ë¹ÜµÀÈ«ÃæÉý¼¶µ½ÐµÄÊý¾ÝÄ£ÐÍ£¬ÒÔ¼°È«Ðµģ¬¸üΪÓÅ»¯µÄCassandra¼Ü¹¹¡£ÎªÁ˳ä·ÖÀûÓÃеÄÊý¾ÝÄ£ÐÍ£¬ÎÒÃÇ»¹ÓÃGoÓïÑÔʵÏÖÁËÒ»¸öȫеÄJaeger²éѯ·þÎñ£¬²¢ÓÃReactʵÏÖÁËÒ»Ì×ȫеÄWeb UI¡£×î³õ°æ±¾µÄUIÖ÷ÒªÖØÏÖÁËZipkin UIµÄÔ­Óй¦ÄÜ£¬µ«ÔÚÉè¼ÆÉϸüÒ×ÓÚͨ¹ýÀ©Õ¹ÌṩÐµĹ¦ÄܺÍ×é¼þ£¬²¢ÄÜ×÷ΪReact×é¼þǶÈëµ½ÆäËûUI¡£ÀýÈ磬Óû§¿ÉÒÔÑ¡ÔñÓöàÖÖ²»Í¬ÊÓͼ¶Ô×·×Ù½á¹û½øÐпÉÊÓ»¯£¬ÀýÈç×·×Ùʱ¶ÎÄÚµÄÖ±·½Í¼£¬»ò·þÎñÔÚ×·×Ù¹ý³ÌÖеÄÀÛ»ýʱ¼ä£º

Jaeger UIÏÔʾµÄ×·×ÙÐÅÏ¢ËÑË÷½á¹û¡£ÓÒÉϽÇÏÔʾµÄʱ¿ÌºÍ³ÖÐøÊ±¼äÉ¢µãͼÓÿÉÊÓ»¯·½Ê½³ÊÏÖÁ˽á¹û£¬²¢ÌṩÁËÏòÏÂÍÚ¾òÄÜÁ¦¡£

ÁíÒ»¸öÀý×Ó£¬¿ÉÒÔ¸ù¾Ý²»Í¬ÓÃÀý²é¿´Í¬Ò»Ìõ×·×ټǼ¡£³ýÁËʹÓÃĬÈϵÄʱÐòäÖȾ·½Ê½£¬»¹¿ÉÒÔͨ¹ýÆäËûÊÓͼäÖȾΪÓÐÏòÎÞ»·Í¼»ò¹Ø¼ü·¾¶Í¼£º

Jaeger UIÏÔʾÁËÒ»Ìõ×·×ټǼµÄÏêÇé¡£½çÃæ¶¥²¿ÊÇÒ»Ìõ×·×ټǼµÄÃÔÄãµØÍ¼Ê¾Òâͼ£¬½è´Ë¿ÉÔÚ¸ü´ó¹æÄ£µÄ×·×ټǼÖнøÐиüÇáËɵĵ¼º½¡£

ͨ¹ý½«¼Ü¹¹ÖÐÊ£ÓàµÄZipkin×é¼þÌæ´úΪJaeger×Ô¼ºµÄ×é¼þ£¬ÎÒÃǽ«Jaeger³¹µ×±äΪһÖÖͳ°üʽµÄ¶Ëµ½¶Ë·Ö²¼Ê½×·×Ùϵͳ¡£

ÎÒÃÇÈÏΪ±àÅÅ¿âÊÇJaeger¹ÌÓеÄÒ»²¿·Ö£¬ÕâÑù¿ÉÒÔÈ·±£ÓëJaegerºó¶ËµÄ¼æÈÝÐÔ£¬ÒÔ¼°Í¨¹ý³ÖÐø¼¯³É²âÊÔ±£ÕÏÏ໥֮¼äµÄ»¥²Ù×÷ÐÔ¡££¨ZipkinÉú̬ϵͳ×ö²»µ½ÕâЩ¡££©ÓÈÆäÊÇ¿çÔ½ËùÓпÉÖ§³ÖÓïÑÔ£¨Ä¿Ç°Ö§³ÖGo¡¢Java¡¢PythonºÍNode.js£©ºÍ¿ÉÖ§³ÖµÄ´«Ê䷽ʽ£¨Ä¿Ç°Ö§³ÖHTTPºÍTChannel£©ÊµÏֵĻ¥²Ù×÷ÐÔ»áÔÚÿ¸öPullÇëÇóÖвâÊÔ£¬²¢Óõ½ÁËUber¹¤³Ì²¿ÃÅRPCÍŶÓËù¿ª·¢µÄCrossdock¿ò¼Ü¡£Jaeger¿Í»§¶Ë¼¯³É²âÊÔµÄÏêϸÐÅÏ¢Çë²ÎÔÄjaeger-client-go crossdock´úÂë¿â¡£Ä¿Ç°ËùÓÐJaeger¿Í»§¶Ë¿â¶¼ÒÑ¿ªÔ´£º

Go

Java

Node.js

Python

ÎÒÃÇÕýÔÚ½«ºó¶ËºÍUI´úÂëÇ¨ÒÆÖÁGitHub£¬²¢¼Æ»®¾¡¿ì½«JaegerµÄÔ´´úÂëÈ«²¿¹«¿ª¡£Èç¹ûÄã¶ÔÕâ¸ö¹ý³Ì¸ÐÐËȤ£¬¿ÉÒÔ¹Ø×¢Ö÷´úÂë¿â¡£ÎÒÃÇ»¶Ó­´ó¼ÒΪ´Ë×ö¹±Ï×£¬Ò²ºÜÀÖÓÚ¿´µ½¸ü¶àÈ˳¢ÊÔʹÓÃJaeger¡£ËäÈ»ÎÒÃǶÔĿǰµÄ½øÕ¹ºÜÂúÒ⣬µ«UberµÄ·Ö²¼Ê½×·×Ù¹¤×÷»¹Óкܳ¤µÄ·Ҫ×ß¡£

   
2911 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù

×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Ïà¹ØÎÄÕÂ


ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þ
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS

Ïà¹ØÅàѵ¿Î³Ì


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù

³É¹¦°¸Àý


Èñ°²¿Æ¼¼ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨
³É¶¼ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£Æû³µ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
±±¾© Èí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£ Èí¼þ¼Ü¹¹Éè¼Æ°¸ÀýÓëʵ¼ù
±±¾© ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ÉîÛÚ ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù