±à¼ÍƼö: |
±¾ÎÄÊ×ÏȽéÉÜÁ˳¤Á¬½Ó·þÎñµÄ¸ÅÄî¡¢¼Ü¹¹Éè¼Æ¡¢Ï̹߳ÜÀí¡¢ÄÚ´æ¹ÜÀí¡¢TCP²ð°üÁ÷³Ì¡¢³¤Á¬½Ó±£»î¡¢ÈÝÁ¿¿ØÖƵȣ¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚinfoq£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼ÍƼö¡£ |
|
³¤Á¬½Ó·þÎñ¼ò½é
΢ÁÄ£¬ÊÇ 58 Ò»¿îÁÄÌ칤¾ß£¬Ä¿Ç°ÒѾ½ÓÈë 58 µÄ´ó²¿·Ö²úÆ·¡£¼°Ê±×¼È·Êý¾Ý´«Ê䣬ÊǶÔÒ»¿îÁÄÌ칤¾ß×î»ù±¾µÄÒªÇó¡£³¤Á¬½Ó·þÎñ¾ÍÊÇÔÚ¿Í»§¶Ëµ½·þÎñ¶ËÖ®¼ä½¨Á¢Ò»Ìõȫ˫¹¤µÄÊý¾Ýͨ·£¬ÊµÏÖ¿Í»§¶ËºÍ·þÎñÖ®¼äÂß¼ÊÕ·¢Êý¾Ý£¬ÔÚÏßÀëÏߵȹ¦ÄÜ¡£
½ÇÉ«
³¤Á¬½Ó·þÎñÔÚÕû¸ö΢ÁÄϵͳÖУ¬Î»ÓÚ¿Í»§¶ËÓëºǫ́Âß¼Ö®¼ä£»
Õû¸öºǫ́·þÎñ×îÖØÒªµÄÖ±½Ó¶ÔÍâ½Ó¿ÚÖ®Ò» (ÁíÒ»¸öÊǶÌÁ¬½ÓÇëÇóµÄ nginx)£»
³¤Á¬½Ó·þÎñ¶ÔÍâºÍ¶ÔÄڵľù²ÉÓà tcp Á¬½Ó¡£

ϵͳƿ¾±
³¤Á¬½Ó·þÎñÖ÷Òª¹¦ÄÜÊÇÊÕ·¢Êý¾Ý£¬±£³ÖÔÚÏߣ¬Ê¹ÓõÄϵͳ×ÊÔ´Ö÷Òª°üÀ¨£ºCPU£¬ÄÚ´æ£¬Íø¿¨£»
µ±Á¬½Ó·Ç³£»îÔ¾µÄʱºò£¬´óÁ¿Êý¾Ý½ÓÊÕÓë·¢ËÍ£¬»áÓõ½¸ü¶àµÄ cpu ºÍÍø¿¨£»µ±´óÁ¿Óû§ÔÚÏßµÄʱºò£¬ÐèҪά³ÖÕâЩÁ¬½Ó£¬±£³Ö»á»°£¬ÐèÒªÓõ½´óÁ¿Äڴ棻
¿¼Âǵ½Î¢ÁĵÄʵ¼Ê³¡¾°£¬app ¶ËÕ¼ÓкܴóµÄ±ÈÀý£¬ÓÉÓÚÊÖ»úµÄÍøÂç»·¾³Ïà¶Ô pc À´Ëµ£¬²»Ì«Îȶ¨£¬ÐèÒª´¦Àí´óÁ¿Á¬½ÓµÄн¨Óë¶Ï¿ª£¬ËùÒÔϵͳ¶Ô
cpu ʹÓÃÂʱȽϸߡ£
Éè¼ÆÄѵã
Éè¼Æµ¥Ì¨ÎïÀí»úÁ¬½ÓÊý 100W µÄ´¦ÀíÄÜÁ¦£»
cpu ×ÊÔ´³ä·ÖÀûÓã¬Ï̵߳ķÖÅ䣻
ÄÚ´æºÏÀí·ÖÅ䣬Êý¾Ý½á¹¹Ñ¡Ôñ£»
Òì²½»¯£¬°þÀëÒµÎñÂß¼ºÍÍøÂç io Ö®¼äµÄÏ໥ÒÀÀµ¡£
¼Ü¹¹Éè¼Æ

¼Ü¹¹µÄÉè¼ÆÐèÒª¿¼ÂÇ tcp Á¬½Ó¹ÜÀíÓëÓ¦ÓòãÐÒé½âÎöÓë´¦ÀíÏà·ÖÀ룬ÒÔÏÂÊÇϵͳÖ÷ÒªµÄ¹¦ÄÜÄ£¿é£º
tcp Á¬½Ó²ã (ºÚÉ«ÐéÏß¿ò)- Á¬½Ó±£³Ö£¬session ¹ÜÀíµÈ£¬ÊµÏÖÁË tcp ºÍ tls ²ã£»
BlayServer - Âß¼²ã·þÎñ£¬Âß¼²ã½Úµã¹ÜÀí£¬ÐÒé½âÎöµÈ£»
ClientServer - ¿Í»§¶Ë·þÎñ£¬¿Í»§¶ËÐÒé½âÎö£»
protocol - http£¬websocket£¬protocol ÐÒé·â×°£»
tools - json£¬log£¬config£¬crypto¡£
Ï̹߳ÜÀí
ΪÁ˳ä·ÖµØÊ¹Óà CPU£¬ÐèÒªºÏÀíµÄ½øÐÐÏ̹߳滮¡£Õû¸ö³¤Á¬½Ó·þÎñʹÓÃʼþÇý¶¯£¬°üÀ¨£º¶¨Ê±Æ÷ʼþºÍ io
ʼþ£¨listen fd£¬socket fd, pipe fd£©, ËùÒÔÏ̹߳滮¾ÍÊǺÏÀí¸øÕâЩʼþ·ÖÅäÏ̡߳£
Ïß³ÌÓÅ»¯
´óÁ¿Á¬½Ó socket ÐèҪƽ¾ù·ÖÅäµ½¸÷¸öỊ̈߳»
еÄÁ¬½ÓÇëÇóÁ¿±È½Ï´ó£¬listen Ïß³ÌѹÁ¦½Ï´ó£¬ÐèÒª¿¼ÂǶàÏ̴߳¦Àí¡£

ÕâÀïÖ÷񻃾¼°µ½ÒÔÏ 3 ÖÖ fd µÄÏ̷߳ÖÅ䣺
¼àÌý fd£¬°üÀ¨¼àÌýÂß¼²ãµÄÁ¬½ÓÇëÇóºÍ¼àÌý¿Í»§¶ËµÄÁ¬½ÓÇëÇ󣬲¢ÇÒÖ§³ÖÆô¶¯¶à¸ö¼àÌý¶Ë¿Ú£¬Ã¿¸ö¶Ë¿Ú¶à¸öÏß³Ìͬʱ¹¤×÷£¨¿ÉÅäÖã©£¬ÕûÌå»á°´Ë³Ðò·ÖÅäµ½Ị̈߳»
Á¬½Ó fd£¬°üÀ¨Âß¼²ãµÄÁ¬½ÓºÍ¿Í»§¶ËµÄÁ¬½Ó£¬²ÉÓà fd È¡ÓàÏß³ÌÊý£¬±£Ö¤Æ½¾ù·ÖÅäµ½ËùÓÐỊ̈߳»
pipe fd, ¸ºÔð±¾Ï̹߳ܵÀÖÐÊý¾ÝµÄ¶ÁÈ¡£¬Ã¿¸öÏß³ÌÒ»¸ö¡£
ÕâÑùʹµÃÿ¸öÏß³ÌµÄ CPU ʹÓÃÂÊÏ൱¡£
Ï̼߳äͨÐÅ
¿Í»§¶Ë fd ºÍ listen fd£¬²ÉÓò»Í¬µÄ¹æÔò·ÖÅ䵽ͬһ×éÏß³ÌÖУ¬µ±¿Í»§¶ËµÄÊý¾ÝÐèÒª·¢¸øÂß¼²ã£¬»òÊÇÂß¼²ãÊý¾ÝÐèÒª·¢¸ø¿Í»§¶Ë£¬¾Í´æÔÚ¿Í»§¶ËÁ¬½ÓºÍÂß¼²ãµÄÁ¬½Ó´æÔÚͬһÏ̻߳ò²»Í¬Ïß³ÌÁ½ÖÖÇé¿ö£¬²»Í¬Ïß³ÌÖ®¼ä´«ÊäÊý¾ÝÐèÒªÓõ½Ïß³ÌͨÐÅ¡£½â¾ö²»Í¬Ï̷߳ÃÎÊ×ÊÔ´£¬´«ÊäÊý¾ÝÖ÷Òª¿¼ÂÇÁËÏÂÃæ¼¸ÖÖ·½Ê½:
¼ÓËø (±ÈÈç session ¶ÁÐ´Ëø£¬´Ó¶øÈà session ¿ÉÒÔÔÚ¶àÏß³ÌÖвÙ×÷) - »áµ¼Ö¶à¸öÏ߳̾ºÕù×ÊÔ´£¬×èÈûỊ̈߳»
¹²ÏíÄڴ棬ÐèÒª¼ÓËø±£Ö¤Ô×ÓÐÔ£¬ÐèÒªÏß³ÌÉèÖö¨Ê±Æ÷×ö¿É¶ÁÐÔ¼ì²â£¬ÊµÏÖÆðÀ´±È½Ï¸´ÔÓ£»
ÎÒÃDzÉÓòÙ×÷ϵͳÌṩµÄ¹ÜµÀ -pipe ½â¾öÏ̼߳äͨÐŵÄÎÊÌâ¡£

pipe ͨÐÅÐÒ飺
close session£¬Ò»¸öÏß³ÌÐèÒª¹Ø±ÕÁíÒ»¸öÏß³ÌÉϵÄÁ¬½Ó£¬±ÈÈ磺ÊÕµ½Âß¼²ãÐèÒª°Ñij¸öÓû§ÌßÏÂÏßµÄÃüÁ
send to session, Ò»¸öÏ̸߳ø±ðÒ»¸öÏß³ÌÉϵÄÁ¬½Ó·¢ËÍÊý¾Ý£¬±ÈÈ磺¸øÄ³¸öÓû§ÍÆËÍÏûÏ¢£»
Ó¦Óòãʼþ£¬Ó¦Óòãʼþ¿çÏß³Ìת·¢£¬Ò»ÖÖͨÓõĿçÏ̵߳÷Óá£
ÄÚ´æ¹ÜÀí
ÔÚ³¤Á¬½Ó·þÎñ¹¤×÷¹ý³ÌÖУ¬»áÓдóÁ¿»á»°²»Í£´´½¨ºÍÏú»Ù£¬ÔڻỰ¹ý³ÌÖУ¬ÓÖ»áÓдóÁ¿³¤¶È²»µÈµÄÊý¾ÝͨÐÅ£¬³¤Ê±¼äÎȶ¨µÄ·þÎñÐèÒªºÏÀí¸ßЧµÄÄÚ´æÊ¹Óᣳ¤Á¬½Ó·þÎñÖжÔÄÚ´æµÄʹÓ㬰üÀ¨ÒÔϼ¸¸ö·½Ã棺²Ù×÷ϵͳ
Tcp ÐÒéÕ»ÄÚ´æÊ¹Ó㬷þÎñÖÐ session ¹ÜÀí£¬¶ÁдÊý¾Ý»º´æ (buffer) µÈ¡£

˵Ã÷£º
ÆäÖÐ×îÖ÷ÒªµÄÄÚ´æÊ¹ÓÃÊÇ tcp ÐÒéÕ»£¬°üÀ¨ tcb ºÍ¶Áд»º´æ£¬ÆäËüÄÚ´æÊ¹ÓÃÌåÏÖÔÚ session
´æ´¢ºÍ session ¶Áд buffer£»
ÓÉÓÚÔÚ tcp ÉϲãʵÏÖÁ˸ü¼ÓÂß¼ÓÑºÃµÄ buffer(ºóÃæ»áÏêϸ½²µ½)£¬Êµ¼Ê²¿ÊðÖпÉÒÔ°Ñ tcp
ÐÒéÕ»ÖеĶÁд buffer ÉèÖóɱȽÏСµÄ¿Õ¼ä£¬±ÈÈçÉèÖÃΪ 1k¡£
session ¾²Ì¬ÄÚ´æÄ£ÐÍ
µ±Ò»¸ö¿Í»§¶ËÔÚÏߣ¬·þÎñ¶Ë»áÉú³ÉÒ»¸ö session ±£´æ¸ÃÁ¬½ÓµÄ״̬£¬Ò»Ð©Âß¼ÐÅÏ¢£¬ÒÔ¼° socket
ÐÅÏ¢µÈ¡£ ´óÁ¿µÄ»á»°±£³Ö£¬ÐèÒª·þÎñ¶ËºÏÀíµÄ¹ÜÀíÕâЩ session¡£
¿¼ÂÇÒÔϼ¸ÖÖ´æ´¢½á¹¹£º
hash - Äܹ»ÊµÏֱȽϿìËÙ´æÈ¡£¬ÐèÒª×Ô¼ºÊµÏÖ hash Ëã·¨£¬¾³£·ÖÅäÊÍ·ÅÄÚ´æ»áµ¼ÖÂÄÚ´æË鯬£»
¹Ì¶¨Êý×é - ÐèÒªÒ»¿ªÊ¼·ÖÅä´ó¿éÄڴ棬²»Ö§³Ö¶¯Ì¬À©Õ¹£¬µ«´æÈ¡¿ìËÙ£¬²»»áÓÐÄÚ´æË鯬£»
¶¯Ì¬Êý¾Ý - ¶¯Ì¬À©Õ¹£¬´æÈ¡¿ìËÙ£¬ÎÞÄÚ´æË鯬£¬µ«À©Õ¹µÄʱºò»áÓдó¿éÄÚ´æ·ÖÅäÓ뿽±´¡£
³¤Á¬½Ó·þÎñ²ÉÓÃÊý×é´æ´¢ session£º
Ô¤·ÖÅä 100W session È«Á¿µÄ¿Õ¼ä£¬Ï൱ÓÚ 100Wsession µÄÊý×飨һ¹² 418M£©£¬´óС¿É½ÓÊÜ£¬²¢ÇÒÓÐÈÝÁ¿Ê¹ÓÃ¼à¿Ø£¬·ÀÖ¹¿Õ¼äÂúÁ˽¨Á¢Á¬½Óʧ°Ü£»
Ö±½ÓʹÓà session ¶ÔÓ¦µÄ fd ×÷Ϊϱ꣬ʵÏÖ´æÈ¡ O(1)£»
ÓÉÓÚ fd ·ÖÅä²ßÂÔÊÇ´ÓСµ½´ó·ÖÅä¿ÕÏеģ¬ËùÒÔ¿ÉÒÔ±£Ö¤Êý×éÔÚµ±Ç°Á¬½ÓÊýÒÔϵĿռäÊDZ¥ºÍµÄ£¬¿Õ¼äÀûÓÃÂʱȽϸߡ£

buffer
ÔÚ socket ¶Áд¹ý³ÌÖУ¬»áÓöµ½ÒÔϼ¸¸öÎÊÌ⣺
µ±Ïò socket ÖÐдÊý¾ÝµÄʱºò£¬Èç¹ûµ±Ç°²»×ãÒÔдÏÂҪдµÄËùÓÐÊý¾Ý£¬ÄÇô»áдÈ벿·ÖÊý¾Ý£¬Ê£ÏµÄÊý¾ÝÐèÒªÔÚ
socket ¿ÉдµÄʱºò¼ÌÐøÐ´È룬ÒÔ±£Ö¤Êý¾ÝµÄÁ¬¹áÐÔ£¬ÕâÀïÐèÒªÓÐÒ»¸ö±£´æ²¢¼Ç¼ÐèҪдÈëµÄÊý¾ÝµÄÊý¾Ý½á¹¹£¬²¢ÇÒÐèÒª±£Ö¤Ð´ÈëµÄÊý¾ÝµÄÏȺó˳Ðò£¬ÏÈÈëÏȳö£»
µ±´Ó socket ÖжÁÊý¾ÝµÄʱºò£¬tcp Ö»±£Ö¤Êý¾ÝÁ÷µÄ˳ÐòÐÔ£¬²¢²»ÖªµÀÓ¦ÓòãÐÒé°ü´óС£¬ËùÒÔÐèÒª´Ó
tcp Á÷ÖзÖÀë³öÒ»¸ö¸öÓ¦ÓòãÐÒé°ü£¬ÔÚ½â¾ö²ð°üºÍÕ³°üÎÊÌâµÄ¹ý³ÌÖУ¬»áÓöµ½Êý¾Ý°ü²»¹»µÄÇé¿öÏ£¬ÐèÒªµÈ´ýºóÐøÊý¾ÝµÄ¶ÁÈ룬ֱµ½¶Áµ½µÄÊý¾Ý¹¹³ÉÒ»¸öÍêÕûµÄÓ¦ÓòãÐÒé°ü£¬È»ºó°Ñ¾Í¸öÐÒéÕûÌå·µ»Ø¸øÉϲ㣻
ÔÚ·¢ËͺͽÓÊյĹý³ÌÖУ¬ÐèÒªÖ§³Ö´óС²»Ò»ÑùµÄÓ¦ÓòãÊý¾Ý°ü£¨ÁÄÌìÄÚÈÝΪһ¸ö×Ö»òÊÇ 1M µÄ×Ö£©£¬ËùÒÔÕâÀïÐèÒªÒ»¸ö¿ÉÒÔ·¢ËͲð½â´óÓ¦Óòã°üµÄ»º´æ¶ÓÁС£
ΪÁËÂú×ãÒÔÉϹ¦ÄܺÍÒªÇó£¬ÎÒÃÇÉè¼ÆÁË buffer£º
·ÖÅäÓëÊͷŲÉÓù̶¨´æ´¢µ¥Ôª·ÀÖ¹²úÉúÄÚ´æË鯬£»
¶¯Ì¬À©Õ¹µÄË«ÏòÑ»·Á´±í£¨¶ÓÁУ©£»
¶ÔÍâÌṩÁËÁ¬ÐøÊý¾Ý´æÈ¡½Ó¿Ú¡£

tcp ²ð°üÁ÷³Ì
tcp ÊÇÃæÏò×Ö·ûÁ÷µÄ´«Ê䣬tcp ±£Ö¤ÁË´«ÊäÊý¾ÝµÄ˳ÐòÐԺͿɿ¿ÐÔ£¬µ±½ÓÊÕµ½×Ö·ûÁ÷µÄʱºò£¬ÈçºÎ´Ó×Ö·ûÁ÷ÖзÖÀë³öÒ»¶Î¶ÎÉϲãÐÒ飬ÊÇ
tcp ²ð°üÓ¦¸Ã¿¼ÂǵÄÎÊÌâ¡£

ÈçÉÏͼËùʾ£¬Âß¼²ãÐèҪʵÏÖ getProtocolSize ºÍ receiveCallback Á½¸ö½Ó¿Ú£¬Ç°Õßͨ¹ý²ÎÊýÖд«ÈëµÄÊý¾ÝÅжϳöµ±Ç°Ó¦ÓòãÐÒé°ü´óС£¬ºóÕßÊÇ·µ»ØÓ¦ÓòãÐÒé°üµÄ»Øµ÷¡£
µ± socket ¶Áʼþ·¢Éúʱ£¬Ê×ÏÈ´Ó socket ÖжÁÈ¡Êý¾Ý£¬Ð´Èë buffer ÖУ¬È»ºó£¬µ÷ÓÃ
buffer µÄÔ¤¶Á½Ó¿Ú£¨Ö»ÊÇ·µ»Ø¶ÓÁÐÍ·²¿µÄÖ»¶ÁÖ¸Õ룬²¢²»¿½±´Êý¾Ý£©£¬µ÷Óà getProtocolSize
½Ó¿Ú£¬ÓÉÂß¼²ã·µ»ØÓ¦ÓòãÐÒé°ü´óС£¨Ö»ÓÐÓ¦ÓòãÂß¼²ÅÖªµÀ×Ô¼º¸Ãʶ±ðÄÄÖÖÐÒ飩£¬ÔÙ¸ù¾Ý¸Ã´óС£¬´Ó buffer
¶ÓÁÐÖжÁ³öÐÒé°ü£¬×îºóͨ¹ý receiveCallback ·µ»Ø¸øÉϲ㴦Àí¡£
³¤Á¬½Ó±£»î
ÓÉÓÚ tcp ×ÔÉíµÄ¶Ï¿ªÈ·ÈÏ»úÖÆ£¬Èç¹ûÒ»Ìõ tcp Á¬½ÓÖмäÍøÂç¶Ï¿ª£¬´Ëʱ¿Í»§¶ËºÍ·þÎñ¶ËÎïÀíÍøÂçµÄ¶Ï¿ªµ¼ÖÂÁ˿ͻ§¶ËºÍ·þÎñ¶Ë¶¼Ã»Óа취֪ͨ¶Ô·½Á¬½ÓµÄ¶Ï¿ª£¬ÕâÑù£¬·þÎñ¶ËºÍ¿Í»§¶Ë¾Í»á´æÔÚËÀÁ¬½Ó£¬Ôì³É¼ÙÔÚÏߣ¬Õ¼ÓõÄ×ÊÔ´µÃ²»µ½ÓÐЧµÄ»ØÊÕ¡£³¤Á¬½Ó±£»îÖ÷ÒªÓÐÏÂÃæÁ½ÖÖ·½Ê½£º
tcp keepalive£¬Í¨¹ýÉèÖà keepalive ²ÎÊý£¬tcp ÐÒéÕ»»áÔÚ³¬¹ýÒ»¶¨Ê±¼äûÓÐÊý¾Ý½»»¥µÄʱºò£¬·¢ËÍ
keepalive ̽²â°ü£¬Èç¹ûÁ¬½Ó¼¸´Î¶¼Ã»ÓÐÊÕµ½»Ø°ü£¬Ôò¶Ï¿ªÁ¬½Ó¡£ ÓŵãÊÇ£¬tcp ÐÒéÕ»ÌṩµÄ¹¦ÄÜ£¬¸ü¼ÓÎȶ¨£¬²¢ÇÒÕ¼ÓýÏÉٵĴø¿í£»
²ÉÓÃÓ¦ÓòãÐÄÌø°üµÄ·½Ê½£¬¿Í»§¶Ë¶¨Ê±Ïò·þÎñ¶Ë·¢ËÍÐÄÌø°ü£¬·þÎñ¶ËÊÕµ½ÐÄÌø°üºóÁ¢¼´½øÐлذü£¬¿Í»§¶ËÈç¹ûûÓмì²âµ½»Ø°ü£¬Ôò¶Ï¿ªÁ¬½Ó£»·þÎñ¶Ë¼ì²â³¬Ê±»¹Ã»ÓÐÊÕµ½ÐÄÌø°ü£¬Ôò¶Ï¿ªÁ¬½Ó¡£ÓŵãÖ÷ÒªÊÇÓ¦ÓòãÓиÐÖª£¬¿É¿Ø£¬²¢ÇÒ¿ÉÒÔ´øÐ©ÒµÎñÊý¾Ý£¬±ÈÈçʱ¼ä´Á¡£
΢Áij¤Á¬½Ó£¬¿¼Âǵ½¶à¶ËÖ§³Ö£¨android, ios, web µÈ£©£¬¼æÈÝÀϰ汾ʵÏÖ·½Ê½£¬Ó¦ÓòãÐÒéÖ÷ҪʹÓÃ
http£¬ÌṩÁË http-chunk ºÍ http-long-polling£¬Á½ÖÖ http ½ÓÈ뷽ʽ£¬ÕâÑù¾ÍÏÞÖÆÁ˿ͻ§¶ËÉÏ·¢Êý¾Ý£¬ËùÒÔÎÒÃDzÉÓÃÁË·þÎñ¶ËÏ·¢ÐÄÌø£¬ºÍ
keepalive ½áºÏµÄ·½Ê½£¬ÊµÏÖ·þÎñ¶ËºÍ¿Í»§¶ËµÄ±£»î, ÈçÏÂͼ£º
·þÎñ¶Ëͨ¹ý¿ªÆô tcp keepalive ½øÐб£»î£¬µ±Ò»ÌõÁ¬½Ó³¬¹ýÒ»¶¨Ê±¼äûÓл, ·þÎñ¶Ë»á·¢
keepalive °ü£¬Èç¹ûÁ¬Ðø 3 ´Î¶¼Ã»ÊÕµ½»Ø°ü£¬·þÎñ¶Ë¾Í»áÈÏΪÕâÊÇÒ»¸öËÀÁ¬½Ó£¬´Ó¶ø¹Ø±ÕËü£»
¶ø¶ÔÓÚ¿Í»§¶Ë£¬·þÎñ¶Ë»á¶¨Ê±Ï·¢ÐÄÌø°ü£¬¿Í»§¶Ëͨ¹ý¼à²âÐÄÌø°üÀ´Åбðµ±Ç°Á¬½ÓÊÇ·ñ¹¤×÷Õý³££¬Èç¹û²»ÄÜÕý³£ÊÕµ½ÐÄÌø°ü£¬Ôò»áÖØÐ½¨Á¢ÐµÄÁ¬½Ó¡£

ÈÝÁ¿¿ØÖÆ
ÔÚ tcp Á¬½Ó½¨Á¢µ½Í¨ÐŵÄÁ÷³ÌÖУ¬ÎªÁË·ÀֹһЩ¶ñÒâÁ¬½ÓÓë¹¥»÷£¬³¤Á¬½Ó·þÎñ×öÁËÈÝÁ¿¿ØÖÆ£¬Èç¹ûÌåÏÖÔÚÏÂÃæ¼¸¸ö·½Ã棺
¿Í»§¶Ë½¨Á¢ tcp Á¬½Óµ½ tls ÎÕÊÖÔÙµ½·¢³öµÇ¼Êý¾Ý·µ»ØµÇ¼½á¹û£¬Õâ¸ö¹ý³ÌÊÇÁ¬¹áµÄ£¬Èç¹û¿Í»§¶ËÍ£ÔÚÖмäµÄijһ²½¶ø²»ÍùϽøÐУ¬¾Í»áÒ»Ö±Õ¼×Å·þÎñ¶Ë×ÊÔ´£¬Õë¶ÔÕâÖÖÇé¿ö£¬·þÎñ¶ËÔö¼ÓÁ˶¨Ê±¿ØÖÆ£¬ÔÚ
tcp Á¬½ÓÖ®ºó 30s£¬»¹Ã»ÓÐÊÕµ½µÇ¼ÇëÇ󣬷þÎñ¶Ë»áÖ÷¶¯¶Ï¿ªÁ¬½Ó£»
ÔÚ·þÎñÖÐͳ¼ÆÁËÕýÔÚ½øÐÐ tls ÎÕÊÖ£¬ÕýÔÚ½øÐеǼУÑéµÄÁ¬½ÓÊýÁ¿£¬·Ö±ðÉèÖÃÉÏÏÞ£¬·ÀÖ¹µ±Í¬Ê±³öÏÖ´óÁ¿ÇëÇóµÄʱºò£¬¶Ôºó¶Ë·þÎñµÄ³å»÷£»
Ôö¼ÓÁ˻ỰͨÐŹý³ÌÖÐ buffer ÄÚ´æÊ¹ÓÃÁ¿µÄÉÏÏÞ£¬·ÀÖ¹¶Ô¶Ë²»½ÓÊÕÊý¾Ý£¬µ¼Ö·þÎñ¶ËÊý¾Ý»ýѹ£»
Ôö¼Ó ip ͳ¼Æ·þÎñ£¬µ±½¨Á¢Á¬½Óºó£¬»á½«ÐÂÁ¬½ÓµÄ ip µÈÐÅÏ¢·¢Ë͵½ ip ͳ¼Æ·þÎñ£¬¶ÔÕû¸ö·þÎñµÄ¿Í»§¶Ë
ip Çé¿ö×÷ͳ¼Æ¼à¿Ø£¬Ôö¼Ó ip ºÚÃûµ¥¹¦ÄÜ¡£

×Ü ½á
³¤Á¬½Ó·þÎñÊÇ΢ÁĵĻù´¡·þÎñ£¬Îȶ¨ÐÔÓÈÆäÖØÒª£»
ÔÚÎȶ¨ÐԵĻù´¡ÉÏ£¬Í¨¹ý tls ÎÕÊÖÓÅ»¯µÈ£¬²»¶ÏÌá¸ß½¨Á¢Á¬½ÓµÄËÙ¶È£¬¸üºÃµÄÓ¦¶Ô¶ÏÍø£¬ÈõÍøµÈ¸´ÔÓµÄÍâÍø»·¾³£»
ͨ¹ýÖ§³Ö¸ü¶àµÄÓ¦ÓòãÐÒ飬Ìá¸ß¶à¶Ë¶àÉ豸µÄ½ÓÈëÄÜÁ¦£»
ͨ¹ý¼à¿Ø£¬²»¶ÏÍÚ¾òDZÔÚÔÚ°²È«Íþв£¬Í¬Ê±Ô¤·À³£¼ûµÄÍøÂ簲ȫÎÊÌâ¡£
ÕâÆª·ÖÏíÖ÷ÒªÔÚ³¤Á¬½Ó·þÎñµÄÕûÌå¼Ü¹¹£¬Ị̈߳¬ÄÚ´æ·ÖÅäµÈһЩÆÕ±éÎÊÌâ¼¼ÊõÑ¡ÐÍ·½Ãæ½øÐÐÕûÌåÐԵĽéÉÜ£¬Ëæ×ÅÒµÎñµÄ½ÓÈëÓëÓû§µÄÔö³¤£¬³¤Á¬½Ó·þÎñÒ²°éËæ×ÅеÄÌôÕ½£¬ÔÚÎȶ¨ÐÔ£¬¸ß²¢·¢£¬¸ßЧÂÊ£¬°²È«ÐÔ·½ÃæµÄ̽Ë÷ÓëÌá¸ßÓÀԶûÓо¡Í·¡£
×îºó£¬»¶Ó¶Ô·Ö²¼Ê½³¤Á¬½Ó·þÎñ£¬linux ÄÚºËÍøÂçÐÒéÕ»¸ÐÐËȤµÄͬѧһÆð½»Á÷¡£
|