±à¼ÍƼö: |
±¾ÎÄͨ¹ýÊáÀíÈ«Á´Â·Ñ¹²âϵͳ´ÓÉè¼Æµ½Â䵨µÄÕû¸öʵ¼ù¹ý³Ì£¬À´Ïêϸ½éÉÜÈ«Á´Â·Ñ¹²âϵͳ¾ßÌåÊÇÈçºÎÉè¼Æ¡¢ÈçºÎÂ䵨µÄ£¬Ï£ÍûÄÜ´Ó¼¼ÊõÂäµØÊµ¼ùµÄ½Ç¶È£¬¸øÍ¬ÐÐÒµµÄͬѧÃÇһЩ²Î¿¼ºÍÆô·¢¡£
±¾ÎÄÀ´×ÔÓÚÐÂÀË΢²©£¬ÓÉLinda±à¼¡¢ÍƼö¡£ |
|
Ëæ×Ź«Ë¾ÒµÎñµÄ²»¶ÏÀ©ÕÅ£¬Óû§Á÷Á¿ÔÚ²»¶ÏÌáÉý£¬Ñз¢ÌåϵµÄ¹æÄ£ºÍ¸´ÔÓÐÔÒ²ËæÖ®Ôö¼Ó¡£ÏßÉÏ·þÎñµÄÎȶ¨ÐÔÒ²Ô½À´Ô½ÖØÒª£¬·þÎñÐÔÄÜÎÊÌ⣬ÒÔ¼°ÈÝÁ¿ÎÊÌâÒ²Ô½·¢Ã÷ÏÔ¡£Òò´ËÓбØÒª´î½¨Ò»¸öÓÐЧѹ²âϵͳ£¬Ìṩ°²È«¡¢¸ßЧ¡¢ÕæÊµµÄÏßÉÏÈ«Á´Â·Ñ¹²â·þÎñ£¬ÎªÏßÉÏ·þÎñ±£¼Ý»¤º½¡£
¹ØÓÚÈ«Á´Â·Ñ¹²âµÄ½¨É裬ҵ½çÒѾÓÐÁ˷dz£¶àÎÄÕ£¬µ«ÊÇÉæ¼°µ½¾ßÌåµÄ¼¼ÊõʵÏÖ·½Ã棬ȴºÜÉÙ½éÉÜ¡£±¾ÎÄÏëͨ¹ýÊáÀíÈ«Á´Â·Ñ¹²âϵͳ´ÓÉè¼Æµ½Â䵨µÄÕû¸öʵ¼ù¹ý³Ì£¬À´Ïêϸ½éÉÜÈ«Á´Â·Ñ¹²âϵͳ¾ßÌåÊÇÈçºÎÉè¼Æ¡¢ÈçºÎÂ䵨µÄ£¬Ï£ÍûÄÜ´Ó¼¼ÊõÂäµØÊµ¼ùµÄ½Ç¶È£¬¸øÍ¬ÐÐÒµµÄͬѧÃÇһЩ²Î¿¼ºÍÆô·¢¡£
1. ½â¾ö·½°¸
1.1 ÒµÄÚʵ¼ù
È«Á´Â·Ñ¹²âÔÚÒµÄÚÒѾÓÐÁ˹㷺µÄʵ¼ù£¬Èç°¢ÀïµÄ Amazon¡¢PTS[1][2]£¬ÃÀÍÅµÄ Quake[3][4]£¬¾©¶«µÄµÄ
ForceBOT[5]£¬¸ßµÂµÄ TestPG[6]µÈµÈ£¬¶¼ÎªÎÒÃÇÌṩ·á¸»µÄʵ¼ù¾Ñ飬ºÍ´óÁ¿ÓÅÐãµÄ¼¼Êõ·½°¸¡£ÎÒÃǹ㷺ÎüÊÕÁ˸÷´ó»¥ÁªÍø¹«Ë¾µÄÈ«Á´Â·Ñ¹²â½¨Éè¾Ñ飬²¢»ùÓÚ×Ö½ÚÌø¶¯ÒµÎñÐèÇó£¬Éè¼Æ¿ª·¢ÁËÒ»¸öÈ«Á´Â·Ñ¹²âϵͳ
Rhino¡£
1.2 ¼Ü¹¹Í¼
Rhino ƽ̨×÷Ϊ¹«Ë¾¼¶µÄÈ«Á´Â·Ñ¹²âƽ̨£¬ËüµÄÄ¿±êÊǶÔÈ«¹«Ë¾ËùÓÐÒµÎñ£¬Ìṩµ¥·þÎñ¡¢È«Á´Â·£¬°²È«¿É¿¿¡¢ÕæÊµ¡¢¸ßЧµÄѹ²â£¬À´°ïÖúÒµÎñ¸ßЧ±ã½ÝµÄÍê³ÉÐÔÄܲâÊÔÈÎÎñ£¬¸ü¾«È·ÆÀ¹ÀÏßÉÏ·þÎñÐÔÄÜ&ÈÝÁ¿·½Ãæ·çÏÕ¡£
Òò´ËÔÚ Rhino ƽ̨Éè¼ÆÖ®³õ£¬ÎÒÃǾÍÈ·¶¨ÁËÒÔÏÂÄ¿±ê£º
°²È«£ºËùÓÐѹ²â¶¼ÊÇÔÚÏßÉÏÍê³ÉµÄ£¬ËùÒÔÀíÂÛÉÏËùÓеÄѹ²â¶ÔÏßÉÏÓû§¶¼ÊÇÓÐËðµÄ¡£Ñ¹²âƽ̨½«´Ó·þÎñ״̬£¬ÒÔ¼°Ñ¹²âÊý¾ÝÁ½·½ÃæÈ¥±£Ö¤Ñ¹²âµÄ°²È«ÐÔ¡£
¸ßЧ £º½ÏÉÙѹ²â½Å±¾±àд³É±¾£¬Êý¾Ý¹¹ÔìºÍѹ²â¼à¿Ø³É±¾£¬¾¡Á¿×Ô¶¯»¯Íê³Éѹ²â¹ý³ÌµÄ¸÷¸ö½×¶Î¡£
׼ȷ £º¾«È·µÄѹÁ¦¿ØÖÆ£¬×¼È·µÄÁ´Â·Ñ¹²â¼à¿Ø£¬¾«È·µÄѹ²â±¨¸æ½á¹û£¬ÒÔ¼°ÐÔÄÜ&ÈÝÁ¿Êý¾Ý¡£
¸ß¸²¸Ç £ºÐèÒªÖ§³Å¹«Ë¾ÄÚ²»Í¬µÄÒµÎñÏßµÄѹ²âÐèÇó£¬ÈçËÑË÷£¬¹ã¸æ£¬µçÉÌ£¬½ÌÓý£¬ÓÎÏ·µÈµÈ¡£
Rhino ÊÇÒ»¸ö·Ö²¼Ê½È«Á´Â·Ñ¹²âϵͳ£¬¿ÉÒÔͨ¹ýˮƽÀ©Õ¹£¬À´ÊµÏÖÄ£Ä⺣Á¿Óû§ÕæÊµµÄÒµÎñ²Ù×÷³¡¾°£¬¶ÔÏßÉϸ÷ÖÖÒµÎñ½øÐÐÈ«·½Î»µÄÐÔÄܲâÊÔ¡£ËüÖ÷Òª·ÖΪ¿ØÖÆÖÐÐÄ(Rhino
Master)Ä£¿é¡¢Ñ¹²âÁ´Â··þÎñÄ£¿é¡¢¼à¿ØÏµÍ³Ä£¿é¡¢Ñ¹²âÒýÇæÄ£¿é£¬Èçͼ¡£ £¨Ã¿Ò»¸öÄ£¿é¶¼ÊÇÓɶà¸ö΢·þÎñÀ´Íê³ÉµÄ¡£ÈçÏÂͼÿ¸öʵÏßͼ¶¼´ú±íÒ»¸ö΢·þÎñ»ò¶à¸ö΢·þÎñ£©
¡£

2. ºËÐŦÄܽéÉÜ
´î½¨È«Á´Â·Ñ¹²âƽ̨£¬×îºËÐÄÖ÷ÒªÓУºÊý¾Ý¹¹Ô졢ѹ²â¸ôÀë¡¢Á´Â·ÖÎÀí¡¢ÈÎÎñµ÷¶È¡¢Ñ¹²âÈÛ¶Ï¡¢Ñ¹²âÒýÇæ¡¢Ñ¹²â¼à¿ØµÈ¡£ÏÂÃæÎÒÃǽ«´ÓÕâЩ·½ÃæÏêϸ½éÉÜÏ£¬ÔÚ
Rhino ƽ̨ÖÐÊÇÈçºÎÉè¼ÆºÍʵÏֵġ£
2.1 Êý¾Ý¹¹Ôì
ѹ²â¹ý³ÌÖÐÊý¾Ý¹¹ÔìÊÇ×îÖØÒª£¬Ò²ÊÇ×îΪ¸´ÔӵĻ·½Ú¡£Ñ¹²âÊý¾ÝµÄ½¨Ä££¬Ö±½ÓÓ°ÏìÁËѹ²â½á¹ûµÄ׼ȷÐÔ¡£
¶ÔÓÚ·þÎñÐÔÄÜȱÏÝɨÃè¡¢ÐÔÄܵ÷ÓÅÒÔ¼°ÐÂÉÏÏß·þÎñ¡¢ÍƼö¹¹Ôì Fake Êý¾Ý¡¢À´Ñ¹²âÖ¸¶¨Â·¾¶¡£
¶ÔÓÚÏßÉÏÈÝÁ¿¹æ»®¡¢ÐÔÄÜÄÜÁ¦ÑéÖ¤ÒÔ¼°ÐÔÄÜ Diff¡¢ÍƼöʹÓÃÏßÉÏÕæÊµÁ÷Á¿¡¢Ê¹Ñ¹²â½á¹û¸üÌù½üÕæÊµÇé¿ö¡£
¶ÔÓÚÉæ¼°µ½Óû§Õ˺ţ¬Óû§µÇ¼̬±£³ÖµÄÇé¿ö£¬ÍƼöʹÓÃѹ²âרÊô²âÊÔÕ˺ţ¬±ÜÃâÓ°ÏìÏßÉÏÕæÊµÓû§¡£
2.1.1 »ù´¡Êý¾Ý¹¹Ôì
ΪÁ˸ßЧµÄ¹¹ÔìÌØ¶¨µÄ Fake ѹ²âÊý¾Ý£¬Rhino ѹ²âƽ̨Ìṩ´óÁ¿Êý¾Ý¹¹Ô췽ʽ£º
CSV Îļþ£º°´ÁзָîÊý¾Ý£¬×Ö¶ÎÃûÈ¡ CSV ÎļþµÚÒ»ÐС£Êý¾Ý¶ÁÈ¡·½Ê½Êǰ´ÐеÝÔöÑ»·¡£Èç¹ûÒ»¸öѹ²âÈÎÎñ»á²ð·Ö³É¶à¸ö
Job£¬ÄÇôÊý¾ÝÎļþÒ²»á²ð·Ö£¬±ÜÃâ Job Ö®¼äµÄÊý¾ÝÖØ¸´¡£
×ÔÔö£º±äÁ¿ÀàÐ;ùΪÊý×ÖÀàÐÍ¡£Ã¿´Î·¢Ñ¹Ê±+1£¬µ½×î´óÖµºó´Ó×îСֵѻ·Ê¹Óá£
Ëæ»ú£º±äÁ¿ÀàÐ;ùΪÊý×ÖÀàÐÍ¡£Ã¿´Î·¢Ñ¹Ê±Ëæ»úÉú³É¡£
³£Á¿£ºConstant£¬¿É×Ô¶¨ÒåΪÈÎÒâÖµ¡£

2.1.2 ѹ²âÕ˺Å
ÔÚѹ²â¹ý³ÌÖУ¬ÓÐЩѹ²âÇëÇóÐèÒª½øÐеǼ£¬²¢±£³Ö»á»°£»´ËÍâÔںܶàѹ²âÇëÇóÖÐÉæ¼°µ½Óû§Õ˺ÅÐÅÏ¢UserID£¬DeviceIDµÈÊý¾Ý¡£Óû§Õ˺ŵĹ¹ÔìÎÊÌ⣬һֱÊÇѹ²â¹ý³ÌÖзdz£¼¬ÊÖµÄÎÊÌâ¡£Rhinoƽ̨´òͨµÄÓû§ÖÐÐÄ£¬ÉèÖÃÁËѹ²âרÊôµÄÕ˺ŷþÎñ£¬ÍêÃÀµØ½â¾öÁËѹ²â¹ý³ÌÖеĵǼ̬£¬ÒÔ¼°²âÊÔÕ˺ŵÈÎÊÌâ¡£¾ßÌåÁ÷³ÌºÍʹÓýçÃæ£¬ÈçÏÂͼ¡£

2.2 ѹ²â¸ôÀë
ѹ²â¸ôÀëÖÐÐèÒª½â¾öµÄѹ²âÁ÷Á¿¸ôÀ룬ÒÔ¼°Ñ¹²âÊý¾ÝµÄ¸ôÀë¡£
ѹ²âÁ÷Á¿¸ôÀ룬Ö÷ÒªÊÇͨ¹ý¹¹½¨Ñ¹²â»·¾³À´½â¾ö£¬ÈçÏßÏÂѹ²â»·¾³£¬»òÓ¾µÀ»¯/Set »¯½¨É裬½«Ñ¹²âÁ÷Á¿ÓëÏßÉÏÁ÷³ÌÍêÈ«¸ôÀë¡£ÓŵãÊÇѹ²âÁ÷Á¿ÓëÏßÉÏÁ÷Á¿ÍêÈ«¸ôÀ룬²»»áÓ°Ïìµ½ÏßÉÏÓû§¡£È±µã£º»úÆ÷×ÊÔ´¼°Î¬»¤³É±¾¸ß£¬ÇÒѹ²â½á¹ûÐèÒª¾¹ýÒ»¶¨µÄ»»Ë㣬²ÅÄܵÃÏßÉÏÈÝÁ¿£¬½á¹û׼ȷÐÔ´æÔÚÒ»¶¨µÄÎÊÌ⡣Ŀǰ¹«Ë¾ÄÚѹ²â¶¼ÊÇÔÚÏßÉϼ¯ÈºÉÏÍê³ÉµÄ£¬ÏßÉÏÓ¾µÀ»¯ÕýÔÚ½¨ÉèÖС£
ѹ²âÊý¾Ý¸ôÀ룬Ö÷ÒªÊÇͨ¹ý¶Ôѹ²âÁ÷Á¿½øÐÐȾɫ£¬ÈÃÏßÉÏ·þÎñÄÜʶ±ðÄÄЩÊÇѹ²âÁ÷Á¿£¬ÄÄЩÊÇÕý³£Á÷Á¿£¬È»ºó¶Ôѹ²âÁ÷Á¿½øÐÐÌØÊâ´¦Àí£¬ÒÔ´ïµ½Êý¾Ý¸ôÀëµÄÄ¿µÄ¡£Ä¿Ç°
Rhino ƽ̨ÕûÌåѹ²â¸ôÀë¿ò¼ÜÈçͼ¡£

2.2.1 ѹ²â±ê¼Ç
ѹ²â±ê¼Ç¾ÍÊÇ×î³£¼ûµÄѹ²âÁ÷Á¿È¾É«µÄ·½Ê½¡£
¶ÔÓÚ RPC ÐÒ飬»áÔÚÇëÇóµÄÍ·²¿ÖÐÔö¼ÓÒ»¸ö Key£ºValue µÄ×Ö¶Î×÷Ϊѹ²â±ê¼Ç¡£
¶ÔÓÚ HTTP ºÍÆäËûÐÒ飬»áÔÚÇëÇóÍ·£¬×Ô¶¯×¢ÈëÒ»¸ö Stress ±ê¼Ç(Key-Value) ¡£
ѹ²â±ê¼Ç Key:Value£¬ÆäÖÐ key Êǹ̶¨µÄ Stress_Tag Öµ£¬µ«ÊÇÿ¸öѹ²âÈÎÎñ¶¼ÓÐΨһµÄ
Stress_Value Öµ£¬Ö÷ÒªÓÃÓÚ½â¾öѹ²âÊý¾Ý³åÍ»¡¢ÐÔÄÜÎÊÌⶨλ¡£
2.2.2 ѹ²â±ê¼Ç͸´«
Ŀǰ¹«Ë¾ÄÚ¸÷¸ö»ù´¡×é¼þ¡¢´æ´¢×é¼þ£¬ÒÔ¼° RPC ¿ò¼Ü¶¼ÒѾ֧³ÖÁËѹ²â±ê¼ÇµÄ͸´«¡£ÆäÔÀíÊǽ«Ñ¹²â±ê¼ÇµÄ
KV Öµ´æÈë Context ÖУ¬È»ºóÔÚËùÓÐÏÂÓÎÇëÇóÖж¼´øÉϸà Context£¬ÏÂÓηþÎñ¿ÉÒÔ¸ù¾Ý Context
ÖÐѹ²â±ê¼ÇÍê³É¶Ôѹ²âÁ÷Á¿µÄ´¦Àí¡£ÔÚʵ¼ÊÒµÎñÖУ¬´úÂë¸ÄÔìÒ²·Ç³£¼òµ¥£¬Ö»ÐèҪ͸´« Context ¼´¿É¡£
Golang ·þÎñ£º½«Ñ¹²â±ê¼ÇдÈë Context ÖС£
Python ·þÎñ£ºÀûÓà threading.local()´æ´¢Ïß³Ì Context¡£
Java ·þÎñ£ºÀûÓà ThreadLocal ´æ´¢Ïß³Ì Context¡£
2.2.3 ѹ²â¿ª¹Ø
ΪÁ˽â¾öÏßÉÏѹ²â°²È«ÎÊÌ⣬ÎÒÃÇ»¹ÒýÈëÁËѹ²â¿ª¹Ø×é¼þ¡£
ÿ¸ö·þÎñÿ¸ö¼¯Èº£¬¶¼ÓÐÒ»¸öѹ²â¿ª¹Ø¡£Ö»Óдò¿ªÑ¹²â¿ª¹ØÊ±£¬Ñ¹²âÁ÷Á¿²ÅÄÜÁ÷Èëµ½·þÎñÄÚ£¬·ñÔò¾Í»á±»µ×²ã΢·þÎñ¿ò¼ÜÖ±½Ó¾Ü¾ø£¬ÒµÎñ²ãÎ޸С£
ÔÚÿ¸öIDCÇøÓò£¬¶¼»áÓÐÒ»¸öÈ«¾ÖµÄѹ²â×Ü¿ª¹Ø¡£Ö»Óдò¿ªÁËÕâ¸öÈ«¾Öѹ²â¿ª¹Ø£¬Ñ¹²âÁ÷Á¿²Å±»ÔÊÐíÔÚÕâ¸öIDCÄÚÁ÷ת¡£
µ±ÏßÉϳöÏÖѹ²âÎÊÌ⣬³ýÁË´ÓÔ´Í·¹Ø±Õѹ²âÁ÷Á¿ÒÔÍ⣬¹Ø±ÕÄ¿±ê·þÎñµÄѹ²â¿ª¹Ø£¬Ò²ÄÜÁ¢¼´×è¶Ïѹ²âÁ÷Á¿¡£
2.2.4 ѹ²âÊý¾Ý¸ôÀë
ÏßÉÏѹ²âÖУ¬×ÔÓµÄÎÊÌâ¾ÍÊÇѹ²âÁ´Â·ÖÐÉæ¼°µ½Ð´²Ù×÷£¬ÈçºÎ±ÜÃâÎÛȾÏßÉÏÊý¾Ý£¬²¢ÇÒÄܱ£Ö¤Ñ¹²âÇëÇó±£³ÖºÍÏßÉÏÏàͬµÄÇëÇó·¾¶¡£Òµ½çÓкܶà½â¾ö·½°¸£¬³£¼ûµÄÓÐÓ°×Ó±í£¬Ó°×ӿ⣬ÒÔ¼°Êý¾ÝÆ«ÒÆ£¬Èçͼ[7]¡£

Rhino ƽ̨Õë¶Ô²»Í¬´æ´¢£¬Óв»Í¬µÄ½â¾ö·½°¸£º
MySQL¡¢MongoDB£ºÓ°×Ó±í¡£SDK ÅжÏÊÇ·ñÊÇѹ²âÁ÷Á¿£¬ÈôÊÇÔò¸ù¾ÝÅäÖÃÓ³ÉäÖÁбíÃû¡£ÅäÖòßÂÔÓÐÁ½ÖÖ£¬Ò»ÊǶÁдӰ×Ó±í£¬¶þÊǶÁÏßÉÏ±í¡¢Ð´Ó°×Ó±í¡£
Redis£ºRedis Key ¼ÓÉÏ Stress ǰ׺¡£Èç Stress_Tag=Valuex£¬ÄÇô¶Áд
Redis µÄ Key=Valuex_Key¡£ÕâÑù¿ÉÒÔ½â¾ö¶à¸öѹ²âÈÎÎñÊý¾Ý³åÍ»µÄÎÊÌ⡣ѹ²â½áÊøºó£¬Ö»ÐèÒª¶Ô
Prefix=Valuex ×öÇå³ý»ò¹ýÆÚ²Ù×÷¼´¿É¡£
MQ£º¶ÔÓÚÏûÏ¢¶ÓÁУ¬Rhino ƽ̨ÓÐÁ½ÖÖ²ßÂÔ¡£Ò»ÊÇÖ±½Ó¶ªÆú£¬È»ºóÕë¶ÔÏûÏ¢¶ÓÁеÄÐÔÄÜ£¬µ¥¶À½øÐÐѹ²â£»¶þÊÇÔÚ
Header ÖÐ͸´«Ñ¹²â±ê¼Ç£¬Consumer ¸ù¾Ýѹ²â±ê¼ÇºÍÒµÎñÐèÇó£¬ÔÙ×öÌØÊâ´¦Àí¡£Ä¬ÈÏ×ß¶ªÆú²ßÂÔ£¬ÒµÎñ·½¿É¸ù¾ÝÐèÇó½øÐÐÅäÖá£
ÆäËû´æ´¢£¬Èç ES£¬ClickHouse µÈ£¬¶¼ÓÐѹ²â¼¯Èº¡£Ñ¹²âʱ£¬»á½«Ñ¹²âÇëÇó´òµ½Ö¸¶¨µÄѹ²â¼¯ÈºÖС£
2.2.5 ·þÎñѹ²â¸ÄÔì
ÔÚѹ²â֮ǰ£¬ÐèÒª¶Ô·þÎñ½øÐÐѹ²âÑéÖ¤¡£¶ÔÓÚ²»Âú×ãѹ²âÒªÇó(¼´Ñ¹²âÊý¾Ý¸ôÀë)µÄ·þÎñ£¬ÐèÒª½øÐÐѹ²â¸ÄÔì¡£
ѹ²âÑéÖ¤£º¶ÔÓÚ´æ´¢·þÎñ£¬ÔÚ²»´ò¿ªÑ¹²â¿ª¹ØµÄǰÌáÏ£¬Í¨¹ýѹ²âÇëÇ󣬷¢ËͶÁд²Ù×÷¶¼Êǻᱻ¾Ü¾ø¡£Èç¹ûûÓоܾø£¬ËµÃ÷ÔÚ²Ù×÷´æ´¢·þÎñʱ£¬Ã»ÓдøÉÏѹ²â
Context£¬ÐèÒª½øÐиÄÔì¡£
ѹ²â¸ÄÔ죺ѹ²â¸ÄÔìÊÇÏßÉÏÈ«Á´Â·Ñ¹²âÍÆ½øÖзdz£¹Ø¼ü£¬¶øÓַdz£À§ÄѵÄÒ»¸ö»·½Ú¡£¶ÔÓÚÒѾÉÏÏߵķþÎñ£¬Ñ¹²â¸ÄÔ컹¼«ÓпÉÄÜ»áÒýÈëеÄ
BUG£¬ËùÒÔ¾³£Íƶ¯ÆðÀ´±È½ÏÀ§ÄÑ¡£Òò´ËΪÁ˽â¾öÕâЩÎÊÌ⣬Rhino ƽ̨ÓÐÒÔϼ¸¸ö½â¾ö·½°¸£º
¾¡Á¿¼õÉÙ´úÂë¸Ä¶¯£¬²¢¸ø³öÍêÕûµÄÖ¸µ¼Êֲἰ´úÂëʾÀý£¬¼õÉÙ RD µÄ¹¤×÷Á¿£¬½µµÍ´úÂë´íÎóµÄ¿ÉÄÜÐÔ¡£
Ìṩ¼òµ¥±ã½ÝµÄÏßÉÏÏßÏ HTTP&RPC µÄѹ²âÇëÇó Debug ¹¤¾ß£¬·½±ã´úÂë¸Ä¶¯µÄÑéÖ¤¡£
¶ÔÓÚÐÂÏîÄ¿£¬ÏîÄ¿¿ªÊ¼³õÆÚ£¬¾Í½«Ñ¹²â¸ÄÔì¼ÓÈëÏîÄ¿¿ª·¢¹æ·¶ÖУ¬¼õÉÙºóÆÚµÄ´úÂë¸Ä¶¯¡£
2.3 Á´Â·ÖÎÀí
2.3.1 Á´Â·ÊáÀí
ÇëÇóµ÷ÓÃÁ´£¬¶ÔÓÚÏßÉÏѹ²âÊǷdz£ÖØÒªµÄ£º
ÌṩÇåÎúѹ²âÁ÷Á¿µØÍ¼£¬²¢ÌṩÍêÕûµÄÁ´Â·¼à¿Ø¡£
Íê³É·þÎñÒÀÀµµÄÊáÀí£¬¼ì²âѹ²âËùÒÀÀµµÄ·þÎñ/ÖÐ̨ÊÇ·ñ¾ß±¸Ñ¹²âµÄÌõ¼þ£¬ÊÇ·ñÐèҪѹ²â¸ÄÔì¡£
Á´½Óѹ²â¿ª¹Ø¹ÜÀí£¬Ñ¹²âÉÏÏÂÓÎÖÜÖªµÈ¡£
Rhino ƽ̨ͨ¹ý¹«Ë¾µÄÁ÷ʽÈÕ־ϵͳÀ´Íê³Éµ÷ÓÃÁ´¼ìË÷µÄ¡£Ò»¸ö·þÎñÔÚ±»ÇëÇó»òÕßÇëÇóÏÂÓÎʱ£¬¶¼»á͸´«Ò»¸ö
LogID¡£RPC ¿ò¼Ü»á´òÓ¡µ÷ÓÃÁ´ÈÕÖ¾£¨°üÀ¨ RPC ÈÕÖ¾-µ÷ÓÃÕßÈÕÖ¾£¬Access ÈÕÖ¾-±»µ÷ÓÃÕßÈÕÖ¾£©£¬ËùÓÐÈÕÖ¾Öж¼»á°üº¬Õâ¸ö
LogID¡£Í¨¹ý LogID ½«Ò»¸öÇëÇóËù¾¹ýµÄËùÓзþÎñÈÕÖ¾´®ÆðÀ´£¬¾ÍÍê³Éµ÷ÓÃÁ´¼ìË÷¡£

Rhino ƽ̨ÔÚ¹«Ë¾Á÷ʽÈÕ־ϵͳÌṩµÄÁ´Â·ÊáÀí¹¦ÄÜ»ù´¡ÉÏ£¬½øÐÐÁ˽øÒ»²½ÓÅ»¯£¬ÒÔÂú×ãѹ²âÐèÒª£º
×Ô¶¯ÊáÀí£ºÓÉÓÚ¹«Ë¾²ÉÓÃ΢·þÎñ¼Ü¹¹£¬Ã¿¸öÇëÇ󱳺óµÄµ÷ÓÃÁ´Â·¼°Æä¸´ÔÓ£¬µ¥´¿¿¿È˹¤Î¬»¤ÊÇÎÞ·¨Íê³ÉµÄ¡£Óû§Ö»ÐèÒªÌṩÇëÇóÖÐ
LogID£¬Rhino ƽ̨¾ÍÄÜ¿ìËÙÊáÀí³ö¸ÃÇëÇó¾¹ýµÄ·þÎñ½Úµã£¬Èçͼ¡£
ʵʱÊáÀí£ºÓÉÓÚÏßÉÏ·þÎñ²»¶ÏÔڱ仯£¬ÉÏÏßÏÂÏßÐÂÔöµÈ£¬Òò´Ëͬһ¸öÇëÇóµÄµ÷ÓÃÁ´Ò²ÊDz»¶Ï±ä»¯µÄ¡£Rhino
ƽ̨½¨ÒéÒ»°ãʹÓà 1 ¸öСʱÄÚµÄ LogID ½øÐÐÊáÀí¡£
¶àµ÷ÓÃÁ´Â·ºÏ²¢£ºÍ¬Ò»¸ö½Ó¿Ú£¬²»Í¬²ÎÊýϵĵ÷ÓÃÁ´ÊDz»¾¡ÏàͬµÄ¡£Rhinoƽ̨»á½«¶à¸öLogIDÊáÀíµÄ½á¹û×Ô¶¯½øÐкϲ¢£¬À´²¹È«µ÷ÓÃÁ´£¬±£Ö¤Á´Â·ÊáÀí½á¹ûµÄ׼ȷÐÔºÍÍêÕûÐÔ¡£

2.3.2 ѹ²âÖÜÖª
ËäÈ» Rhino ƽ̨¶ÔÓÚѹ²âÓкܶàµÄ°²È«±£ÕÏ´ëÊ©£¬µ«ÊǶÔÓÚ´óÐÍѹ²â£¬±£Ö¤ÐÅÏ¢µÄͨ³©Á÷ͨҲÊǷdz£ÖØÒªµÄ¡£Òò´ËÔÚѹ²âÖÜÖª·½Ã棬Rhino
ƽ̨ҲÌṩÁ˺ܶà½â¾ö·½°¸£º
Ò»¼üÀȺ£ºÊáÀíÍêÁ´Â·ºó£¬ÔÚѹ²âǰ¿ÉÒÔÒ»¼üÀȺ£¬½«Á´Â·ÖÐÉÏÏÂÓηþÎñµÄ Owner Àµ½Í¬Ò»¸öȺÀͬ²½Ñ¹²âÐÅÏ¢¡£
ѹ²âÖÜÖª£ºÃ¿¸öѹ²â¿ªÊ¼Ö´ÐÐʱ£¬¶¼»áÏòѹ²âÖÜ֪ȺÀïÍÆËÍÏûÏ¢£¬Èçѹ²â QPS£¬Ñ¹²âʱ³¤µÈÐÅÏ¢¡£

ѹ²âʼþ£ºÔÚѹ²â¿ªÊ¼Ö´ÐÐʱ£¬Rhino ƽ̨»¹»áÏòÄ¿±ê·þÎñµÄʼþ¶ÓÁÐÖз¢ËÍÒ»¸öѹ²âʼþ£¬·½±ã¿ìËÙÆÀ¹À/¶¨Î»Îȶ¨ÐÔÎÊÌâÊÇ·ñÊÇѹ²âµ¼Ö£¬¼õÉÙ
RD ÏßÉÏÎÊÌâÅŲéµÄ¸ÉÈÅ¡£
2.3.3 ѹ²â¿ª¹Ø¹ÜÀí
ÔÚѹ²â֮ǰ£¬ÐèÒª¿ªÆôÕûÌåÁ´Â·µÄѹ²â¿ª¹ØµÄ£¬·ñÔòѹ²âÁ÷Á¿¾Í»á±»·þÎñ¾Ü¾ø£¬µ¼ÖÂѹ²âʧ°Ü¡£
Ò»¼ü¿ªÆô£ºÔÚѹ²âÖ´ÐÐ֮ǰ£¬Rhino ƽ̨¿ÉÒÔÒ»¼ü¿ªÆôÁ´½ÓÉÏËùÓнڵãµÄѹ²â¿ª¹Ø¡£
ѹ²â¿ª¹Ø¿ªÆôÖÜÖª£ºÑ¹²â¿ª¹Ø¿ªÆôʱ£¬Rhino ƽ̨»á×Ô¶¯¸ø¶ÔÓ¦·þÎñ Owner ÍÆËÍÏà¹ØÐÅÏ¢£¬È·±£·þÎñ
Owner Á˽âÏà¹ØÑ¹²âÐÅÏ¢£¬ÉÏÓλáÓÐѹ²âÁ÷Á¿»á¾¹ýÆä·þÎñ¡£
¾²Ä¬¹Ø±Õ£ºÑ¹²â¿ª¹Øµ½ÆÚºó£¬Rhino »á×Ô¶¯¾²Ä¬¹Ø±Õѹ²â¿ª¹Ø£¬ÒÔ±£Ö¤ÏßÉÏ·þÎñµÄ°²È«¡£

2.3.4 ·þÎñ Mock
¶ÔÓÚµ÷ÓÃÁ´Öв»ÄÜѹ²âµÄ·þÎñ(Ãô¸Ð·þÎñ)£¬»òÕßµÚÈý·½·þÎñ£¬ÎªÁËѹ²âÇëÇóµÄÍêÕûÐÔ£¬¾ÍÐèÒª¶ÔÕâЩ·þÎñ½øÐÐ
Mock¡£Òµ½çͨÓÃµÄ Mock ·½°¸ÓУº
ÐÞ¸ÄÒµÎñ´úÂ룬Ð޸ķþÎñµ÷ÓÃΪ¿Õת´úÂë¡£Óŵ㣺ʵÏֳɱ¾µÍ¡£È±µã£º·µ»ØÖµ¹Ì¶¨£¬´úÂë&ÒµÎñÈëÇָߣ¬Íƶ¯À§ÄÑ¡£ÈçÒª
Mock λÖñȽϿ¿ÏÂÓΣ¬³¬³ö²¿ÃŸ²¸ÇÒµÎñ·¶Î§£¬Íƶ¯¾Í·Ç³£Âé·³¡£
ͨÓà Mock ·þÎñ¡£Í¨Óà MockServer£¬»á¸ù¾Ý²»Í¬Óû§ÅäÖò»Í¬ Mock ¹æÔò£¬Ö´ÐжÔÓ¦µÄÏìÓ¦ÑÓʱ£¬²¢·µ»Ø¶ÔÓ¦ÏìÓ¦Êý¾Ý¡£Óŵ㣺ÎÞ´úÂëÈëÇÖ£¬ÒµÎñ·½ÎÞ¸ÐÖª¡£È±µã£ºÊµÏֳɱ¾¸ß¡£
ÓÉÓÚ×Ö½ÚÌø¶¯Õû¸ö¹«Ë¾¶¼²ÉÓÃ΢·þÎñ¼Ü¹¹£¬µ¼ÖÂÒ»´Îѹ²âÉæ¼°Á´Â·¶¼±È½Ï³¤£¬¿ìËÙÎÞÒµÎñÈëÇÖµÄ Mock ·½Ê½³ÉΪÁËÊ×Ñ¡
¡£Rhino ƽ̨ÊÇͨ¹ý¹«Ë¾ Service Mesh ºÍ ByteMock ϵͳÀ´ÊµÏÖÁ˸ßЧµÄ£¬¶ÔÒµÎñ͸Ã÷µÄ·þÎñ
Mock¡£
ѹ²âÖ´ÐÐǰ£¬Rhino ƽ̨ÐèÒªÏò Service Mesh ×¢²áȾɫת·¢¹æÔò£¬²¢Ïò Mock ·þÎñ×¢²á
Mock ¹æÔò¡£È»ºóÔÚѹ²âÁ÷Á¿ÖÐ×¢Èë Mock Ⱦɫ±ê¼Ç£¬²ÅÄÜÍê³É·þÎñ Mock£º
»ùÓÚ Service Mesh µÄȾɫÁ÷Á¿×ª·¢¡£Ê×ÏÈÐèÒªÔÚѹ²âÁ÷Á¿ÖÐ×¢Èëת·¢È¾É«±ê¼Ç£¬²¢ÔÚ Service
Mesh ÖÐ×¢²á¶ÔÓ¦µÄת·¢¹æÔò¡£Service Mesh ¼ì²âµ½È¾É«Á÷Á¿ºó£¬¾Í»á½«Æäת·¢µ½Ö¸¶¨µÄ Mock
Server ÉÏ£¬Èçͼ¡£
»ùÓÚ Mock Server µÄÇëÇó¹æÔòÆ¥Åä¡£Ê×ÏÈÔÚ Mock Server ÉÏ×¢²á Mock ¹æÔò£¬ÒÔ¼°Æ¥ÅäµÄ
Response ºÍÏìӦʱÑÓ¡£µ± Mock Server ½ÓÊÕµ½ÇëÇóºó£¬»á¸ù¾Ý¹æÔò½øÐÐÏìÓ¦£¬Èçͼ¡£

2.4 ·¢Ñ¹Ä£Ê½
2.4.1 ×îСµ÷¶Èµ¥Ôª
Rhino ƽ̨ÖУ¬Ñ¹²â Agent ¾ÍÊÇÒ»¸ö×îСµ÷¶Èµ¥Ôª¡£Ò»´Îѹ²âÈÎÎñ£¬Í¨³£»á²ð·Ö³É¶à¸ö×Ó Job£¬È»ºóÏ·¢µ½¶à¸ö
Agent ÉÏÀ´Íê³É¡£
×îС»¯ÈÝÆ÷²¿Ê𣬼õÉÙ×ÊÔ´ÀË·Ñ¡£Ñ¹²â¶Ô»úÆ÷×ÊÔ´ÏûºÄÊǷdz£¸ßµÄ£¬Í¨³£ CPU &Memory
µÄʹÓÃÂʶ¼ÔÚ 80%ÒÔÉÏ¡£µ«ÊÇûÓÐѹ²âÖ´ÐÐʱ¼äÄÚ£¬»úÆ÷×ÊԴʹÓÃÂÊ<5%¡£Èç¹û³¤ÆÚÕ¼ÓôóÁ¿µÄ×ÊÔ´£¬½«»á¶Ô»úÆ÷×ÊÔ´Ôì³É¼«´óµÄÀË·Ñ¡£Ñ¹²â
Agent ¶¼²ÉÓÃÈÝÆ÷»¯²¿Ê𣬲¢ÇÒÿ¸öÈÝÆ÷µÄ×ÊÔ´¹æ¸ñÒ²¾¡¿ÉÄÜС£¬ÕâÑù¼ÈÄÜÂú×ãÈÕ³£Ñ¹²âÐèÇó£¬Ò²²»»áÕ¼ÓÃÌ«¶àµÄ»úÆ÷×ÊÔ´¡£
¶ÀÕ¼ Agent£¬Ôö¼Óѹ²âÖ´ÐÐÎȶ¨ÐÔ£ºµ¥¸öÈÝÆ÷ÄÚÖ»Æô¶¯Ò»¸ö Agent ½ø³Ì£¬µ¥¸ö Agent ͬʱֻÄܱ»Ò»¸öѹ²âÈÎÎñÕ¼Ó㬱ÜÃâ¶àÈÎÎñ¶à½ø³ÌµÄ¸ÉÈźÍ×ÊÔ´¾ºÕù£¬Ôö¼Óѹ²âµÄÎȶ¨ÐÔ¡£
¶¯Ì¬À©ÈÝ£¬Ö§³Åº£Á¿ QPS ·¢Ñ¹£ºÑ¹²â¸ß·åÆÚ£¬Rhino ƽ̨»áÁÙʱÉêÇë»úÆ÷×ÊÔ´£¬¿ìËÙÀ©ÈÝ£¬Íê³Éº£Á¿
QPS µÄÖ§³Å¡£Ñ¹²âÍê³Éºó£¬»áÁ¢¼´ÊÍ·Å»úÆ÷×ÊÔ´£¬¼õÉÙ×ÊÔ´ÀË·Ñ¡£
2020 Äê´º½ÚÇÀºì°üѹ²âÖУ¬Rhino ÁÙʱÀ©ÈÝÔÚ 4000+¸öʵÀý£¬Ö§³ÅÁ˵¥´Î 3kw+QPS
µÄѹ²â£¬µ«ÈÕ³£ Rhino ƽֻ̨²¿ÊðÁË 100+¸öʵÀý£¬¾ÍÄÜÂú×ãÈÕ³£Ñ¹²âÐèÇó¡£
2.4.2 ÖÇÄÜѹÁ¦µ÷½Ú
¶¯Ì¬·ÖÅäѹ²â Agent£ºÔÚѹ²â¹ý³Ì£¬¾³£³öÏÖѹ²â Agent µÄ CPU/Memory ʹÓÃÂʹý¸ß(>90%)£¬µ¼ÖÂѹÁ¦Éϲ»È¥£¬´ï²»µ½Ä¿±ê
QPS£»»òÕßѹ²âÑÓʱ¹ý¸ß£¬Ñ¹²â½á¹û²»×¼È·µÄÎÊÌâ¡£Rhino ƽ̨ÔÚ·¢Ñ¹µÄ¹ý³ÌÖУ¬»áʵʱ¼à¿ØÃ¿¸öѹ²â
Agent µÄ CPU/Memory ʹÓÃÂÊ£¬µ±³¬¹ýãÐֵʱ(>90%)£¬»á¶¯Ì¬·ÖÅä¶îÍâµÄ Agent£¬ÒÔ½µµÍÿ¸ö
Agent µÄ¸ºÔØ£¬±£Ö¤Ñ¹²âµÄÎȶ¨ÐÔ¡£
ÖÇÄܵ÷½ÚѹÁ¦£ºÔÚѹ²â¹ý³Ì£¬Í¨³£ÐèÒª²»¶ÏµÄµ÷½Ú QPS ´óС£¬ÒÔ´ïµ½ÐÔÄÜѹ²âÄ¿±ê¡£Õâ¹ý³Ì·Ç³£ºÄ·Ñ¾«Á¦ºÍʱ¼ä¡£Rhino
ƽ̨£¬¿ÉÒÔ¸ù¾Ýѹ²âÈÎÎñÉ趨µÄÐÔÄÜÖ¸±ê£¬ÖÇÄܵ÷½Ú QPS ´óС£¬µ±´ïµ½Ñ¹²âÄ¿±êºó£¬»á×Ô¶¯ÈÛ¶Ï£¬Í£Ö¹Ñ¹²â¡£
2.4.3 ѹ²âÁ´Â·Ä£Äâ
Rhino ƽ̨ĬÈϽ«È«Á´Â·Ñ¹²â·ÖΪ¹«ÍøÑ¹²âºÍÄÚÍøÑ¹²â¡£¹«ÍøÑ¹²âÖ÷Òª IDC ÍøÂç´ø¿í£¬ÑÓʱ£¬IDC
Íø¹ØÐ½¨Á¬½Ó¡¢×ª·¢µÈÄÜÁ¦£»ÄÚÍøÑ¹²â£¬Ö÷ÒªÊÇѹ²âÄ¿±ê·þÎñ£¬Ä¿±ê¼¯ÈºµÄÐÔÄÜ£¬ÈÝÁ¿µÈ¡£
¶ÔÓÚÄÚÍøÑ¹²â£¬Ä¬È϶¼ÒªÇóͬ IDC ÄÚ·¢Ñ¹£¬¼õÉÙÍøÂçÑÓʱµÄ¸ÉÈÅ¡£
¶ÔÓÚ¹«ÍøÑ¹²â£¬Rhino ƽ̨ÔÚ¹«Ë¾ CDN ½ÚµãÉ϶¼Óв¿Êð Agent ½Úµã£¬ÀûÓÃÁË CDN ½ÚµãÊ£Óà¼ÆËãÄÜÁ¦£¬Íê³ÉÁ˹«ÍøÑ¹²âÄÜÁ¦µÄ½¨Éè¡£
2.4.4 ͬ³Ç¶à»ú·¿£¬ÒìµØ¶à»ú·¿
Rhino ƽ̨ÔÚ¸÷¸ö IDC ¶¼Óв¿Êð Agent ¼¯Èº¡£¸÷¸ö IDC ÄÚ·þÎñµÄѹ²â£¬Ä¬ÈÏ»á¾Í½üÑ¡Ôñѹ²â
Agent£¬À´¼õÉÙÍøÂçÑÓʱ¶Ôѹ²â½á¹ûµÄ¸ÉÈÅ£¬Ê¹µÃѹ²â½á¹û¸ü¾«×¼£¬Ñ¹²âÎÊÌⶨλ¸ü¼òµ¥¡£
2.4.5 ±ßÔµ¼ÆËã½Úµã Agent
³ýÁ˶à»ú·¿²¿ÊðÖ®Í⣬Rhino ƽ̨»¹ÔÚ±ßÔµ¼ÆËã½ÚµãÉÏÒ²²¿ÊðÁËѹ²â Agent£¬À´Ä£Äâ¸÷ÖÖ²»Í¬µØÓò²»Í¬ÔËÓªÉ̵ÄÁ÷Á¿ÇëÇó£¬È·±£Á÷Á¿À´Ô´£¬Á÷Á¿·Ö²¼¸üÌù½üÕæÊµÇé¿ö¡£ÔÚ
Rhino ƽ̨ÉÏ¿ÉÒÔÑ¡Ôñ²»Í¬µØÓò²»Í¬ÔËÓªÉÌ£¬´ÓÈ«¹ú¸÷¸öµØÇø·¢Æðѹ²âÁ÷Á¿¡£

2.5 ѹ²âÈÛ¶Ï
ΪÁËÓ¦¶ÔÏßÉÏѹ²â·çÏÕ£¬Rhino ƽ̨ÌṩÁ½ÖÖÈÛ¶Ï·½Ê½£¬À´Ó¦¶Ôѹ²â¹ý³ÌÖеÄÍ»·¢Ê¼þ£¬À´½µµÍ¶ÔÏßÉÏ·þÎñÔì³ÉµÄÓ°Ïì¡£
2.5.1 »ùÓڸ澯¼à¿ØµÄÈÛ¶Ï
ÿ¸öѹ²âÈÎÎñ£¬¶¼¿ÉÒÔ¹ØÁªµ÷ÓÃÁ´ÖÐÈÎÒâ·þÎñµÄ¸æ¾¯¹æÔò¡£ÔÚѹ²âÈÎÎñÖ´Ðйý³Ì£¬Rhino ƽ̨»áÖ÷¶¯¼àÌý¸æ¾¯·þÎñ¡£µ±µ÷ÓÃÁ´ÖÐÓзþÎñ³öÏÖÁ˸澯£¬»áÁ¢¼´Í£Ö¹Ñ¹²â¡£¶ÔÓÚûÓйØÁªµÄ¸æ¾¯£¬Rhino
ƽ̨Ҳ»á¼Ç¼ÏÂÀ´£¬±ãÓÚѹ²âÎÊÌⶨλ¡£

2.5.2 »ùÓÚ Metric µÄÈÛ¶Ï
×Ô¶¨Òå¼à¿ØÖ¸±ê¼°ãÐÖµ£¬µ½´ïãÐÖµºó£¬Ò²»á×Ô¶¯Í£Ö¹Ñ¹²â¡£Ä¿Ç°Ö§³Ö CPU¡¢Memory¡¢ ÉÏÓÎÎȶ¨ÐÔ¡¢´íÎóÈÕÖ¾£¬ÒÔ¼°ÆäËû×Ô¶¨ÒåÖ¸±ê¡£
´ËÍ⣬³ýÁË Rhino ƽ̨×ÔÉíÌṩµÄÈÛ¶Ï»úÖÆÒÔÍ⣬¹«Ë¾·þÎñÖÎÀí¼Ü¹¹Ò²ÌṩÁ˺ܶà¶îÍâµÄÈÛ¶Ï»úÖÆ£¬Èçѹ²â¿ª¹Ø£¬Ò»¼üÇжÏѹ²âÁ÷Á¿£»¹ýÔØ±£»¤£¬·þÎñ¹ýÔØÊ±×Ô¶¯¶ªÆúѹ²âÁ÷Á¿¡£
2.6 ÈÎÎñÄ£ÐÍ
2.6.1 HTTP ÈÎÎñ
¶ÔÓÚ HTTP ÐÒ飬²Î¿¼ÁË Postman£¬È«²¿¿ÉÊÓ»¯²Ù×÷£¬±£Ö¤ËùÓÐÈ˶¼ÄÜÉÏÊÖ²Ù×÷£¬¼«´ó½µµÍÁËѹ²âµÄʹÓÃÃż÷ºÍ³É±¾¡£

2.6.2 RPC ÈÎÎñ
¶ÔÓÚ RPC ÈÎÎñ£¬Rhino Ò²×Ô¶¯Íê³ÉÁË¶Ô IDL µÄ½âÎö£¬È»ºóת»»³É JSON ¸ñʽ£¬±ãÓÚÓû§²ÎÊý»¯´¦Àí¡£

2.6.3 ×Ô¶¨Òå-Go Plugin
¶ÔÓÚ·Ç HTTP/RPC µÄÐÒ飬ÒÔ¼°Óи´ÔÓÂß¼µÄѹ²âÈÎÎñ£¬Rhino ƽ̨ҲÌṩÁËÍêÉÆµÄ½â¾ö·½°¸¡ª¡ªGo
Plugin¡£
Go Plugin ÌṩÁËÒ»ÖÖ·½Ê½£¬Í¨¹ýÔÚÖ÷³ÌÐòºÍ¹²Ïí¿âÖ±½Ó¶¨ÒåһϵÁеÄÔ¼¶¨»òÕß½Ó¿Ú£¬¾Í¿ÉÒÔ¶¯Ì¬¼ÓÔØÆäËûÈ˱àÒëµÄ
Go ÓïÑÔ¹²Ïí¶ÔÏó£¬Ê¹µÃÖ÷³ÌÐò¿ÉÒÔÔÚ±àÒëºó¶¯Ì¬¼ÓÔØ¹²Ïí¿â£¬ÊµÏÖÈȲå°ÎµÄ²å¼þϵͳ¡£´ËÍâÖ÷³ÌÐòºÍ¹²Ïí¿âµÄ¿ª·¢Õß²»ÐèÒª¹²Ïí´úÂ룬ֻҪ˫·½µÄÔ¼¶¨²»±ä£¬Ð޸Ĺ²Ïí¿âºóÒ²²»ÔÙÐèÒªÖØÐ±àÒëÖ÷³ÌÐò¡£

Óû§Ö»Òª¸ù¾Ý¹æ·¶ÒªÇó£¬ÊµÏÖÒ»¶Î·¢Ñ¹ÒµÎñÂß¼´úÂë¼´¿É¡£Rhino ƽ̨¿ÉÒÔ×Ô¶¯ÀÈ¡´úÂ룬´¥·¢±àÒë¡£²¢½«±àÒëºóµÄ²å¼þ
SO Îļþ·Ö·¢µ½¶à¸öѹ²â Agent¡£Agent ¶¯Ì¬¼ÓÔØ SO Îļþ£¬²¢·¢ÔËÐÐÆðÀ´£¬¾Í¿ÉÒԴﵽѹ²âµÄÄ¿µÄ¡£´ËÍ⣬Rhino
»¹Õë¶Ô³£¼û Go Plugin ѹ²â³¡¾°£¬½¨Á¢ÁËѹ²â´úÂëʾÀý´úÂë¿â¡£¶ÔÓÚѹ²âÐÂÊÖ£¬¼òµ¥ÐÞ¸ÄÏÂÒµÎñÂß¼´úÂ룬¾Í¿ÉÒÔÍê³Éѹ²âÁË¡£ÕâÑù¾Í½â¾öÁ˷dz£¼ûÐÒ飬ÒÔ¼°¸´ÔÓѹ²â³¡¾°µÈµÄѹ²âÎÊÌâ¡£
2.7 ѹ²âÒýÇæ
2.7.1 µ¥ Agent ¶àÒýÇæ
ѹ²âµ÷¶ÈµÄ×îСµ¥ÔªÊÇѹ²â Agent£¬µ«ÊÇʵ¼Êÿ¸ö Agent ÖÐÓйÒÔØ¶àÖÖѹ²âÒýÇæµÄÀ´Ö§³Å²»Í¬µÄѹ²â³¡¾°¡£Rhino
ƽ̨ÔÚѹ²âÊý¾ÝºÍѹ²âÒýÇæÖ®¼äÔö¼ÓÁËÒ»¸öѹ²âÒýÇæÊÊÅä²ã£¬ÊµÏÖÁËѹ²âÊý¾ÝÓëѹ²âÒýÇæµÄ½âñѹ²âÒýÇæÊÊÅä²ã£¬»á¸ù¾ÝÑ¡Ôñ²»Í¬µÄѹ²âÒýÇæ£¬Éú³É²»Í¬
Schema µÄѹ²âÊý¾Ý£¬ÆôÓò»Í¬µÄÒýÇæÀ´Íê³Éѹ²â£¬¶øÕâЩ¶ÔÓû§ÊÇ͸Ã÷µÄ¡£

2.7.2 ѹ²âÒýÇæ
ÔÚѹ²âÒýÇæÉÏ£¬ÎÒÃÇÓпªÔ´µÄѹ²âÒýÇæ£¬Ò²ÓÐ×ÔÑеÄѹ²âÒýÇæ¡£
¿ªÔ´Ñ¹²âÒýÇæµÄÓŵãÊÇά»¤È˶࣬¹¦ÄܱȽϷḻ£¬Îȶ¨ÇÒÐÔÄܺã¬È±µã¾ÍÊÇÊäÈë¸ñʽ¹Ì¶¨£¬¶¨ÖÆÄѶȴ󡣴ËÍâ
Agent Ó뿪Դѹ²âÒýÇæÖ®¼äͨ³£ÊDz»Í¬½ø³Ì£¬½ø³ÌͨÐÅÒ²´æÔڱȽϴóµÄÎÊÌ⣬²»ÈÝÒ׿ØÖÆ¡£
×ÔÑÐѹ²âÒýÇæ£¬ÓŵãÊÇºÍ Agent ͨ³£ÔËÐÐÔÚµ¥½ø³ÌÄÚ£¬±È½ÏÈÝÒ׿ØÖÆ£»È±µã¿ÉÄܾÍÊÇÐÔÄÜÉÔ΢²îһЩ¡£µ«ÊÇ
Golang ÌìȻ֧³Ö¸ß²¢·¢£¬Òò´Ë×ÔÑкͿªÔ´Ö®¼äµÄÐÔÄܲî¾à²¢²»Ã÷ÏÔ¡£
HTTP ÐÒ飺ĬÈÏ Gatling £¬µ¥»ú·¢Ñ¹ÐÔÄܷdz£ºÃ£¬Ô¶³¬ÓÚ Jmeter¡£¶ÔÓÚÖÇÄÜѹ²â£¬»ò¶¯Ì¬µ÷½ÚµÄÇé¿ö£¬»áÇл»µ½×ÔÑÐѹ²âÒýÇæÉÏ¡£
RPC ÐÒ飺×ÔÑÐÒýÇæ£¬Ö÷ÒªÀûÓà Golang гÌ+ RPC Á¬½Ó³Ø£¬À´Íê³É¸ß²¢·¢Ñ¹²â¡£
GoPlugin ÐÒ飺×ÔÑÐÒýÇæ£¬ÀûÓà Golang Plugin ¿É¶¯Ì¬×°ÔصÄÌØÐÔ£¬×Ô¶¯×°ÔØ×Ô¶¨Òåѹ²â²å¼þ£¬À´Íê³Éѹ²â¡£
2.8 ѹ²â¼à¿Ø
2.8.1 ¿Í»§¶Ë¼à¿Ø
ÓÉÓÚ¹«Ë¾¼à¿ØÏµÍ³£¬×îСʱ¼äÁ£¶ÈÊÇ 30s£¬30s ÄÚµÄÊý¾Ý»á¾ÛºÏ³ÉÒ»¸öµã¡£Õâ¸öʱ¼äÁ£¶È¶ÔÓÚѹ²âÀ´ËµÊDZȽÏÄÑÒÔ½ÓÊܵġ£Òò´Ë£¬Rhino
ƽ̨×Ô¼º´î½¨ÁËÒ»Ì׿ͻ§¶Ë¼à¿ØÏµÍ³¡£
ÿ¸ö Request ¶¼»áÒÔÇëÇó¿ªÊ¼Ê±¼äΪ»ù×¼´òÒ»¸öµã¡£
µ¥¸ö Agent ÄÚ£¬»á½«ÏàͬÈÎÎñÏàͬ½Ó¿Ú£¬1s ÄڵĴòµãÊý¾ÝÔÚ±¾µØ×öÒ»´Î»ã×Ü£¬Éϱ¨µ½ Kafka
ÖС£
¼à¿Ø·þÎñ»áÏû·Ñ Kafka ÖеĴòµãÊý¾Ý£¬½«¶à¸ö Agent Éϱ¨µÄÊý¾Ý½øÐÐÔٴλã×Ü£¬È»ºóдÈëÊý¾Ý¿âÖС£
ǰ¶Ë¼à¿Ø±¨±í»áʵʱÀÈ¡Êý¾Ý¿âÖÐ¼à¿Ø»ã×ÜÊý¾Ý£¬»æÖÆÊµÊ±¼à¿ØÇúÏß¡£
ÔÚ¼à¿ØÊý¾Ý»ã×ÜÁ÷³ÌÖУ¬¶ÔÓÚÇëÇóÏìӦʱ¼äµÄ PCT99 ¼ÆË㣬ÊDZȽÏÄÑ´¦ÀíµÄ£º
Ŀǰ Rhino ƽ̨²ÉÓÃµÄ T-Digest Ëã·¨À´¼ÆËã 1 ÃëÄÚµÄ PCT99¡£
Õû¸öʱ¼ä¶ÎÄÚµÄ PCT99 µÄ¼ÆË㣬ÔòÊÇÒÔ PCT & AGV µÄ·½Ê½¾ÛºÏ¡£¼´µ¥Î»Ê±¼äÄÚͨ¹ý
T-Digest ¼ÆËã PCT99£»Õû¸öʱ¼ä¶ÎÄÚµÄ PCT99£¬ÔòÊǶÔËùÓеãµÄ PCT99 ȡƽ¾ùÖµ¡£
ÕûÌ弯Ëã·½°¸ÒÑÓ빫˾·þÎñ¶Ë¼à¿ØËã·¨¶ÔÆë£¬Ä¿µÄÊǼõÉÙ¿Í»§¶Ë¼à¿ØÓë·þÎñ¶Ë¼à¿ØÖ®¼äµÄ Gap£¬¼õÉÙѹ²â½á¹û·ÖÎöµÄ¸ÉÈÅÒòËØ¡£

2.8.2 ·þÎñ¶Ë¼à¿Ø
·þÎñ¶Ë¼à¿Ø£¬Ö±½Ó½ÓÈëÁ˹«Ë¾Metricϵͳ¡£
ÔÚѹ²â¹ý³ÌÖУ¬Rhinoƽ̨»áÌṩÕûÌõÁ´Â·ÉÏËùÓнڵãºËÐÄÖ¸±êµÄ¼à¿Ø´óÅÌ£¬²¢¸ßÁÁÏÔʾ¿ÉÄÜ´æÔÚ·çÏյĽڵ㣬À´ÌṩʵʱԤ¾¯¡£
¶ÔÓÚÿ¸ö½ÚµãÒ²¶¼ÌṩÁËʵʱµÄ£¬ÏêϸµÄ¼à¿ØÇúÏßͼ¡£
¶ÔÓÚÿ¸ö½ÚµãĬÈÏÌṩCPU¡¢Memory¡¢QPSºÍError_RateµÈºËÐÄ¼à¿ØÖ¸±ê£¬Óû§¿ÉÒÔÔÚRhinoƽ̨ÉÏÐÞ¸Ä¼à¿ØÅäÖã¬Ôö¼ÓÆäËû×Ô¶¨Òå¼à¿ØÖ¸±ê¡£

2.8.3 ÐÔÄÜ Profile
ÔÚѹ²â¹ý³ÌÖУ¬Rhino ƽ̨»¹¿ÉÒÔʵʱ²É¼¯Ä¿±ê·þÎñ½ø³ÌµÄÐÔÄÜ Profile£¬²¢Í¨¹ý»ðÑæÍ¼µÄ·½Ê½Õ¹Ê¾³öÀ´£¬·½±ãÓû§½øÐÐÐÔÄÜÎÊÌâ·ÖÎöºÍÓÅ»¯£¬Èçͼ¡£

3. ѹ²âʵ¼ù
Rhino ѹ²âƽ̨ÊÇÒ»¸öÃæÏòÈ«×Ö½ÚÌø¶¯¹«Ë¾µÄ£¬ÎªÁËËùÓÐÑз¢Í¬Ñ§ÌṩµÄһվʽȫÁ´Â·Ñ¹²âµÄƽ̨¡£Rhino
ƽ̨µÄÑз¢ÍŶӣ¬²»½ö¸ºÔð Rhino ƽ̨µÄÑз¢ÈÎÎñ£¬»¹»áÅäºÏ QA&RD À´Íê³É¹«Ë¾´óÐÍÏîÄ¿£¬ÖصãÒµÎñµÄÐÔÄÜѹ²â¹¤×÷¡£
3.1 ÖØ´óÏîĿ֧³Å
¹«Ë¾ÄÚÖØ´óÏîÄ¿µÄѹ²â£¬Rhino ƽ̨¶¼»á»ý¼«²ÎÓ룬ȫÁ¦Ö§³ÅµÄ¡£ÆäÖУ¬±È½ÏµäÐ͵ÄÏîÄ¿Óж¶Òô´ºÍí£¬Î÷¹Ï°ÙÍòÓ¢ÐÛ£¬´º½Úºì°üÓêµÈ»î¶¯¡£ÆäÖÐ×Ö½ÚÌø¶¯´º½Úºì°üÓê»î¶¯µÄÍê³ÉÊÇÓÉ
Rhino ÍŶÓÀ´¸ºÔðºÍÍê³ÉµÄ¡£×Ö½Ú´º½Úºì°üÓê»î¶¯ÊÇÔÚ´º½ÚÆÚ¼ä£¬ËùÓÐ×Ö½Ú¿Í»§¶Ë·¢ÆðµÄ£¬ÖîÈç³é¿¨·ÖÏֽ𣬺ì°ü½õÀ𣬺ì°üÓêµÈһϵÁеij¬´ó¹æÄ£µÄºì°üÒýÁ÷»î¶¯¡£ÆäÁ÷Á¿¹æÄ£¾Þ´ó£¬Á÷Á¿Í»·¢ÐÔÇ¿£¬ÒµÎñÂß¼ºÍÍøÂç¼Ü¹¹¸´ÔӶȸߵȵȣ¬¶¼¶Ô
Rhino ƽ̨Ìá³ö²»Ð¡µÄÌôÕ½¡£
ÔÚ´º½Úºì°üÓê»î¶¯ÖУ¬ËùÓÐÓû§Á÷Á¿¶¼¾¹ýÔËÓªÉÌרÏß½ÓÈëµ½ÍøÂç±ßÔµµÄ»ã¾Û»ú·¿£¬È»ºó¾¹ý¹ýÂ˺ÍÑéÖ¤ºó£¬ÔÙת·¢µ½ºËÐÄ»ú·¿¡£ÆäÖи÷¸ö
IDC »¥Îª±¸·Ý£¬Æä¾ßÌåÁ÷Á¿Â·ÏßÈçͼ¡£ÔÚÕâÀ²»½öÒªÑéÖ¤ºó¶Ë¸÷·þÎñÊÇ·ñÄܳÐÔØÔ¤ÆÚÁ÷³Ì£¬»¹ÒªÑéÖ¤¸÷¸öרÏß´ø¿í£¬¸÷¸öÍø¹Ø´ø¿í¼°×ª·¢ÄÜÁ¦£¬¸÷
IDC ³ÐÔØÄÜÁ¦ÒÔ¼°Ö®¼ä´ø¿íµÈµÈ¡£

Ϊ´Ë£¬ÎÒÃǽ«Õû¸öѹ²â²ð·Ö³É¶à¸ö½×¶Î£¬À´¼ò»¯Ñ¹²â¸´ÔÓÐÔ£¬Ò²½µµÍѹ²âÎÊÌⶨλµÄÄѶȣº
ͨ¹ý²¦²â/CDN ѹ²âÀ´·Ö±ðÑéÖ¤¸÷¸ö»ã¾Û»ú·¿µÄ³ÐÔØÄÜÁ¦£¬´ø¿í£¬ÒÔ¼°Íø¹ØÐÔÄÜ¡£
ÔÚ¸÷¸ö»ã¾Û»ú·¿²¿Êðѹ²â Agent£¬À´Ä£ÄâÓû§Á÷Á¿·Ö²¼£¬À´Ñ¹²â²¿ÊðÔÚºËÐÄ»ú·¿µÄºó¶Ë·þÎñÐÔÄÜ¡£
µ¥½Ó¿Úµ¥ÊµÀýѹ²â£¬µ¥½Ó¿Úµ¥»ú·¿Ñ¹²â£¬³¡¾°»¯È«Á´Â·µ¥»ú·¿Ñ¹²â£¬³¡¾°»¯È«Á´Â·È«×ÊԴѹ²â£¬·Ö½×¶ÎÀ´ÑéÖ¤ºó¶Ë·þÎñÐÔÄÜ¡£
×îºó»áͨ¹ýÈ«Íø²¦²â£¬À´Ä£ÄâÕæÊµ´º½Úºì°üÓê¸ß·åÆÚÁ÷Á¿£¬ÕûÌåÑé֤ȫϵͳÐÔÄÜ¡£
ÔÚÕâЩ´óÐÍÏîÄ¿µÄÖ§³ÅÖУ¬Rhino ÍŶӲ»½öѧµ½ÁË´óÁ¿µÄÒµÎñºÍ¼Ü¹¹Éè¼ÆÖªÊ¶£¬»¹Á˽⵽ҵÎñÑз¢Í¬Ñ§ÈçºÎ¿´´ýѹ²â£¬ÈçºÎʹÓÃÆ½Ì¨£¬°ïÖúÎÒÃÇ·¢ÏÖ¸ü¶àƽ̨µÄÎÊÌ⣬´Ù½øÆ½Ì¨²»¶Ïµü´úÓÅ»¯¡£
3.2 ÈÕ³£Ñ¹²âÈÎÎñÖ§³Å
ÈÕ³£Ñ¹²âÖ§³Å£¬Ò²ÊÇ Rhino ƽ̨·Ç³£ÖØÒªµÄÒ»ÏîÈÎÎñ¡£¶ÔÓÚÈÕ³£Ñ¹²âÖÐÓöµ½µÄ¸÷ÖÖÎÊÌ⣬ÎÒÃDzÉÓÃÁ˸÷ÖÖ·½°¸À´½â¾ö£º
רÈË Oncall ÖµÖÜ£¬Ò»¶ÔÒ»Ö¸µ¼¡£
ÏêϸÍêÉÆµÄѹ²â֪ʶ¿â£¬²»½ö½éÉÜÁËÆ½Ì¨ÈçºÎʹÓ㬻¹°üÀ¨Ñ¹²âÈçºÎ¸ÄÔ죬ѹ²â·½°¸ÈçºÎÖÆ¶¨£¬Ñ¹²âÎÊÌâÈçºÎ¶¨Î»¡£
ÍêÉÆµÄÐÔÄÜÅàѵÌåϵ£º¶¨ÆÚ¿ªÕ¹ÐÔÄܲâÊÔÏà¹Ø·ÖÏí£¬²¢¶ÔÓÚ QA&RD ÍŶӣ¬Ò²»á¿ªÕ¹×¨ÒµµÄѹ²âÅàѵ¡£
3.3 ÏßÉÏÁ÷Á¿µ÷¶È
Rhino ƽ̨»¹ÊµÏÖÁËÏßÉÏÁ÷Á¿µÄ¶¨ÆÚµ÷¶È£¬ÒÔ´ïµ½ÏßÉÏʵÀý×Ô¶¯Ñ¹²âµÄÄ¿µÄ[8]£º
½«ÏßÉÏÁ÷Á¿Öð²½µ÷¶Èµ½Ä¿±êʵÀýÉÏ£¬À´²âÊÔ·þÎñʵÀýÐÔÄܼ«ÏÞ£¬²¢¸ø³öʵÀýÐÔÄÜ Profile£¬·ÖÎö³öʵÀýÐÔÄÜÆ¿¾±¡£
ͨ¹ý³¤ÆÚµÄÁ÷Á¿µ÷¶È£¬À´¹Û²ì·þÎñʵÀýÐÔÄܱ仯£¬ÒÔ¼à¿Ø·þÎñÐÔÄܵı仯Ç÷ÊÆ¡£
ͨ¹ý²»Í¬×ÊԴˮλϵÄʵÀýÐÔÄÜ£¬À´Ô¤¹À³öÕû¸ö¼¯ÈºÈÝÁ¿¡£Íê³É¶Ô·þÎñÈÝÁ¿Ô¤¹À£¬ÒÔ¼°ÏßÉÏ·çÏÕÆÀ¹À¡£
»ùÓÚÓ¾µÀ»¯µÄÁ÷Á¿µ÷¶È£¬¿ÉÒÔ¾«È·µÄÔ¤¹À·þÎñ¼¯ÈºÈÝÁ¿¡£
Æä¾ßÌåʵÏÖ·½°¸ÈçÏ£º
Ð޸ĸºÔؾùºâÖÐÄ¿±êʵÀýµÄÈ¨ÖØ Weight Öµ£¬Öð²½µ÷´ó¸Ã Weight Öµ£¬½«¸ü¶àÁ÷Á¿¼¯Öдòµ½Ä¿±êʵÀý£¬Ö±µ½´ïµ½ÉèÖõÄÍ£Ö¹ãÐÖµ¡£
ĿǰÒѾÓÐ 500+΢·þÎñ½ÓÈ룬ÿÌ춨ʱִÐÐÁ÷Á¿µ÷¶È£¬À´¼à¿ØÏßÉÏ·þÎñÐÔÄܱ仯Ç÷ÊÆ£¬ÈçÏÂͼ¡£

3.4 ³£Ì¬»¯Ñ¹²â
Rhino ƽ̨Ŀǰ»¹ÔÚ¹«Ë¾ÄÚÍÆÐг£Ì¬»¯Ñ¹²â£¬Í¨¹ýÖÜÆÚ¶¨Ê±»¯µÄ×Ô¶¯»¯È«Á´Â·Ñ¹²â£¬À´ÊµÏÖÒÔÏÂÄ¿±ê£º
ʵʱ¼à¿ØÏßÉÏ·þÎñ¼¯ÈºÈÝÁ¿£¬·ÀÖ¹·þÎñÐÔÄÜÁÓ»¯¡£
ʵʱ¼à¿ØÏßÉÏÁ´Â·ÈÝÁ¿£¬·ÀÖ¹Á´Â·ÐÔÄÜÁÓ»¯¡£
Ŀǰ Rhino ƽ̨Éϵij£Ì¬»¯Ñ¹²â£¬»áÖÜÆÚ¶¨Ê±£¬ÒÔÎÞÈËÖµÊØµÄ·½Ê½£¬×Ô¶¯Ö´ÐÐѹ²âÈÎÎñ£¬²¢ÍÆËÍѹ²â½á¹û¡£ÔÚѹ²âÖ´Ðйý³ÌÖУ¬»á¸ù¾Ýµ÷ÓÃÁ´×Ô¶¯Íê³Éѹ²â¿ª¹Ø¿ªÆô£¬·¢Æðѹ²âÁ÷Á¿¡£ÊµÊ±¼à¿Ø·þÎñÐÔÄÜÖ¸±ê£¬²¢¸ù¾Ý
Metric ¼°¸æ¾¯¼à¿Ø£¬×Ô¶¯Íê³Éѹ²âÈÛ¶Ï£¬ÒÔ±£Ö¤Ñ¹²â°²È«¡£
ĿǰÒѾÓжà¸öÒµÎñ·½½ÓÈ볣̬»¯Ñ¹²â£¬ÒԴ˱£Ö¤ÏßÉÏ·þÎñµÄÎȶ¨ÐÔ¡£
3.5 DevOps Á÷Ë®ÏßÖеÄѹ²â
·þÎñÔÚÉÏÏßʱ£¬¶¼»á¾¹ýÔ¤·¢²¼¡¢ÏßÉÏСÁ÷Á¿»Ò¶È¡¢ÏßÉÏÈ«Á¿·¢²¼¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýÏßÉϲâÊÔ Case
ÒÔ¼°»Ò¶È·¢²¼£¬À´À¹½Ø·þÎñÏßÉϹ¦ÄÜȱÏÝ¡£µ«ÊǶÔÓÚÐÔÄÜȱÏݵÄÀ¹½Ø£¬È´²»¹»ÓÐЧ¡£
´ÓÏßÉϹÊÕϸú×ÙϵͳÀï¾Í¿ÉÒÔ·¢ÏÖ£¬ÓÉÓÚÉÏÏßǰûÓÐ×öºÃÐÔÄÜѹ²â£¬ºÜ¶àÐÔÄÜȱÏݶ¼ÌÓÒݵ½ÁËÏßÉÏ¡£
ΪÁËÀ¹½Ø¸÷ÖÖÐÔÄÜȱÏÝ£¬Rhino ƽ̨Íê³ÉÁË DevOps ƽ̨µÄ´òͨ¡£½«Ñ¹²â·þÎñÔÚ DevOps
ƽ̨ÉÏ×¢²á³ÉÒ»¸öÔ×Ó·þÎñ £¬Ñз¢ÈËÔ±¿ÉÒÔ½«Ñ¹²â½Úµã±àÅÅÔÚÈÎÒâÁ÷Ë®ÏßµÄÈÎÒâλÖã¬ÊµÏÖÉÏÏßǰµÄÀýÐÐѹ²â¡£DevOps
Á÷Ë®ÏßÖеÄѹ²â£¬²»½ö¿ÉÒÔ°ïÖú RD ·¢ÏÖ´úÂëÖеÄÐÔÄÜÎÊÌ⣬»¹ÄÜÓëÐÔÄÜ»ùÏß½øÐÐ Diff£¬À´·¢ÏÖ´úÂëÐÔÄܱ仵µÄζµÀ¡£
4. ×ܽáÓëÕ¹Íû
4.1 ×ܽá
Rhino ѹ²âƽ̨´ÓÁ¢Ïîµ½ÏÖÔÚ£¬²»µ½Á½ÄêµÄʱ¼äÄÚ£¬Æä·¢Õ¹ÒѾ³õ¾ß¹æÄ££¬Èçͼ£¨Ã¿ÔÂѹ²âÖ´ÐÐͳ¼Æ£©¡£Õâ¸öÆÚ¼ä£¬·Ç³£·Ç³£¸Ðл¹«Ë¾ÄÚËùÓкÏ×÷ÍŶӣ¬ÓÈÆäÊǼܹ¹ÍŶӣ¬ÖÐ̨ÍŶӶÔѹ²âƽ̨µÄÖ§³Å£¬Ã»ÓÐËûÃǵÄÖ§³Å£¬È«Á´Â·Ñ¹²â½¨ÉèÊÇÄÑÒÔÍê³ÉµÄ¡£

4.2 δÀ´·¢Õ¹
4.2.1 ÒµÎñÉî²ã´Î¶¨ÖÆ»¯
ͨÓÃѹ²âƽ̨ÒѾ³õ²½´î½¨Íê³É£¬»ù±¾ÉÏÄÜÂú×ãÒµÎñÏßÈÕ³£Ñ¹²âÐèÇó¡£µ«ÔÚÈÕ³£Ñ¹²âÖ§³Å¹ý³ÌÖУ¬·¢ÏÖ²»Í¬ÒµÎñÏßÔÚѹ²âʱ£¬µ«ÊÇÈÔÈ»ÓдóÁ¿µÄǰÖúͺó¼Ì¹¤×÷ÐèÒªÈ˹¤À´Íê³É£º
ÈçºÎ¸ü½øÒ»²½½µµÍÒµÎñ·½Ñ¹²â¸ÄÔìµÄ³É±¾£¿
ÈçºÎ¼õÉÙѹ²â»·¾³Êý¾ÝÔ¤Öóɱ¾£¿
ÈçºÎ¿ìËÙÍê³Éѹ²âÊý¾ÝÇåÀí£¿
ÈçºÎ¿ìËÙ¶¨Î»³öÐÔÄÜÎÊÌâµÈµÈ¡£
Rhino ѹ²âƽ̨ºóÐø½«¸ü½øÒ»²½ÉîÈëÒµÎñ£¬Óë¸÷´óÒµÎñ·½¿ªÕ¹¸üÉîÈëµÄºÏ×÷£¬Ìṩ¸üÉî¶ÈµÄÒµÎñ¶¨ÖÆ£¬ÎªÑз¢ÌáЧ£¬ÖúÁ¦ÒµÎñÏß·¢Õ¹¡£
4.2.2 ѹ²âÓëÈÝÁ¿¹æ»®
ÒµÎñĿǰ×ÊÔ´ÊÇ·ñ³ä×㣬Æä¾ßÌåÈÝÁ¿ÊǶàÉÙ£»°´ÕÕĿǰҵÎñÔö³¤£¬Æä»úÆ÷×ÊÔ´»¹ÄÜÖ§³Å¶à¾Ã£¿
Ŀǰ·þÎñ×ÊÔ´ÀûÓÃÈçºÎ£¬ÊÇ·ñ¿ÉÒÔÓÅ»¯£¬ÈçºÎ¸ü½øÒ»²½ÌáÉý×ÊÔ´ÀûÓÃÂÊ£¬½µµÍ»úÆ÷×ÊÔ´³É±¾£¿
ij´óÐͻ£¬ÐèÒªÉêÇë¶àÉÙ×ÊÔ´£¿ÊÇ·ñ²»ÐèҪѹ²â£¬»òÕß×Ô¶¯»¯ÀûÓÃÏßÉÏÁ÷Á¿Êý¾Ý£¬»òÕßÀûÓÃÈÕ³£Ñ¹²âÊý¾Ý£¬¾Í¿ÉÒÔ¸ø³öÉÏÊöÎÊÌâµÄ½áÂÛ£¿
4.2.3 ѹ²âÓë SRE
ÈçºÎ±£Ö¤·þÎñÎȶ¨ÐÔ£¬ÈçºÎ¼à¿Ø·þÎñÐÔÄÜÁÓ»¯²¢¼°Ê±Ô¤¾¯£¬ÏÞÁ÷¡¢³¬Ê±¡¢ÖØÊÔÒÔ¼°È۶ϵȷþÎñÖÎÀí´ëÊ©ÅäÖÃÊÇ·ñºÏÀí£¿ÒÔ¼°ÈçºÎÅäºÏ»ìãç²âÊÔ½øÐÐÈÝÔÖÑÝÁ·£¬±£Ö¤·þÎñÎȶ¨ÐԵȵȣ¬ÕâЩ
Rhino ƽ̨¶¼»á×ö¸ü½øÒ»²½Ì½Ë÷¡£ |