ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕系列一区,精品福利一区,国产一区导航http://www.aygfsteel.com/xiaomage234/category/54660.html生命本就是一‹Æ¡å‡„¾ŸŽçš„æ¼‚流åQŒè®°å¿†ä¸­æ”¾ä¸ä¸‹çš„åQŒæ°¸˜qœæ˜¯å­©ææ—¶ä»£çš„那一份浪漫与¾U¯çœŸåQ?/description>zh-cnMon, 15 May 2017 20:16:46 GMTMon, 15 May 2017 20:16:46 GMT60IM¾pȝ»Ÿæž¶æž„设计之浅见【è{ã€?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2017/05/15/432528.html</link><dc:creator>ž®é©¬æ­?/dc:creator><author>ž®é©¬æ­?/author><pubDate>Mon, 15 May 2017 06:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2017/05/15/432528.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/432528.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2017/05/15/432528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/432528.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/432528.html</trackback:ping><description><![CDATA[from:http://mobile.51cto.com/hot-439693.htm<br /><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">背景åQšé™¤åŽÕd¤§åé¼Žé¼Žçš„QQ˜q™æ¬¾åÏx—¶èŠå¤©å·¥å…·åQŒè¿˜æœ‰è®¸å¤šç»†åˆ†è¡Œä¸šçš„IMåQŒæ¯”如淘宝阿里旺旺、网易æˆö泡、YY语音......ã€‚æ°å·§å…¬åæ€ñ”品也要开发一‹Æ‘ÖŸºäºŽæˆ‘ 们自å·Þp¡Œä¸šçš„¾c»IM¾pȝ»ŸåQŒå¾ˆæœ‰å¹¸æˆ‘担当了˜q™ä¸ªäº§å“çš„æž¶æž„师åQŒæ ¸å¿ƒä»£ç ç¼–写、实现者。下面把我近òq´æ¥ä»ŽæŠ€æœ¯ä¸Šæˆ‘对IM¾pȝ»ŸåQˆå³æ—¶æ¶ˆæ¯çš„传输åQŒä¸åŒ…括语音åQŒè§†é¢‘,文äšg的传输)的理解和设计分äín出来åQŒæµ…薄之见,望大家别见笑åQŒæ¬¢˜qŽç»™å‡ºæ‰¹è¯„意见ã€?/p><h3>一.¾|‘络传输协议的选择</h3><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">目前我知晓的所有IM¾pȝ»Ÿä¼ è¾“åÏx—¶æ¶ˆæ¯æ— å¤–乎ä‹É用UDP、TCP、基于TCPçš„http˜q™å‡ ¿Uåè®®ä¸­çš„一¿Uæˆ–几种。比如QQ主要采用UDP协议åQŒMSN主要采用TCP协议åQŒè€Œä¸”他们也都支持HTTP协议的代理模式。更多资料,请参加这½‹‡æ–‡ç«?a target="_blank" style="color: #004276;">《一些常用èÊYä»¶çš„¾|‘络端口协议分类介绍ã€?/a>ã€?/p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">我们该如何选择呢?</p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">UDPåè®®å®žæ—¶æ€§æ›´å¥½ï¼Œä½†æ˜¯å¦‚ä½•å¤„ç†å®‰å…¨å¯é çš„ä¼ è¾“åÆˆä¸”å¤„ç†ä¸åŒå®¢æˆïL«¯ä¹‹é—´çš„æ¶ˆæ¯äº¤äº’是个难题,实现èµäh¥˜q‡äºŽå¤æ‚åQ?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">HTTP协议属于扩展支持åQŒæˆ‘们在产品的初始阶ŒDµå¯ä»¥ä¸ç”¨æ”¯æŒï¼›</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">那就非TCP协议莫属了,要考虑的同样也有很多,特别是如果有‹¹·é‡ç”¨æˆ·çš„éœ€æ±‚ã€‚å¦‚ä½•ä¿è¯å•æœºæœåŠ¡å™¨é«˜åÆˆå‘é‡åQŒå¦‚何做到灵‹z»ï¼Œæ‰©å±•的架构ã€?/p></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">Tips: <a target="_blank" style="color: #004276;">QQ ä¸ÞZ»€ä¹ˆé‡‡ç”?UDP 协议åQŒè€Œä¸é‡‡ç”¨ TCP 协议实现åQ?/a></p><h3>äº?应该选择什么格式的数据协议</h3><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">二进制格式?文本格式åQŸè¿™ä¸ªè¯é¢˜è{到我的这½‹‡æ–‡ç«?a target="_blank" style="color: #004276;">《网¾lœä¼ è¾“数据格式的选择ã€?/a>åQŒä»Žæˆ‘们当前的需求和产品周期上我觉得选择JSON形式的数据协议是最好的ã€?/p><h3>ä¸?架构设计</h3><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">首先我们来提ç‚ég¸€ä¸‹ä¸€ä¸ªIM¾pȝ»Ÿçš„主要需求,包括账号åQŒå…³¾p»é“¾åQŒåœ¨¾U¿çŠ¶æ€æ˜¾½Cºï¼Œæ¶ˆæ¯äº¤äº’......ã€?/p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">架构考量åQ?/p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">ç”׃ºŽé‡‡ç”¨å¯é ä¼ è¾“协议TCPåQŒè€ƒè™‘到负载问题(短连接实现è̎受÷€å…³¾p»é“¾ç›¸å…³ä¸šåŠ¡åQŒé•¿˜qžæŽ¥å®žçŽ°ä¸Šçº¿ã€ä¿¡æ¯æŽ¨é€ï¼‰åQ?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">后台架构的灵‹zÀL€§ã€å¯æ‰©å±•性,支持分布式部¾|?#8212;—把网¾lœå±‚、业务逻辑层、数据层分离åQŒç½‘¾lœå±‚和业务层支持负蝲均衡½{–略、数据层支持分布式存储;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">客户端SDK的易用性:把网¾lœå±‚、数据层分离、业务逻辑层分¼›»ï¼›</p></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">后台架构½Ž€åŒ–图</p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;"><a target="_blank" style="color: #004276;"><img width="480" height="318" border="0" alt="" src="http://s9.51cto.com/wyfs02/M02/28/68/wKioL1N5aXTzJmkqAADPN-OmLtU615.png" style="border: 0px;" /></a></p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">æž¶æž„½Cºæ„å›?/p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;"><a target="_blank" style="color: #004276;"><img width="480" height="340" border="0" alt="" src="http://s1.51cto.com/wyfs02/M01/28/68/wKiom1N5acHQgPTgAAIdkDkPfvs757.jpg" style="border: 0px;" /></a></p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">æž¶æž„¾l†åŒ–å›?/p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;"><a target="_blank" style="color: #004276;"><img width="480" height="340" border="0" alt="" src="http://s9.51cto.com/wyfs02/M00/28/68/wKioL1N5abSTiTpcAAO7q3GDlNM469.jpg" style="border: 0px;" /></a></p><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">说明</p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">ä»?lt; æž¶æž„¾l†åŒ–å›?gt;中可以看出对于上¾U¿æœåŠ¡ç”±äºŽå¾ç«‹çš„æ˜¯TCP长连接,对于单台服务器往往ç”׃ºŽ¼‹¬äšg资源、系¾lŸèµ„源、网¾lœèµ„源的限制无法做到‹¹·é‡ç”¨æˆ·çš„同æ—?在线åQŒæ‰€ä»¥è®¾è®¡äØ“æ ÒŽ®æœåŠ¡å™¨è´Ÿè½½æ”¯æŒå¤šæœåŠ¡å™¨ä¸Š¾U¿ï¼ŒåŒæ—¶ç”׃ºŽå¤šæœåŠ¡å™¨ä¸Šçº¿é€ æˆäº†å¯¹æ•´ä¸ª¾pȝ»Ÿäº¤äº’åQˆä¸åŒçš„客户端的交互åQŒåä½œéƒ¨é—¨åº”用服务和客户的交互)的分 å‰ÔŒ¼Œå¼•入消息转发服务器作为粘合点。另外对于多服务器上¾U‰K€ æˆçš„统一账户信息åQˆåœ¨¾U¿çŠ¶æ€ï¼Œæ¶ˆæ¯åQ‰æ•°æ®çš„分割åQŒå¼•入统一的数据层åQˆå†…存存å‚?层:session、状态信息存储、消息队列存储;数据库:账号信息存储åQ‰åšåˆîC¸šåŠ¡å’Œæ•°æ®çš„åˆ†¼›»ï¼Œä¹Ÿå°±åšåˆ°äº†æ”¯æŒåˆ†å¸ƒå¼éƒ¨çÖv。参见我的这½‹‡æ–‡ç«?a target="_blank" style="color: #004276;">《构建高性能服务的考量ã€?/a></p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">对于部分业务服务åQšåšåˆ°ç½‘¾lœå±‚、业务层、数据层的完全分¼›…R€‚首先对于TCP短连接来说不会如长连接那般消耗资源,即ä‹É后期遇到‹¹·é‡çš„åÆˆå‘è®¿é—®è¯·æ±‚ä¾ç„¶å¯ä»¥ä»Žå®¹çš„é€šè¿‡è´Ÿè²å‡è¡¡½{–略和数据分布式部çÖv½{–ç•¥˜q›è¡Œè§£å†³ã€‚参见我的这½‹‡æ–‡ç«?a target="_blank" style="color: #004276;">《服务端架构中的“¾|‘关服务å™?#8221;ã€?/a></p></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">服务端åã^台及技术选型</p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾pȝ»Ÿå¼€å‘åã^収ͼš CentOS——Linux发行版的一¿Uï¼Œ½E›_®šå¯é ã€å¯å®šåˆ¶ä¼˜åŒ–、支持丰富;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾|‘络支撑层: libevent——减小开发成本,增强½E›_®šæ€§ï¼›</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾~“存存储层: Redis——支持丰富的存储结构,支持分布式存储;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">数据库: MySQL——最适合互联¾|‘的数据库,免授权、高效稳定、可控性高åQ?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">开发语­a€åQ?C/C++åQ?/p></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">部分热点问题考量</p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾pȝ»Ÿæ€§èƒ½è€ƒé‡åQ?/p><ul style="margin: 0px 0px 0px 35px; padding: 0px; list-style: none outside none; word-wrap: break-word; word-break: normal;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾~–码角度åQšé‡‡ç”¨é«˜æ•ˆçš„¾|‘络模型åQŒçº¿½E‹æ¨¡åž‹ï¼ŒI/O处理模型åQŒåˆç†çš„æ•°æ®åº“设计和操作语句的优化;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">垂直扩展åQšé€šè¿‡æé«˜å•服务器的硬件资源或者网¾lœèµ„源来提高性能åQ?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">æ°´åã^扩展åQšé€šè¿‡åˆç†çš„æž¶æž„设计和˜qç»´æ–šw¢çš„负载均衡策略将负蝲分担åQŒæœ‰æ•ˆæé«˜æ€§èƒ½åQ›åŽæœŸç”šè‡›_¯ä»¥è€ƒè™‘加入数据¾~“存层,½Hç ´IO瓉™¢ˆåQ?/p></li></ul></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">¾pȝ»Ÿçš„高可用性:åQˆé˜²æ­¢å•ç‚ÒŽ•…障)</p><ul style="margin: 0px 0px 0px 35px; padding: 0px; list-style: none outside none; word-wrap: break-word; word-break: normal;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">在架构设计时做到业务处理和数据的分离åQŒä»Žè€Œä¾èµ–分布式的部¾|²ä‹É得在单点故障时能保证¾pȝ»Ÿå¯ç”¨ã€?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">对于关键独立节点可以采用双机热备技术进行切换ã€?/p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">数据库数据的安全性可以通过¼‚ç›˜é˜µåˆ—的冗余配¾|®å’Œä¸Õd¤‡æ•°æ®åº“来解决ã€?/p></li></ul></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">主要学习资料åQ?误‚‡ªè¡Œgoogleã€?/p><ul style="margin: 0px 0px 0px 35px; padding: 0px; color: #333333; list-style: none outside none; word-wrap: break-word; word-break: normal; font-family: 宋体; background-color: #f8f8f8;"><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">ã€?.4亿在¾U¿èƒŒåŽçš„æ•…事》;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">《BasicDB的架构演变》;</p></li><li style="margin: 0px; padding: 0px 0px 0px 10px; list-style: none outside none; word-wrap: break-word; word-break: normal; background: url("http://images.51cto.com/images/art1105/images/list.jpg") 0px 50% no-repeat;"><p style="margin: 10px 0px; padding: 0px; background-color: transparent; text-indent: 28px;">《微信之道-至简》;</p></li></ul><p style="margin: 10px 0px; padding: 0px; color: #333333; background-color: #f8f8f8; text-indent: 28px; font-family: 宋体;">æœ¬æ–‡å‡ø™‡ª51博客 “<a style="color: #004276;">永远的朋å?/a>” åQŒè{载请务必保留此出å¤?a style="color: #004276;">http://yaocoder.blog.51cto.com/2668309/1412029</a></p><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/432528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">ž®é©¬æ­?/a> 2017-05-15 14:22 <a href="http://www.aygfsteel.com/xiaomage234/archive/2017/05/15/432528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个完整的微服务系¾lŸï¼Œåº”该包含哪些功能åQ?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2016/08/13/431556.html</link><dc:creator>ž®é©¬æ­?/dc:creator><author>ž®é©¬æ­?/author><pubDate>Sat, 13 Aug 2016 02:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2016/08/13/431556.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/431556.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2016/08/13/431556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/431556.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/431556.html</trackback:ping><description><![CDATA[from:http://www.infoq.com/cn/articles/what-complete-micro-service-system-should-include?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage<br /><br /><br /><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q‘几òqß_¼Œå¾®æœåŠ¡æž¶æž„è¿…é€Ÿåœ¨æ•´ä¸ªæŠ€æœ¯ç¤¾åŒºçªœ¾U¢ï¼Œå®ƒè¢«è®¤äؓ是IT软äšg架构的未来方向,大神Martin Fowler也给微服务极高的评ä­h。那ä¸ÞZ»€ä¹ˆæˆ‘们需要微服务åQŒå¾®æœåŠ¡çš„çœŸæ­£ä¼˜åŠ¿åˆ°åº•æ˜¯ä»€ä¹ˆï¼Œä¸€ä¸ªå®Œæ•´çš„å¾®æœåŠ¡ç³»¾lŸï¼Œåº”该包含哪些功能åQŒæœ¬æ–‡ä½œè€…刘彦夫在èÊY件设计和开发领域有10多年工作¾léªŒåQŒä»–ž®†ä¼šä»Žä»–的角度给出答案ã€?/p><h2>对微服务的基本理è§?/h2><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">™å‘֐æ€ä¹‰åQŒå¾®æœåŠ¡è¦ä»Žä¸¤ä¸ªæ–šw¢æ¥ç†è§£ï¼Œä¸€ä¸ªæ˜¯“å¾?#8221;åQŒä¸€ä¸ªæ˜¯“服务”。体型小åˆîC¸€å®šç¨‹åº¦æ‰èƒ½å«“å¾?#8221;åQŒè¿™ä¸ªç¨‹åº¦æ˜¯ä»€ä¹ˆå‘¢åQŸä¸€ä¸ªèíné«?¾c?åQŒä½“é‡?0斤的MMåQŒæˆ‘ä»¬è¯´å¥¹è‹—æ¡ã€‚å¾®æœåŠ¡ä¹Ÿä¸€æ øP¼Œæ ÒŽ®äºšé©¬é€ŠCEO Bezos¾l™å‡ºçš„æœ‰­‘£å®šä¹‰ï¼Œå•个微服务的设计、开发、测试和˜qç»´çš„æ‰€æœ‰äh加在一起吃饭,只需要两个批萨就够了åQŒè¿™æ˜¯å°±æ˜¯è‘—名的two pizza team ruleã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;"><span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">具备什么样的能力才能算æ˜?#8220;服务”åQ?/span>˜q™ä¸ªè¯é¢˜å¾ˆå¤§åQŒæˆ‘˜q™é‡ŒæŒ‰ç…§è‡ªå·±çš„片面理解æ€È»“一下,所谓服务就一定会区别于系¾lŸçš„功能åQŒæœåŠ¡æ˜¯ä¸€ä¸ªæˆ–è€…ä¸€¾l„相对的较小且独立的功能单元åQŒæ˜¯ç”¨æˆ·å¯ä»¥æ„ŸçŸ¥çš„功能最ž®é›†åQŒæ¯”如:购物车,订单åQŒä¿¡ç”¨å¡¾l“ç®—½{‰éƒ½å¯ä»¥ä½œäؓ单个服务独立提供ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q™ä¸ªç†è§£æ˜„¡„¶ä¸å¤Ÿæ·±åˆ»åQŒäØ“äº†è¿›ä¸€æ­¥ç†è§£äØ“ä»€ä¹ˆå¾®æœåŠ¡åœ¨è¿‘ä¸¤å¹´ä¸šç•Œ˜q…速窜¾U¢ï¼Œç†è§£ä¸ÞZ»€ä¹ˆå¾®æœåŠ¡ä¼šè¢«è®¤äØ“æ˜¯IT软äšg架构的未来方向,<span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">ž®Þp¦ç†è§£ä¸ÞZ»€ä¹ˆæˆ‘们需要微服务åQŸå®ƒèƒ½ç»™ä¼ä¸šå¸¦æ¥ä»€ä¹ˆä­h倹{€?/span>传统企业的IT软äšg大多都是各种独立¾pȝ»Ÿçš„堆砌,˜q™äº›¾pȝ»Ÿçš„问题æ€È»“来说ž®±æ˜¯æ‰©å±•性差åQŒå¯é æ€§ä¸é«˜ï¼Œ¾l´æŠ¤æˆæœ¬é«˜ã€‚后来有了一个叫SOAçš„èÊY件架构专门针对这些问题给å‡ÞZº†ä¸€å¥—è§£å†Ïx–¹æ¡ˆï¼Œå¾ˆå¤šä¼ä¸šä¹Ÿå› æ­¤å°†è‡ªèínIT¾pȝ»Ÿ˜qç§»åˆ°SOA架构上ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">但是åQŒç”±äºŽSOA早期均ä‹É用了æ€Èº¿æ¨¡å¼åQŒè¿™¿Uæ€Èº¿æ¨¡å¼æ˜¯ä¸ŽæŸç§æŠ€æœ¯æ ˆå¼ºç»‘定的åQŒæ¯”如:J2EEã€‚è¿™å¯ÆD‡´å¾ˆå¤šä¼ä¸šçš„遗留系¾lŸå¾ˆéš‘Ö¯¹æŽ¥ï¼Œåˆ‡æ¢æ—‰™—´å¤ªé•¿åQŒæˆæœ¬å¤ªé«˜ï¼Œæ–°ç³»¾lŸç¨³å®šæ€§çš„æ”¶æ•›ä¹Ÿéœ€è¦ä¸€äº›æ—¶é—´ã€‚最¾lˆSOAå¼€èµäh¥å¾ˆç¾ŽåQŒä½†å´æˆä¸ÞZº†ä¼ä¸š¾U§å¥¢ä¾ˆå“åQŒä¸­ž®å…¬å”Rƒ½æœ›è€Œç”Ÿç•ã€?/p><h2>依然SOA</h2><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">微服务,从本质意义上看,˜q˜æ˜¯SOA架构。但内涵有所不同åQŒå¾®æœåŠ¡òq¶ä¸¾l‘定某种ç‰ÒŽ®Šçš„æŠ€æœ¯ï¼Œåœ¨ä¸€ä¸ªå¾®æœåŠ¡çš„ç³»¾lŸä¸­åQŒå¯ä»¥æœ‰Java¾~–写的服务,也可以有Python¾~–写的服务,他们是靠Restful架构风格¾lŸä¸€æˆä¸€ä¸ªç³»¾lŸçš„ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">最¾_—浅的理解就是将微服务之间的交互看作是各¿Uå­—½W¦ä¸²çš„传递,各种语言都可以很好的处理字符ä¸ÔŒ¼Œæ‰€ä»¥å¾®æœåŠ¡æœ¬èín与具体技术实现无养I¼Œæ‰©å±•性强。另一个不同是微服务架构本íw«å¾ˆè½»ï¼Œåº•层也有¾cÖM¼¼äºŽSOAçš„æ€Èº¿åQŒä¸˜q‡éžå¸¸è½»è–„,现在看到的就两种方式åQšMQå’ŒHTTPåQŒè€ŒHTTP都不能完全等同于æ€Èº¿åQŒè€Œä»…仅是个信息通道ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">所以,åŸÞZºŽ˜q™ç§½Ž€å•的的协议规范,无论是兼容老旧¾pȝ»ŸåQŒè¿˜æ˜¯ä¸Š¾U¿æ–°ä¸šåŠ¡åQŒéƒ½å¯ä»¥éšç€æ—¶ä»£çš„æ­¥ä¼ï¼Œæ»šåŠ¨å‡çñ”。比如:你去òq´è¿˜åœ¨ä‹Éç”?NET技术,今年ž®±å¯ä»¥åã^滑的˜q‡åº¦åˆ°Go了,而且¾pȝ»Ÿå·²æœ‰æœåŠ¡ä¸ç”¨æ”¹åŠ¨ã€‚æ‰€ä»¥å¾®æœåŠ¡æž¶æž„åQŒæ—¢ä¿æŠ¤ç”¨æˆ·å·²æœ‰æŠ•资åQŒåˆå¾ˆå®¹æ˜“向新技术演˜q›ã€?/p><h2>微服务水下的冰山</h2><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">人月不是银弹åQŒå¾®æœåŠ¡æ›´ä¸æ˜¯é“¶å¼¹ï¼Œå¥½åƒè½¯äšg微服务化了,软äšg¾pȝ»Ÿž®Þpƒ½å¤Ÿåº”对各¿Ué—®é¢˜äº†ã€‚其实微服务的水面下藏着巨大的冰山。下面是微服务提供的能力åQŒä»¥åŠèƒŒåŽéœ€è¦ä»˜å‡ºçš„代ä­hã€?/p><ol style="margin: 10px 0px 10px 10px; padding: 0px 0px 0px 20px; border: 0px; width: 549px; clear: left; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; line-height: 25.2px; background-color: #ffffff;"><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">单个微服务代码量ž®ï¼Œæ˜“修改和¾l´æŠ¤ã€‚但是,¾pȝ»Ÿå¤æ‚度的总量是不变的åQŒæ¯ä¸ªæœåŠ¡ä»£ç å°‘äº†ï¼Œä½†æœåŠ¡çš„ä¸ªæ•°è‚¯å®šž®±å¤šäº†ã€?span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">ž®Þp·Ÿæ‹¼å›¾æ¸¸æˆä¸€æ øP¼Œåˆ‡çš„­‘Šç¢ŽåQŒè¶Šé𾿋¼å‡ºæ•´òq…图ã€?/span>一个系¾lŸè¢«æ‹†åˆ†æˆé›¶¼„Žçš„微服务,最后要集成ä¸ÞZ¸€ä¸ªå®Œæ•´çš„¾pȝ»ŸåQŒå…¶å¤æ‚度肯定比大块的功能集成要高很多ã€?/p><div style="margin: 0px; border: 0px; height: 0px; clear: both; font-size: 0px;"></div></li><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">单个微服务数据独立,可独立部¾|²å’Œ˜qè¡Œã€‚虽然微服务本èín是可以独立部¾|²å’Œ˜qè¡Œçš„,但仍焉™¿å…ä¸äº†ä¸šåŠ¡ä¸Šçš„ä½ æ¥æˆ‘å¾€åQŒè¿™ž®±æ¶‰åŠåˆ°è¦å¯¹å¤–通信åQŒå½“微服务的数量辑ֈ°ä¸€å®šé‡¾U§çš„æ—¶å€™ï¼Œå¦‚ä½•æä¾›ä¸€ä¸ªé«˜æ•ˆçš„é›†ç¾¤é€šä¿¡æœºåˆ¶æˆäØ“ä¸€ä¸ªé—®é¢˜ã€?/p></li><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">单个微服务拥有自å·Þqš„˜q›ç¨‹åQŒè¿›½E‹æœ¬íw«å°±å¯ä»¥åŠ¨æ€çš„å¯åœåQŒäؓ无缝升çñ”的打好了基础åQŒä½†è°æ¥å¯åŠ¨å’Œåœæ­¢è¿›½E‹ï¼Œä»€ä¹ˆæ—¶æœºï¼Œé€‰æ‹©åœ¨å“ªå°è®¾å¤‡ä¸Šåšè¿™ä»¶äº‹æƒ…才是无¾~å‡¾U§çš„å…³é”®ã€‚è¿™ä¸ªèƒ½åŠ›åÆˆä¸æ˜¯å¾®æœåŠ¡æœ¬íw«æä¾›çš„åQŒè€Œæ˜¯éœ€è¦èƒŒåŽå¼ºå¤§çš„版本½Ž¡ç†å’Œéƒ¨¾|²èƒ½åŠ›ã€?/p></li><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">多个相同的微服务可以做负载均衡,提高性能和可靠性。正是因为相同微服务可以有多个不同实例,让服务按需动态äŽ×¾~©æˆä¸ºå¯èƒ½ï¼Œåœ¨é«˜å³°æœŸå¯ä»¥å¯åŠ¨æ›´å¤šçš„ç›¸åŒçš„å¾®æœåŠ¡å®žä¾‹äØ“æ›´å¤šç”¨æˆ·æœåŠ¡åQŒä»¥æ­¤æé«˜å“åº”速度。同时这¿Uæœºåˆ¶ä¹Ÿæä¾›äº†é«˜å¯é æ€§ï¼Œåœ¨æŸä¸ªå¾®æœåŠ¡æ•…éšœåŽï¼Œå…¶ä»–ç›¸åŒçš„å¾®æœåŠ¡å¯ä»¥æŽ¥æ›¿å…¶å·¥ä½œï¼Œå¯¹å¤–è¡¨çŽ°ä¸ºæŸä¸ªè®¾å¤‡æ•…éšœåŽä¸šåŠ¡ä¸ä¸­æ–­ã€‚åŒæ ïLš„道理åQŒå¾®æœåŠ¡æœ¬èín是不会去兛_¿ƒ¾pȝ»Ÿè´Ÿè²çš„,那么什么时候应该启动更多的微服务,多个微服务的‹¹é‡åº”该如何调度和分发,˜q™èƒŒåŽä¹Ÿæœ‰ä¸€å¥—复杂的负蝲监控和均衡的¾pȝ»Ÿåœ¨è“v作用ã€?/p><div class="wmqeeuq" id="lowerFullwidthVCR" style="margin: 0px; border: 0px;"></div></li><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">微服务可以独立部¾|²å’Œå¯¹å¤–提供服务åQŒå¾®æœåŠ¡çš„ä¸šåŠ¡ä¸Š¾U¿å’Œä¸‹çº¿æ˜¯åŠ¨æ€çš„åQŒå½“一个新的微服务上线æ—Óž¼Œç”¨æˆ·æ˜¯å¦‚何访问到˜q™ç§æ–°çš„æœåŠ¡åQ?span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">˜q™å°±éœ€è¦æœ‰ä¸€ä¸ªç»Ÿä¸€çš„入口,新的服务可以动态的注册到这个入口上åQŒç”¨æˆäh¯‹Æ¡è®¿é—®æ—¶å¯ä»¥ä»Žè¿™ä¸ªå…¥å£æ‹¿åˆ°ç³»¾lŸæ‰€æœ‰æœåŠ¡çš„è®‰K—®åœ°å€åQŒç±»ä¼égºŽåˆ°é¤åŽ…åƒé¥­ï¼Œæ–°èœè¦å†™åˆ?#8220;菜单”中,以供用户选择</span>。这个统一的系¾lŸå…¥å£åƈ不是微服务本íw«çš„一部分åQŒæ‰€ä»¥è¿™¿Uèƒ½åŠ›éœ€è¦ç³»¾lŸå•独提供ã€?/p></li><li style="margin: 4px 0px; padding: 0px 0px 0px 10px; border: none; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 1.8; clear: none; width: 539px; float: none !important;">˜q˜æœ‰ä¸€äº›ä¼ä¸šçñ”å…Ïx³¨çš„ç³»¾lŸé—®é¢˜ï¼Œæ¯”如åQŒå®‰å…¨ç­–略如何集中管理?¾pȝ»Ÿæ•…障如何快速审计和跟踪到具体服务?整个¾pȝ»ŸçŠ¶æ€å¦‚ä½•ç›‘æŽ§ï¼ŸæœåŠ¡ä¹‹é—´çš„ä¾èµ–å…³¾pÕd¦‚何管理?½{‰ç­‰˜q™äº›é—®é¢˜éƒ½ä¸æ˜¯å•个微服务考虑的范ç•ß_¼Œè€Œéœ€è¦æœ‰ä¸€ä¸ªç³»¾lŸæ€§çš„考虑和设计,让每个微服务都能够按照系¾lŸæ€§çš„要求和约束提供对应的安全性,可靠性,可维护性的能力ã€?/p></li></ol><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">¾lég¸Šæ‰€˜qŽÍ¼Œå¾®æœåŠ¡å…³é”®å…¶å®žä¸ä»…ä»…æ˜¯å¾®æœåŠ¡æœ¬èínåQŒè€Œæ˜¯¾pȝ»Ÿè¦æä¾›ä¸€å¥—基¼‹€çš„æž¶æž„,˜q™ç§æž¶æž„使得微服务可以独立的部çÖv、运行、升¾U§ï¼Œä¸ä»…如此åQŒè¿™ä¸ªç³»¾lŸæž¶æž„还让微服务与微服务之间在结构上“松耦合”åQŒè€Œåœ¨åŠŸèƒ½ä¸Šåˆ™è¡¨çŽ°ä¸ÞZ¸€ä¸ªç»Ÿä¸€çš„æ•´ä½“。这¿Uæ‰€è°“çš„“¾lŸä¸€çš„æ•´ä½?#8221;表现出来的是¾lŸä¸€é£Žæ ¼çš„界面,¾lŸä¸€çš„æƒé™ç®¡ç†ï¼Œ¾lŸä¸€çš„安全策略,¾lŸä¸€çš„上¾U¿è¿‡½E‹ï¼Œ¾lŸä¸€çš„æ—¥å¿—和审计æ–ÒŽ³•åQŒç»Ÿä¸€çš„调度方式,¾lŸä¸€çš„访问入口等½{‰ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q™äº›¾pȝ»Ÿæ€§çš„功能也需要有一些服务来提供åQŒè¿™äº›æœåŠ¡ä¸ä¼šç›´æŽ¥å‘ˆçŽ°ç»™æœ€¾lˆç”¨æˆøP¼Œä¹Ÿå°±æ˜¯å¾®æœåŠ¡¾pȝ»Ÿå†°å±±ä¸‹é¢çš„部分,我们可以½Ž€¿U°å®ƒä¸ºå¾®æœåŠ¡¾pȝ»Ÿçš?#8220;底åñ””。所有的微服务都像一个APPåQŒæ’在这个底座的上面åQŒäín受这个底座提供的¾pȝ»Ÿèƒ½åŠ›æ¯”å¦‚åQšå…ƒæ•°æ®å­˜æ”¾ã€ç°åº¦å‘布、蓝¾l‰Kƒ¨¾|²ç­‰½{‰ã€?/p><h2>微服务系¾lŸåº•åº?/h2><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">一个完整的微服务系¾lŸï¼Œå®ƒçš„底åñ”最ž®‘要包含以下功能åQ?/p><ul style="margin: 0px 0px 15px 10px; padding: 0px; border: 0px; clear: left; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; line-height: 25.2px; background-color: #ffffff;"><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">日志和审计,主要是日志的汇总,分类和查è¯?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">监控和告警,主要是监控每个服务的状态,必要时äñ”生告è­?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">消息æ€Èº¿åQŒè½»é‡çñ”çš„MQ或HTTP</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">注册发现</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">负蝲均衡</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">部çÖv和升¾U?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">事äšg调度机制</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">资源½Ž¡ç†åQŒå¦‚åQšåº•层的虚拟机,物理机和¾|‘络½Ž¡ç†</p></li></ul><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">以下功能不是最ž®é›†çš„一部分åQŒä½†ä¹Ÿå±žäºŽåº•座功能:</p><ul style="margin: 0px 0px 15px 10px; padding: 0px; border: 0px; clear: left; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; line-height: 25.2px; background-color: #ffffff;"><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">认证和鉴æ?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">微服务统一代码框架åQŒæ”¯æŒå¤š¿Uç¼–½E‹è¯­­a€</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">¾lŸä¸€æœåŠ¡æž„å¾å’Œæ‰“åŒ?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">¾lŸä¸€æœåŠ¡‹¹‹è¯•</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">微服务CI/CD‹¹æ°´¾U?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">服务依赖关系½Ž¡ç†</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">¾lŸä¸€é—®é¢˜è·Ÿè¸ªè°ƒè¯•框架åQŒä¿—¿U°è°ƒç”¨é“¾</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">灰度发布</p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">蓝绿部çÖv</p></li><h2><ul style="margin: 0px 0px 15px 10px; padding: 0px; border: 0px; clear: left;"></ul>令äh困惑的几个问é¢?/h2></ul><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;"><span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">微服务的底åñ”是不是必™åȝš„åQ?/span></p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">是的åQŒåŸºæœ¬ä¸Šæ˜¯å¿…™åȝš„。你可以不用代码实现一个资源管理服务,可以手工用Excel½Ž¡ç†ä½ çš„æ‰€æœ‰æœºå™¨èµ„源,但是不代表微服务¾pȝ»Ÿæ²¡æœ‰˜q™ä¸ªåŠŸèƒ½åQŒåªä¸è¿‡˜q™ä¸ªåŠŸèƒ½æ˜¯äh工实现的。再举个例子åQŒæ—¥å¿—ç³»¾lŸå¦‚果只是简单的打印文äšgåQŒé‚£ä¹ˆå¤šä¸ªå¾®æœåŠ¡çš„æ—¥å¿—å°±éœ€è¦æ‰‹å·¥æ”¶é›†ï¼Œäººå·¥åˆ†ç±»å’Œç­›é€‰ã€‚æ‰€ä»¥ï¼Œå¾®æœåŠ¡çš„åº•åñ”最ž®é›†ä¸€å®šä¼šå­˜åœ¨åQŒé—®é¢˜æ˜¯çœ‹æ€Žæ ·å®žçŽ°å®ƒã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q™é‡Œä»…仅是æ€È»“了对微服务系¾lŸçš„基本理解åQŒè€Œå®žçŽ°è¿™ä¸ªæž¶æž„æœ‰å¾ˆå¤šæŠ€æœ¯ï¼Œ˜q™é‡Œä¸è¿›è¡Œè¯¦¾l†å±•开。实跉|–¹é¢ï¼ŒæŽ¨èçŽ‹ç£Šçš„ã€Šå¾®æœåŠ¡æž¶æž„ä¸Žå®žè·üc€‹ï¼Œä»–描˜qîCº†ä½¿ç”¨Ruby相关的技术实çŽîCº†ä¸€æ•´å¥—微服务系¾lŸï¼Œç‰¹åˆ«æ˜¯ä¹¦ä¸­åŽé¢çš„实践部分讲解了如何将已有的系¾lŸæ¼”åŒ–äØ“å¾®æœåŠ¡æž¶æž„ï¼Œæ˜¯å¾ˆå¥½çš„å‚è€ƒå’ŒæŒ‡å¯¼ææ–™ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;"><span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">是不是所有èÊY仉™ƒ½èƒ½åšå¾®æœåŠ¡ï¼Ÿ</span></p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q™ä¸ªå‘½é¢˜æœ‰äº›å¾®å¦™åQŒä¹Ÿå¾ˆéš¾è¯´æ¸…楚,回答˜q™ä¸ªå‘½é¢˜æœ¬èínž®±æ˜¯ä¸€¿UæŒ‘战,可能最¾lˆä¹Ÿæ²¡æœ‰æ­£ç¡®½{”案。不˜q‡ï¼Œæˆ‘还是把我自å·Þqš„理解写在˜q™é‡ŒåQŒè®©å¤§å®¶åŽÀL‹ç –。在我这里,½{”案是否定的。我只需丑ևºä¸€ä¸ªåä¾‹ï¼Œæ¯”如åQšå­˜å‚¨ç³»¾lŸï¼Œå…¶æž¶æž„是传统的分层架构,每一层都使用下面一层的服务åQŒåƈä¸ÞZ¸Šä¸€å±‚提供服务。虽然可以将˜q™ç§æž¶æž„调整为基于服务的架构åQŒä½†æ²¡åŠžæ³•åšæˆå¾®æœåŠ¡ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">区别在哪里呢åQŸæ ¸å¿ƒçš„区别在于独立性上åQŒå¾®æœåŠ¡å¤§å¤šæ˜¯å¯ä»¥ç‹¬ç«‹çš„˜qè¡Œå’Œä‹É用的åQŒè€Œå­˜å‚¨è¿™¿Uéžå¸¸åº•层和基础的系¾lŸï¼Œæ¯å±‚部äšg都不能单独被使用åQŒæ¯”如:Pool½Ž¡ç†ã€CHUNK½Ž¡ç†ã€VOL½Ž¡ç†ã€NFSæ–‡äšg¾pȝ»ŸåQŒè¿™äº›åŠŸèƒ½éƒ½æ— æ³•¼›Õd¼€å¦å¤–一些功能而独立运行,要对外提供可用的存储功能åQŒä¸€å¤§å †åŠŸèƒ½å¿…é¡»ä¸€èµ·ä¸Šã€‚è¿™¿Uç³»¾lŸåšåˆ°æžè‡ß_¼Œæœ€å¤šä¹Ÿž®Þpƒ½å¤Ÿä‹Éå…‰™ƒ¨ä»¶å¯ä»¥ç‹¬ç«‹çš„部çÖv和升¾U§ï¼Œä¿—称打热补丁ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">˜q™ä¹Ÿž®±æ˜¯ä¸ÞZ»€ä¹ˆè¿™¿Uåº•层传¾lŸç³»¾lŸæž¶æž„通常是单块架构的原因。由于单块架构的各个部分调用关系紧密åQŒåšæˆå¾®æœåŠ¡åŽç³»¾lŸé›†æˆæˆæœ¬ä¼šå¤§å¤§å¢žåŠ åQŒä¸ä»…如此,˜q™æ ·çš„æž¶æž„做成微服务òq¶ä¸èƒ½æé«˜äº¤ä»˜æ•ˆçŽ‡ï¼Œå› äØ“å„ä¸ªéƒ¨åˆ†æ ÒŽœ¬ž®±æ— æ³•独立的˜qè¡Œå’Œæµ‹è¯•ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;"><span style="font-weight: 600; margin: 0px; border: 0px; padding: 0px;">什么样的èÊY件做成微服务åQ?/span></p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">能不能做成微服务åQŒå–决于四个要素åQ?/p><ul style="margin: 0px 0px 15px 10px; padding: 0px; border: 0px; clear: left; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; line-height: 25.2px; background-color: #ffffff;"><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">ž®ï¼šå¾®æœåС体¿U¯å°åQ? pizza团队ã€?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">独:能够独立的部¾|²å’Œ˜qè¡Œã€?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">轻:使用轻量¾U§çš„通信机制和架构ã€?/p></li><li style="margin: 0px 0px 0px 15px; padding: 0px; border: 0px; float: none; clear: none;"><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 1.8; clear: none; width: 585px;">松:为服务之间是松耦合的ã€?/p></li></ul><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">针对于小、轻、松都是可以通过某些技术手ŒDµè¾¾åˆ°ç›®çš„,而独立的部çÖv和运行,则是和业务本íw«æœ‰å…³ç³»åQŒå¦‚果你˜q™ä¸ª¾pȝ»Ÿæä¾›çš„业务是贴近最¾lˆç”¨æˆïLš„åQŒåƈ且这些功能之间的耦合性很ž®ï¼Œåˆ™å¾®æœåŠ¡ž®±å¯ä»¥æŒ‰ç…§ä¸šåŠ¡åŠŸèƒ½æœ¬íw«çš„独立性来划分åQŒåˆ™˜q™ç±»¾pȝ»Ÿåšæˆå¾®æœåŠ¡æ˜¯éžå¸¸åˆé€‚çš„ã€‚å¦‚æžœç³»¾lŸæä¾›çš„业务是非常底层的åQŒå¦‚åQšæ“ä½œç³»¾lŸå†…核、存储系¾lŸã€ç½‘¾lœç³»¾lŸã€æ•°æ®åº“¾pȝ»Ÿ½{‰ç­‰åQŒè¿™¾cȝ³»¾lŸéƒ½ååº•层,功能和功能之间有着紧密的配合关¾p»ï¼Œå¦‚æžœå¼ºåˆ¶æ‹†åˆ†ä¸ø™¾ƒž®çš„æœåŠ¡å•å…ƒåQŒä¼šè®©é›†æˆå·¥ä½œé‡æ€¥å‰§ä¸Šå‡åQŒåƈ且这¿Uäh为的切割无法带来业务上的真正的隔¼›»ï¼Œæ‰€ä»¥æ— æ³•做到独立部¾|²å’Œ˜qè¡ŒåQŒä¹Ÿž®±æ›´åŠ æ— æ³•åšåˆ°çœŸæ­£çš„å¾®æœåŠ¡äº†ã€?/p><hr style="margin: 0px; border: 0px; padding: 0px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; line-height: 25.2px; background-color: #ffffff;" /><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">感谢<a style="text-decoration: none; color: #286ab2; outline: none !important; margin: 0px; border: 0px; padding: 0px;">郭蕾</a>å¯ÒŽœ¬æ–‡çš„审校ã€?/p><p style="margin: 0px 0px 15px; padding: 0px; border: 0px; float: none; line-height: 25.2px; clear: none; width: 610px; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', å¾®èÊY雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, Helvetica, sans-serif; background-color: #ffffff;">¾l™InfoQ中文站投½E¿æˆ–者参与内容翻译工作,请邮件至<a href="mailto:editors@cn.infoq.com" style="text-decoration: none; color: #286ab2; outline: none !important; margin: 0px; border: 0px; padding: 0px;">editors@cn.infoq.com</a>。也‹Æ¢è¿Žå¤§å®¶é€šè¿‡æ–°æµªå¾®åšåQ?a style="text-decoration: none; color: #286ab2; outline: none !important; margin: 0px; border: 0px; padding: 0px;">@InfoQ</a>åQ?a style="text-decoration: none; color: #286ab2; outline: none !important; margin: 0px; border: 0px; padding: 0px;">@丁晓昀</a>åQ‰ï¼Œå¾®ä¿¡åQˆå¾®ä¿¡å·åQ?a style="text-decoration: none; color: #286ab2; outline: none !important; margin: 0px; border: 0px; padding: 0px;">InfoQChina</a>åQ‰å…³æ³¨æˆ‘们ã€?/p><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/431556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">ž®é©¬æ­?/a> 2016-08-13 10:53 <a href="http://www.aygfsteel.com/xiaomage234/archive/2016/08/13/431556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2015/03/09/423321.html</link><dc:creator>ž®é©¬æ­?/dc:creator><author>ž®é©¬æ­?/author><pubDate>Mon, 09 Mar 2015 08:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2015/03/09/423321.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/423321.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2015/03/09/423321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/423321.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/423321.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="content" mod-cs-content="" text-content="" clearfix"="" style="zoom: 1; width: 760px; overflow: visible; line-height: 1.5; margin: 7px 0px 10px; padding: 20px; color: #454545; font-family: Tahoma, Helvetica, Arial, STHeiti; background-color: #ffffff;"><p style="margin: 0px; padding: 0px;">from: <span style="line-height: 1.5;">http://wapapp.baidu.com/tianhuimin/item/6e144c362eced2ff96f88d42</span></p><p style="margin: 0px; padding: 0px;">1 æ¦‚è¿°1.1 ç ”发背景</p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">支撑互联¾|‘应用的各种服务通常都是用复杂大规模分布式集¾Ÿ¤æ¥å®žçŽ°çš„ã€‚è€Œè¿™äº›äº’è”ç½‘åº”ç”¨åˆæž„å»ºåœ¨ä¸åŒçš„èÊY件模块集上,˜q™äº›è½¯äšg模块åQŒæœ‰å¯èƒ½æ˜¯ç”±ä¸åŒçš„团队开 å‘、可能ä‹É用不同的¾~–程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,ž®±éœ€è¦ä¸€äº›å¯ä»¥å¸®åŠ©ç†è§£ç³»¾lŸè¡Œä¸ºã€ç”¨äºŽåˆ†æžæ€§èƒ½é—®é¢˜çš„å·¥ å…—÷€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">hydra分布式跟ítªç³»¾lŸå°±ä¸ÞZº†è§£å†³ä»¥ä¸Š˜q™äº›é—®é¢˜è€Œè®¾è®¡çš„ã€?/p>1.2 ç†è®ºä¾æ®<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">Google的论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》是我们设计开发的指导思想(原文和译文地址 https://github.com/bigbully/Dapper-translation)。Google针对自己的分布式跟踪¾pȝ»ŸDapper åœ¨ç”Ÿäº§çŽ¯å¢ƒä¸‹˜qè¡Œä¸¤å¹´å¤šæ—¶é—´ç§¯ç´¯çš„¾léªŒåQŒåœ¨è®ºæ–‡ä¸­é‡ç‚ÒŽåˆîCº†åˆ†å¸ƒå¼è·Ÿítªç³»¾lŸå¯¹ä¸šåŠ¡¾pȝ»Ÿçš„零侵入˜q™ä¸ªå…ˆå¤©ä¼˜åŠ¿åQŒåƈæ€È»“了大量的应用场景åQŒè¿˜æåŠå®ƒçš„不èƒöä¹?nbsp;处。我们通过对这½‹‡è®ºæ–‡çš„æ·±å…¥ç ”ç©¶åQŒåƈ参考了Twitter同样依据˜q™ç¯‡è®ºæ–‡çš„scala实现ZipkinåQŒç»“合我们自íw«çš„现有架构åQŒæˆ‘们认为分布式跟踪 ¾pȝ»Ÿåœ¨æˆ‘们内部是非常适合的,而且也是急需的ã€?/p>1.3 åŠŸèƒ½æ¦‚è¿°<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">hydraç›®å‰çš„åŠŸèƒ½åÆˆä¸å¤æ‚ï¼Œä»–å¯ä»¥æŽ¥å…¥ä¸€äº›åŸº¼‹€¾l„äšgåQŒç„¶åŽå®žçŽ°åœ¨åŸºç¡€¾l„äšg上收集在¾l„徏上äñ”ç”Ÿçš„è¡ŒäØ“çš„æ—¶é—´æ¶ˆè€—ï¼Œòq¶ä¸”提供跟踪查询™åµé¢åQŒå¯¹è·Ÿè¸ªåˆ°çš„æ•°æ®˜q›è¡ŒæŸ¥è¯¢å’Œå±•½Cºã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">我们会在之后的功能介¾lä¸­å¯¹hydra现有功能˜q›è¡Œè¯´æ˜Žã€?/p>2 é¢†åŸŸæ¨¡åž‹<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">分布式跟ítªçš„领域模型其实已经很成熟,早在1997òq´IBMž®±æŠŠARM2.0(Application Response Measurement)ä½œäØ“ä¸€ä¸ªå…¬å¼€çš„æ ‡å‡†æä¾›ç»™äº†Open GroupåQŒæ— å¥ˆå½“æ—¶SOA的架构还未成熟,对业务的跟踪˜q˜éœ€è¦ç›´æŽ¥åµŒå…¥åˆ°ä¸šåŠ¡ä»£ç ä¸­ï¼Œè‡´ä‹É跟踪¾pȝ»Ÿæ— æ³•™åºåˆ©æŽ¨å¹¿ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">如今互联¾|‘领域大多数后台服务都已¾lå®Œæˆäº†SOA化,所以对业务的跟ítªå¯ä»¥ç›´æŽ¥ç®€åŒ–䨓å¯ÒŽœåŠ¡è°ƒç”¨æ¡†æž¶çš„è·Ÿè¸ªåQŒæ‰€ä»¥è¶Šæ¥è¶Šå¤šçš„跟踪¾pȝ»Ÿä¹Ÿæ¶ŒçŽ°å‡ºæ¥ã€?nbsp;在hydra¾pȝ»Ÿä¸­ï¼Œæˆ‘们使用的领域模型参考了Googleçš„Dapperå’ŒTwitterçš„Zipkin(http://twitter.github.io/zipkin/)ã€?/p>2.1 hydra中的跟踪数据模型<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">参考Dapperå’ŒZipkin的设计,hydra也提炼出了自å·Þqš„领域模型åQŒå¦‚图所½C?</p><img width="640" height="398" src="http://g.hiphotos.baidu.com/album/pic/item/314e251f95cad1c88959439b7e3e6709c83d51af.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Trace:一‹Æ¡æœåŠ¡è°ƒç”¨è¿½ítªé“¾è·¯ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Span:˜q½è¸ªæœåŠ¡è°ƒåŸºæœ¬ç»“æž„ï¼Œå¤šspan形成树åÅž¾l“æž„¾l„合成一‹Æ¡Trace˜q½è¸ªè®°å½•ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Annotation:在span中的标注点,记录整个spanæ—‰™—´ŒDµå†…发生的事件ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">BinaryAnnotation:属于Annotation一¿Uç±»åž‹å’Œæ™®é€šAnnotation区别åQŒè¿™é”®å€¼å¯¹å½¢å¼æ ‡æ³¨åœ¨span中发生的事äšgåQŒå’Œä¸€äº›å…¶ä»–相关的信息ã€?/p></li></ul><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">Annotation在整个跟ítªæ•°æ®æ¨¡åž‹ä¸­æœ€ç‰|´»çš„,灉|´»˜qç”¨annotation基本能表达你所惛_ˆ°çš„è·Ÿítªåœºæ™¯ã€‚在hydraä¸?参考了zipkin)定义4¿Uä¸åŒvalueçš„annotation用来表达记录span 4个最基本的事件。通过˜q?个annotation能计½Ž—出链èµ\中业务消耗和¾|‘络消耗时间ã€?/p>2.2 dubbo服务调用框架的模åž?p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">公司内部åQŒå°¤å…¶æ˜¯æˆ‘们部门有很多业务系¾lŸä‹É用dubboä½œäØ“æœåŠ¡è°ƒç”¨æ¡†ï¼Œæ‰€ä»¥æˆ‘ä»¬çš„åˆ†å¸ƒå¼è·Ÿítªç³»¾lŸç¬¬ä¸€ä¸ªæŽ¥å…¥ç»„件就是dubboã€?nbsp;另一个原因也是因为我们团队对dubbo有着非常深入的理解,加之dubbo本èín的架构本íw«ååˆ†é€‚合扩展åQŒä½œä¸ºæœåŠ¡è°ƒç”¨æ¡†æž¶è€Œè¨€åQŒè·Ÿítªçš„æ•ˆæžœä¼šéžå¸¸æ˜Žæ˜¾ï¼Œ æ¯”如Twitterçš„Zipkin也是植入到内部的Finagle服务调用框架上来˜q›è¡Œè·Ÿè¸ªçš„ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">ç”׃ºŽçŽ°é˜¶ŒDµhydra主要接入了dubbo服务调用框架,所以在˜q™å¿…™åÖMº†è§£dubbo的几个模型,如下图所½C?</p><img width="640" height="348" src="http://b.hiphotos.baidu.com/album/pic/item/b21bb051f8198618b79550384bed2e738ad4e6b8.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Application:一¾cÖM¸šåŠ¡ç±»åž‹çš„æœåŠ¡åQŒä¸‹é¢å¯èƒ½åŒ…含多个接口服务,可能出现多种¾cÕdž‹ä¸šåŠ¡è·Ÿè¸ªé“¾èµ\ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">InterfaceService:接口服务åQŒä¸€ä¸ªæœåŠ¡æŽ¥å£æä¾›å¤š¿Uä¸šåŠ¡å¤„ç†æ–¹æ³•ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Method:接口服务中具体处理业务的æ–ÒŽ³•ã€?/p></li></ul>2.3 Hydra中跟ítªæ¨¡åž‹å’Œdubbo模型之间关系<img width="800" height="518" src="http://c.hiphotos.baidu.com/album/pic/item/38dbb6fd5266d0165be12194962bd40734fa3595.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">如图所½Cºçš„应用场景对A服务的调用。A服务在被调用的过½E‹ä¸­ä¼šç‘ô¾l­è°ƒç”¨æœåŠ¡B和服务C,而服务C被调用之后又会ç‘ô¾l­è°ƒç”¨æœåŠ¡D和服 åŠ¡E。在我们的领域模型中åQŒæœåŠ¡A被调用到调用完成的过½E‹ï¼Œž®±æ˜¯ä¸€‹Æ¡trace。而每一个服务被调用òq¶è¿”回的˜q‡ç¨‹åQˆä¸€åŽÖM¸€å›žçš„½Ž­å¤´åQ‰äؓ一个span。可ä»?nbsp;看到˜q™ä¸ª½CÞZ¾‹ä¸­åŒ…å?个spanåQŒclient-AåQŒA-BåQŒA-CåQŒC-DåQŒC-E。span本èín以树形结构展开åQŒA-C是C-Då’ŒC-E的父 spanåQŒè€Œclient-A是整个树形结构的root span。之后要提到的一个概念就是annotationåQŒannotation代表在服务调用过½E‹ä¸­å‘生的一些我们感兴趣的事情,如图所½CºC-E上标å‡?nbsp;来的那四个点åQŒå°±æ˜¯å››ä¸ªannotationåQŒæ¥è®°å½•事äšgæ—‰™—´æˆ»I¼Œåˆ†åˆ«æ˜¯C服务的csåQˆclient sendåQ‰ï¼ŒE服务的ssåQˆserver receiveåQ?E服务的ssåQˆserver sendåQ? C服务的cråQˆclient receiveåQ‰ã€‚如果有一些自定义的annotation我们会把它作为BinaryAnnotationåQŒå…¶å®žå°±æ˜¯ä¸€ä¸ªk-v对,记录ä»ÖM½•跟踪¾pȝ»Ÿæƒ?nbsp;记录的信息,比如服务调用中的异常信息åQŒé‡è¦çš„业务信息½{‰ç­‰ã€?/p>3 åŠŸèƒ½ä»‹ç»<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">当前hydra1.0ç‰ˆçš„åŠŸèƒ½ä¸»è¦åˆ†äØ“ä¸¤ä¸ªéƒ¨åˆ†åQŒè·ŸítªæŸ¥è¯¢å’Œè·Ÿè¸ªå±•示ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">如图所½CÞZؓ查询™åµé¢åQ?/p><img width="640" height="311" src="http://h.hiphotos.baidu.com/album/pic/item/d53f8794a4c27d1e95c484781ad5ad6edcc438af.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">在hydra针对业务提出两个相关的概念:应用和服务。不同的业务的所属不同的应用(相当于dubbo中的Application)åQŒæœåŠ¡ï¼ˆç›¸å½“äºŽdubbo中的interfaceåQ‰æŒ‚在应用之下ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">在hydra的查询界面中首先要选择惌™¦å…Ïx³¨çš„应用名åQŒç„¶åŽé€šè¿‡è‡ªåŠ¨å®Œæˆçš„æ–¹å¼è¾“å…¥åº”ç”¨ä¸‹çš„æœåŠ¡ã€‚é€‰æ‹©æœåŠ¡çš„å¼€å§‹æ—¶é—´å’Œéœ€è¦æŸ¥çœ‹çš„è·Ÿè¸ª‹Æ¡æ•°ã€‚另外hydra需要确定返回数据的总量åQŒé˜²æ­¢æŸ¥è¯¢å‡ºå¤§æ•°æ®é‡å¯ÆD‡´™åµé¢å¤±åŽ»å“åº”ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">另外我们提供寚w¢å¤–çš„½{›é€‰æ¡ä»Óž¼šè°ƒç”¨å“åº”æ—‰™—´ã€æ˜¯å¦å‘生异常。调用响应时间指的是˜q™ä¸€‹Æ¡æœåŠ¡è°ƒç”¨ä»Žè°ƒç”¨å¼€å§‹åˆ°è°ƒç”¨¾l“束的时é—ß_¼Œæ˜¯å¦å‘生异常则包括一‹Æ¡æœåŠ¡è°ƒç”¨ä¸­æ‰€æœ‰åŽ†¾lçš„æœåŠ¡æŠ›å‡ºçš„å¼‚å¸”Rƒ½ä¼šæ•获到ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">对于查询之后的数据,hydra提供在前台进行排序的功能ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">对于每一‹Æ¡è·Ÿítªï¼Œæˆ‘们可以˜q›ä¸€æ­¥å±•½CÞZ»–的服务调用层¾U§ä¸Žå“åº”æ—‰™—´çš„æ—¶åºå›¾ã€‚如下图所½Cºï¼š</p><img width="800" height="347" src="http://g.hiphotos.baidu.com/album/pic/item/738b4710b912c8fcfd114971fd039245d78821af.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">我们参考Dapper中论˜q°çš„场景åQŒåœ¨æ—¶åºå›¾ä¸­ç”¨ç»¿è‰²ä»£è¡¨æœåŠ¡è°ƒç”¨æ—¶é—ß_¼Œ‹¹…蓝色代表网¾lœè€—æ—¶åQŒå¦å¤–如果服务调用抛出异常被 hydra捕捉到的话,会用¾U¢è‰²è¡¨ç¤ºã€‚鼠标移动到时序图中的每一个对象上åQŒä¼šTip展现详细信息åQŒåŒ…括服务名、方法名、调用时é•ѝ€Endpoint、异å¸?nbsp;信息½{‰ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">左侧的树形结构图可以收è“v和展开åQŒåŒæ—¶å³ä¾§çš„æ—¶åºå›¾äñ”生联动,利于调整å…Ïx³¨ç‚¹åœ¨ä¸åŒçš„æœåŠ¡ä¸Šã€?/p>4 æ•´ä½“æž¶æž„4.1 å®Œæ•´ç‰?img width="640" height="445" src="http://g.hiphotos.baidu.com/album/pic/item/ac6eddc451da81cb77043c715366d016082431af.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">对于分布式跟ítªç³»¾lŸè€Œè¨€åQŒå¿…™åÕd¯¹æŽ¥å…¥çš„基¼‹€¾l„äšg˜q›è¡Œæ”šw€ ï¼Œæˆ‘们对dubbo的改造很½Ž€å•,只是在过滤器链上增加一个过滤器åQŒæˆ‘们将其封装成一个hydra-dubboçš„jar包,由dubbo直接依赖ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">所有跟ítªæ‰€éœ€çš„通用性的API我们ž®è£…在hydra-client中,遍于接入各种¾l„äšgã€?nbsp;hydra-manager用来完成每个服务的注册、采æ ïLŽ‡çš„è°ƒæˆã€å‘é€seed生成全局唯一的traceId½{‰é€šç”¨æ€§çš„功能。所有hydra-manager数据¾lŸä¸€ç”¨mysql˜q›è¡Œå­˜å‚¨ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">我们使用hydra-collectorå’Œhydra-collector-service˜q›è¡Œè·Ÿè¸ªæ•°æ®çš„异步存储,中间使用metaQ˜q›è¡Œ¾~“冲ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">hydra-managerå’Œhydra-collector使用dobbo提供服务ã€?/p>4.2 ¾_„¡®€ç‰?p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">考虑到数据量不大的情况,以及部çÖv的复杂度。我们提供了两种更简便的架构</p><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">如果考虑到数据量没有那么大,可以不ä‹É用hbaseåQŒç”¨mysql代替åQŒå³¾_„¡®€ç‰?。因为毕竟hadoop集群和hbase集群的部¾|²å’Œ¾l´æŠ¤å·¥ä½œé‡å¾ˆå¤§ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">如果òq¶å‘量也不是很大的话åQŒå¯ä»¥ä¸ä½¿ç”¨æ¶ˆæ¯ä¸­é—´ä»Óž¼Œä¹Ÿå°±æ˜¯ç²¾½Ž€ç‰?åQŒå¦‚图所½Cºã€‚在hydra-collector端直接进行数据落圎ͼŒå½“然仍然是异步的ã€?/p></li></ul><img width="596" height="464" src="http://c.hiphotos.baidu.com/album/pic/item/c2cec3fdfc03924594575eb38694a4c27c1e25af.jpg" alt="Hydra - 京东开源的åŸÞZºŽDubbo的调用分布跟ítªç³»¾l? style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;" /><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">在ä‹É用mysql˜q›è¡Œå­˜å‚¨çš„æ—¶å€™æˆ‘ä»¬åÆˆæœªè¿›è¡Œåˆ†åº“åˆ†è¡¨ï¼Œå› äØ“è€ƒè™‘åˆ°å­˜å‚¨çš„æ˜¯ç›‘æŽ§æ•°æ®ï¼Œæ—¶æ•ˆæ€§è¾ƒé«˜ï¼Œè€Œé•¿æœŸçš„ç›‘æŽ§æ•°æ®çš„ä¿ç•™æ„ä¹‰åÆˆä¸å¤§ã€‚æ‰€ä»¥æˆ‘ä»¬åœ¨ä¸»è¡¨ä¸Šæœ‰æ˜Žç¡®çš„æ—¶é—´æˆ³å­—æ®µåQŒä‹É用者可以自行决定何时对保存的历史数据进行迁¿U…R€?/p>5 Quick Start5.1 éƒ¨çÖv½Ž€ä»?p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">Hydra分布式跟ítªç³»¾lŸå¯ä»¥è·ŸítªçŽ¯å¢ƒçš„æ•°æ®é‡å¤§ž®é€‰æ‹©ä¸Šæ–‡æ‰€˜q°çš„三种部çÖv方式</p><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">é«˜åÆˆå‘ï¼Œå¤§æ•°æ®é‡åQšhydra-client | Queue | hbase</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">é«˜åÆˆå‘ï¼Œž®æ•°æ®é‡åQšhydra-client | Queue | mysql</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">ä½ŽåÆˆå‘ï¼Œž®æ•°æ®é‡åQšhydra-client | mysql</p></li></ul><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">å› äØ“æ˜¯quick startåQŒè¿™é‡Œåªä»‹ç»ä½Žåƈ发和ž®æ•°æ®é‡çš„æƒ…å†üc€‚不˜q‡è¿™é‡Œä¼šè¯¦ç»†ä»‹ç»å¦‚何通过配置文äšg的修æ”ÒŽ¥åˆ‡æ¢˜q™ä¸‰¿Uéƒ¨¾|²æ–¹å¼ã€?/p>5.2 ¼‹¬äšg要求<ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1或多åîC¸šåŠ¡ç³»¾lŸé›†¾Ÿ¤æœº</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1套zookeeper单点或集¾Ÿ¤æœº</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1台机器部¾|²Hydra-manager</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1或多台机器部¾|²Hydra-Collector</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1台机器部¾|²Hydra-web</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">1台数据库服务å™?/p></li></ul>5.3 è½¯äšg要求<ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Dubbo:Hydra是基于alibabaçš„dubbo框架基准上做的服务跟ítªç³»¾lŸï¼Œç†è®ºä¸ŠåŽŸæœ‰çš„Dubbo框架服务¾Ÿ¤ä¸­æ‰€æœ‰åº”用不需要额外的配置åQŒçš†å¯ä»¥òqÏx»‘的接入Hydra¾pȝ»Ÿã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Zookeeper:各个服务点依赖于zookeeper来读取Hydra-managerå’ŒHydra-collector获取数据交互路由点,来完成跟ítªæ•°æ®çš„æŽ¨é€å’Œè·Ÿè¸ªçš„æŽ§åˆ¶ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Mysql:跟踪数据的持久化存储ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">Tomcat:前端web应用容器</p></li></ul>5.4 æºç èŽ·å–<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">可以暂时使用masteråQŒåŽ¾l­ç‰ˆæœ¬ä¼šå½’åÆˆåˆ°dubbo½Ž¡ç†ç«?/p>5.5 ™å¹ç›®æž„徏打包<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">maven™å¹ç›®ä¸ç”¨å¤šè¯´ã€‚mvn clean install。不˜q‡ä¸å¾—不说的是,hydra™å¹ç›®ä¸­åŒ…含一些涉及数据库è¯Õd†™çš„单元测è¯?mysqlåQŒhbaseåQ‰ï¼Œé…ç½®æ–‡äšg分别åœ?</p><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">modules/hydra-manager-db/src/test/resources/mysql.properties</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">modules/hydra-store/hydra-mysql/src/test/resources/mysql.properties</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">modules/hydra-store/hydra-hbase/src/test/resources/hbase-site.xml</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">modules/hydra-store/hydra-hbase/src/test/resources/hydra-hbase-test.xml</p></li></ul><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">mysql需要创建测试用数据库和‹¹‹è¯•用表åQŒhbase需要创建测试用è¡?/p><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">docs/table-hbase/initTable<br />(hbase廸™¡¨æ—¶å¯ä»¥æ ¹æ®hbase集群的具体情况调整域分区åQŒæ¶‰åŠåˆ°table-mysql中对TB_PARA_SERVICE_ID_GEN初始化数据的设计)</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">docs/table-mysql</p></li></ul><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">当然对于不需要ä‹É用hbase的同学也可以自行¿U»é™¤modules/hydar-store/hydra-hbaseã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">当然用maven构徏跌™¿‡‹¹‹è¯•也是可以的。ä‹É用mvn clean install -Dmaven.test.skip=true</p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">需要打包的子项目会通过maven:assemblly插äšg打成tar.gz包在各自的target目录下ã€?/p>5.6 å®‰è£…部çÖv5.6.1 Hydra-client<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">hydra-client中包含hydra与dubbo的集成,以及hydra跟踪攉™›†çš„相兛_ŠŸèƒ½ã€‚å¦‚æžœéœ€è¦è¿›è¡Œdubbo服务的跟ítªï¼Œåªéœ€è¦æŠŠ˜q™ä¸ªjar包放在dubbo服务的classpath下,ž®×ƒ¼š<span style="color: aqua;">自动开启跟ítªåŠŸèƒ½ï¼</span></p>5.6.2 Hydra-manager<ol style="margin: 5px 2px 5px 50px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖvåQšscp -r target/*.tar.gz username@ip:dirname</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">配置åQšcd basedir/conf åQˆéœ€è¦ä¿®æ”šw…¾|®ï¼‰</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">启动åQšcd basedir/bin<br />sh manager.sh start</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">停止åQšcd basedir/bin<br />sh manager.sh stop</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">输入åQšcd basedir/log<br />tail -f manager.log</p></li></ol>5.6.3 Hydra-collector<ol style="margin: 5px 2px 5px 50px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖvåQšscp -r target/*.tar.gz username@ip:dirname</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">配置åQšcd basedir/conf åQˆéœ€è¦ä¿®æ”šw…¾|®ï¼‰</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">启动åQšcd basedir/bin<br />sh collector-mysql.sh start <br />(˜q™é‡Œæ³¨æ„ä¸€ä¸‹ï¼Œå¦‚果在hydra-collector中需要发送到Queue中,则需要启动collector.sh,jar包会加蝲不同的配¾|®æ–‡ä»¶ã€?</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">停止åQšcd basedir/bin<br />sh collector-mysql.sh stop</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">输入åQšcd basedir/log<br />tail -f *.log</p></li></ol>5.6.4 Hydra-web<ol style="margin: 5px 2px 5px 50px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">需要在web.xml中修改引入的配置文äšg为hydra-mysql.xmlåQŒæ³¨æŽ‰hydra-hbase.xml</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖvåQšscp -r target/*.war username@ip:$TOMCAT_WEBAPPS</p></li></ol>6 æ¨¡æ‹Ÿåœºæ™¯6.1 åœºæ™¯æè¿°<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">我们模拟了两个测试场景,均是åŸÞZºŽdubbo服务调用</p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">场景exp1:</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; font-size: 12px; font-family: tahoma, helvetica, arial;">A --> B --> C         </pre><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">åÏxœåŠ¡A调用服务B,服务B调用服务C。测试用例在modules/hydra-example/hydra-exmple-exp1/。熟悉dubbo的同学一定不会陌生ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">场景exp2:</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; font-size: 12px; font-family: tahoma, helvetica, arial;">A --> B --> C1 --> E                     --> C2 --> D1 --> C1 --> E                            --> D2         </pre><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">场景2很复杂,基本æ¶ëŠ›–了对同步调用跟踪的大多数可能遇到的场景。测试用例在modules/hydra-example/hydra-exmple-exp2/ã€?/p>6.2 æ¨¡æ‹Ÿåœºæ™¯dubbo服务的部¾|?p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">Hydra默认使用了hydra-exmple中的两个应用场景来做åQŒä½ å¯ä»¥åœ¨hydra-test/hydra-test-integration打包中获得应用场景ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">获得tar.gz包或者zip包后åQŒå°†æœåŠ¡åˆ†å¸ƒå¼éƒ¨¾|²åˆ°ä¸åŒçš„æœºå™¨ä¸ŠåQŒä»¥æ¨¡æ‹Ÿåº”用场景,一下介¾låœºæ™¯ä¸€çš„部¾|²æ–¹æ³•,场景二的部çÖvæ–ÒŽ³•¾cÖM¼¼ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">hydra-test-intergration åˆ†äØ“windows版和linuxç‰?默认)åQŒè§å¦‚下打包æ–ÒŽ³•ã€?/p><ul style="margin: 0px 2px 0px 45px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">打包åQšlinux: mvn package -Pruntime-env-linux<br />window: mvn package -Pruntime-env-windows</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv: scp -r target/*.tar.gz username@ip:dirname</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">配置: cd basedir/conf<br />修改 *exp1.properties</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">启动åQ?nbsp;cd basedir/bin<br />cd exp1<br />sh startA.sh<br />cd ..<br />sh startTrigger-exp1.sh start</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">停止: cd basedir/bin<br />sh startTrigger-exp1.sh stop<br />All.sh stop</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">输出: cd basedir/log<br />tail -f *.log</p></li></ul>6.3 éƒ¨çÖv举例<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">以下演示安装样例åQ?/p><ol style="margin: 5px 2px 5px 50px; padding: 0px; list-style: none; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖvzookeeper单点或集¾Ÿ¤çŽ¯å¢ƒï¼Œä»¥ä¿è¯èŽ·å¾—æœ€ä½³SOAåQŒzookeeper的部¾|²è¯·å‚照官方文æ¡£ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv实验场景exp1åQŒåªéœ€è¦éƒ¨¾|²hydra-test-integration模块打包的tar.gz包,拯‚´ä¸‰ä†¾åˆ†å¸ƒå¼éƒ¨¾|ŒÓ€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv一个触发器TriggeråQŒä»¥‹È€‹zÀLœåŠ¡çš„è°ƒç”¨ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv一个ManageråQŒä»¥½Ž¡ç†å„个跟踪点的跟踪上下文ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv一个或者多个Collector消费机集¾Ÿ¤ï¼Œä»¥æœé›†æ¥è‡ªHydra-client推送过来的跟踪数据ã€?/p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px;">部çÖv一个web应用åQŒå·²æä¾›¾l™å‰ç«¯å±•现应用系¾lŸæœåŠ¡ä¸Šä¸‹æ–‡ã€?/p></li></ol><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">exp1场景说明åQ?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">有三个服务应用A、B、C和一个触发RPC调用的应用TriggeråQŒæœåŠ¡è°ƒç”¨å…³¾pÖMØ“A-B-CåQ?nbsp;每隔500s触发一个调用,持箋旉™—´ä¸?天ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">部çÖv地址举例åQ?/p>角色ipportZK192.168.200.110-1122181~A192.168.200.11020990B192.168.200.11120991C192.168.200.11220992Trigger192.168.200.113-Manager192.168.228.8120890Collector192.168.228.81-8220889Web192.168.228.818080MySql-DB192.168.228.8133067 ‹¹‹è¯•相关7.1 ‹¹‹è¯•说明<p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">本测试针对Hydra-Client模块˜q›è¡ŒåŠŸèƒ½‹¹‹è¯•和压力测试,以便在Hydra开发的˜q‡ç¨‹ä¸­åŠæ—¶å‘现重要bug和帮助优化Hydra¾pȝ»Ÿæ€§èƒ½ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">本测试目前只针对Hydra-client的测试,重点å…Ïx³¨ä¸šåŠ¡¾pȝ»ŸæŽ¥å…¥Hydra和不接入Hydra前后性能影响åQŒä»¥ä¿è¯Hydra¾pȝ»ŸæŽ¥å…¥ç«¯çš„低äçR入性和½E›_®šæ€§ã€?/p><p style="margin: 10px 0px; padding: 0px; font-family: arial, sans-serif, verdana, helvetica; color: #404040; line-height: 25px; background-color: #fafafa;">针对Hydra-Client的测试,在部¾|²ä¸ŠåQŒåªç”¨éƒ¨¾|²åº”用场景(带Hydra_clientåQ‰å’ŒBenchmark触发点,然后在应用Benchmark和应用场景上埋点分析Hydra性能ã€?br /></p><p style="margin: 0px; padding: 0px;"><br /></p><p style="margin: 0px; padding: 0px;">资料来源åQ?a target="_blank" style="color: #4bc1c1;">http://www.open-open.com/lib/view/open1370253915148.html</a></p><div></div></div><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/423321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">ž®é©¬æ­?/a> 2015-03-09 16:06 <a href="http://www.aygfsteel.com/xiaomage234/archive/2015/03/09/423321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EDA å’?SOA 的融合以及实è·?在金融行业的应用http://www.aygfsteel.com/xiaomage234/archive/2014/12/30/421947.htmlž®é©¬æ­?/dc:creator>ž®é©¬æ­?/author>Tue, 30 Dec 2014 02:41:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2014/12/30/421947.htmlhttp://www.aygfsteel.com/xiaomage234/comments/421947.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2014/12/30/421947.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/421947.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/421947.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ½­¿ÚÏØ| »¢ÁÖÊÐ| å´²ýÏØ| Çíº£ÊÐ| ²©ÂÞÏØ| Êæ³ÇÏØ| ´Ó½­ÏØ| ½éÐÝÊÐ| µÂ¸ñÏØ| ±£Í¤| äÀ´¨ÏØ| ¶«Ïç×å×ÔÖÎÏØ| ³±ÖÝÊÐ| Ë³Æ½ÏØ| º£³ÇÊÐ| ÎèÑôÏØ| ÐûÍþÊÐ| ºÏ½­ÏØ| Í¨É½ÏØ| Õò°²ÏØ| ÎͰ²ÏØ| èϳÇÏØ| Þ­´ºÏØ| ¼Î¶¨Çø| °ÍÑåÏØ| ¶ÁÊé| ½­´ïÏØ| ÐÂÌïÏØ| ×ÊÖÐÏØ| °ö²ºÊÐ| ¾°ºéÊÐ| ÄϾ©ÊÐ| ºº¹ÁÇø| ·ð¸ÔÏØ| Ñô¸ßÏØ| ´ó¹ØÏØ| ËçµÂÏØ| ·ÚÎ÷ÏØ| ·½ÕýÏØ| ÕÁÊ÷ÊÐ| ¼ªÂ¡ÏØ|