¸üÐÂʱ¼ä:2017Äê12ÔÂ19ÈÕ15ʱ18·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
½»Á÷Ä¿±ê£º
1¡¢ ÊìÏ¤ÍøÕ¾Ñݽø¹ý³ÌÖеĸ÷¸ö½×¶Î¼°¼¼Êõ·½°¸(ÖØÒª)
2¡¢ ÊìϤ´óÐÍÍøÕ¾Öлº´æµÄÓ¦ÓÃ
3¡¢ ÊìϤ³£¼û¸ºÔؾùºâµÄÊÖ¶Î
4¡¢ ÊìϤÄÚ´æÊý¾Ý¿âRedis
http://item.jd.com/1027067140.html
http://item.jd.com/11449803.html
´óÐÍÍøÕ¾¼°Æä¼Ü¹¹µÄÑݽø¹ý³Ì
1¡¢Ê²Ã´ÊÇ´óÐÍÍøÕ¾
·ÃÎÊÁ¿´ó¡¢Êý¾ÝÁ¿´ó¡¢ÒµÎñ¸´ÔӶȸߡ¢·Ö²¼Ê½
ÍøÕ¾ÊÇÓÃÀ´·ÃÎʵ쬷ÃÎÊÁ¿´ó¾ÍÓ¦¸ÃÊÇ´óÐÍÍøÕ¾?!
´óÁ¿µÄÊý¾Ý£¬»òÕß˵º£Á¿Êý¾Ý¡£´ÓÊý¾ÝÖзÖÎöÒµÎñºÍϵͳµÄ¸´ÔÓÐÔ¡£
×ܽ᣺
ÄÇôҪ֧³Öº£Á¿µÄÊý¾ÝºÍ·Ç³£¸ßµÄ²¢·¢Á¿£¬ÄÇôËû¿ÉÄÜÊÇÒ»¸ö·Ö²¼Ê½ÏµÍ³¡£
2¡¢ÍøÕ¾µÄ¼Ü¹¹Ñݽø
2.1¡¢¹¹½¨ÍøÕ¾¼¼ÊõÊÖ¶Î
·¢²¼Ò»¸öÍøÕ¾ÐèÒªÄÄÐ©ÒªËØ?
Ò»¸öÎïÀí»ú¡¢Ò»¸öWEBÈÝÆ÷¡¢Ò»¸öÊý¾Ý¿â
¿ª·¢ÍøÕ¾µÄ¼¼ÊõÊÖ¶Î?
SpringMVC/Spring/Ibatis/JDBC/Mysql

2.2¡¢ÒµÎñϵͳ-µçÉÌÍøÕ¾


l ¸÷¸ö¹¦ÄÜÄ£¿éͨ¹ýJVMÄÚ²¿·½·¨µ÷ÓÃÀ´½øÐн»¸¶
l ·ÃÎÊÊý¾Ý¿âͨ¹ýJDBCµÄ·½Ê½Á´½Ó
2.3¡¢µ¥»ú¸ºÔظ澯¡¢Êý¾Ý¿âÓëÓ¦Ó÷ÖÀë

l Ëæ×ÅÒµÎñÁ¿µÄ·¢Õ¹£¬µ¥Ì¨ÎïÀí»ú²»ÄÜÖ§³Å¡£
l ÖØÐ¹ºÖÃһ̨ÎïÀí»ú£¬½«Êý¾Ý¿â·þÎñÆ÷Ç¨ÒÆ³öÈ¥¡£
2.4¡¢Ó¦Ó÷þÎñÆ÷¸ºÔظ澯¡¢ÈçºÎÈÃÓ¦Ó÷þÎñÆ÷×ßÏò¼¯Èº

l Ó¦Ó÷þÎñÆ÷ѹÁ¦±ä´ó£¬´Óһ̨±ä³ÉÁ½Ì¨¡£
l ËûÃǶ¼ÒÀÀµµ×²ãÊý¾Ý¿â¶ÔÍâÌṩ·þÎñ¡£
l Ó¦ÓøºÔؾùºâÒ»°ãʹÓÃNginx»òÕßapache
ÎÊÌ⣺
1¡¢ Óû§µÄÇëÇóÓ¦¸Ã´òÔÚÄĄ̈ӦÓ÷þÎñÆ÷ÉÏ?(¸ºÔؾùºâ·þÎñ)

2¡¢ Sesssion¹²ÏíµÄÎÊÌâ
½â¾ö£º
1¡¢Ê²Ã´ÊÇsession?
ÔڻỰ¿ªÊ¼Ê±£¬HTTPÐÒéµÄ»á»°»úÖÆ·ÖÅäÒ»¸öΨһµÄ»á»°±êÖ¾(SessionId)£¬Í¨¹ýCookie°ÑÕâ¸ö±êÖ¾¸æËßä¯ÀÀÆ÷£¬ÒÔºóÿ´ÎÇëÇóµÄʱºòä¯ÀÀÆ÷¶¼»á´øÉÏÕâ¸ö±êÖ¾À´¸æËßWeb·þÎñÆ÷ÇëÇóÊÇÊôÓÚÄĸö»á»°µÄ¡£(±ÈÈç±£³ÖµÇ½״̬¡¢¹ºÎï³µÊý¾Ý)
2¡¢ÎªÊ²Ã´ÓÐsession¹²ÏíµÄÎÊÌâ?
Óû§Í¨¹ý¸ºÔؾùºâµÄ·½Ê½£¬Ëæ»ú·ÃÎʵ½·þÎñÆ÷A£¬sessionId¾Í»á´´½¨µ½A·þÎñÆ÷ÉÏ£¬Èç¹û²»×ö´¦Àí¾Í²»Äܱ£Ö¤½ÓÏÂÀ´µÄÿ´ÎÇëÇó¶¼ÂäÔÚA·þÎñÆ÷ÉÏ¡£
·½·¨Ò»£ºÈÃͬÑùµÄseesionIdÿ´Î¶¼´òÔÚһ̨·þÎñÆ÷ÉÏ¡£(å´»úÔõô°ì?)
·½·¨¶þ£ºsession replication ¹²Ïí
·½·¨Èý£ºÊ¹ÓÃcookies±£´æsessionÖеÄÐÅÏ¢

2.5¡¢Êý¾Ý¿âѹÁ¦±ä´ó¡¢¶Áд·ÖÀë

l д²Ù×÷Ö÷Òª×ßÖ÷¿â£¬ÊÂÎïÖеIJéѯҲҪ×ßÖ÷¿â¡£
l ËÑË÷ÒýÇæÒ²ÊÇÒ»¸ö¶Á¿â
1¡¢ËÑË÷Ò»¸öÉÌÆ·µÄÃû³Æ£¬like
2¡¢¸ù¾Ý±»ËÑË÷µÄÊý¾ÝÀ´´´½¨Ë÷Òý(±»ËÑË÷µÄÊý¾Ý±ä»¯Ê±£¬Ë÷ÒýÒ²±ä»¯)
ËÑË÷ÒýÇæÌṩÁËÕ¾ÄÚËÑË÷µÄijЩ³¡¾°¶ÁµÄÎÊÌ⣬ÌṩÁ˸üºÃµÄ²éѯЧ¹û¡£
2.6¡¢ÃÖ²¹¹ØÏµÐÍÊý¾Ý¿âµÄ²»×㣬ÒýÈë·Ö²¼Ê½´æ´¢ÏµÍ³(Redis)
·Ö²¼Ê½Îļþϵͳ¡¢·Ö²¼Ê½Key-ValueϵͳºÍ·Ö²¼Ê½Êý¾Ý¿â

2.7¡¢ ¶Áд·ÖÀëºóÊý¾Ý¿âÓÖÓöµ½Æ¿¾±
Êý¾Ý²ð·ÖÓÐÁ½ÖÖ·½Ê½£¬Ò»¸öÊÇ´¹Ö±²ð·Ö£¬Ò»¸öÊÇˮƽ²ð·Ö¡£´¹Ö±²ð·Ö¾ÍÊǰÑÒ»¸öÊý¾Ý¿âÖв»Í¬ÒµÎñµ¥µÄÊý¾Ý·Öµ½²»Í¬µÄÊý¾Ý¿âÀïÃæ£¬Ë®Æ½²ð·ÖÊǸù¾ÝÒ»¶¨µÄ¹æÔò°ÑͬһҵÎñµ¥ÔªµÄÊý¾Ý²ð·Öµ½¶à¸öÊý¾Ý¿âÖС£
2.7.1¡¢×¨¿âרÓ㬴¹Ö±²ð·Ö

´¹Ö±²ð·Ö´øÀ´µÄÓ°Ï죺
l һЩjoin²Ù×÷»á±äµÃ±È½ÏÀ§ÄÑ£¬ÒòΪÊý¾Ý¿ÉÄÜÒѾÔÚÁ½¸öÊý¾Ý¿âÖÐÁË¡£
ÐèÒªÓ¦ÓûòÕ߯äËû·½°¸½â¾ö
2.7.2¡¢±íÖеÄÊý¾ÝÁ¿±È½Ï´ó£¬Ë®Æ½²ð·Ö

ˮƽ²ð·Ö´øÀ´µÄÓ°Ï죺
l ·ÃÎÊÓû§ÐÅÏ¢µÄÓ¦ÓÃϵͳÐèÒª½â¾ösql·ÓɵÄÎÊÌâ
l Ö÷¼üµÄ´¦ÀíÒ²»á²»Í¬£¬²»ÄÜÒÀ¿¿Êý¾Ý¿âµÄ×ÔÔö³¤ÐòÁÐÁË
l ²éѯ·ÖÒ³µÄÎÊÌâ
l °üº¬´¹Ö±²ð·ÖµÄÓ°Ïì
2.8¡¢·Ö¿â·Ö±íÖ®ºó£¬Ó¦ÓÃÃæ¶ÔеÄÌôÕ½-·þÎñ»¯
Ç°ÃæËù½²µÄ¶Áд·ÖÀë¡¢·Ö²¼Ê½´æ´¢¡¢Êý¾Ý·Ö¿â·Ö±í¶¼ÊÇÔÚ½â¾öÊý¾Ý·½ÃæµÄÎÊÌâ¡£
Ëæ×ÅÓ¦Óõĵķ¢Õ¹£¬Ó¦ÓõŦÄÜ»áÔ½À´Ô½¶à£¬Ó¦ÓÃÔ½À´Ô½´ó¡£ÎÒÃÇÐèÒª¿¼ÂDz»ÈÃÓ¦ÓóÖÐø±ä´ó£¬¾ÍÐèÒª°ÑÓ¦Óò𿪡£
½«Ó¦Óòð·Ö¿ªÀ´¡£
1¡¢ °´ÕÕÒµÎñµÄÌØÐÔ°ÑÓ¦Óòð·Ö£¬(Óû§ÏµÍ³¡¢ÉÌÆ·ÏµÍ³£¬¶©µ¥ÏµÍ³)
2¡¢ °´ÕÕ¹¦ÄܽøÐвð·Ö£¬(Óû§×¢²áϵͳ¡¢Óû§µÇ½ϵͳ¡¢Óû§ÐÅϢϵͳ¡¢ÉÌÆ·Õ¹Ê¾ÏµÍ³¡¢ÉÌÆ·¹ÜÀíϵͳ……)


·þÎñ»¯Ö®ºó£¬Éæ¼°µ½Ó¦ÓÃÓëÓ¦ÓÃÖ®¼äµÄͨÐÅ¡£¼´½ø³ÌÓë½ø³Ì¼äµÄͨÐÅ¡£
Ô¶³Ì¹ý³Ìµ÷ÓÃ(RPC¡¢NettyµÈ)
3¡¢·Ö²¼Ê½ÍøÕ¾½éÉÜ
3.1¡¢·Ö²¼Ê½ÍøÕ¾µÄÕûÌå½á¹¹
ÔÚ·Ö²¼Ê½ÍøÕ¾ÖУ¬ÎÒÃǻὫweb·þÎñÆ÷ºÍÊý¾Ý¿â·þÎñÆ÷×öÕûÌåµÄ¹æ»®£¬²¢·Ç²ÉÓÃijһ̨»úÆ÷×öweb·þÎñÆ÷»òÕßÊý¾Ý¿â·þÎñÆ÷£¬¶øÊDzÉÓü¯ÈºµÄ¼Ü¹¹¡£

3.2¡¢·Ö²¼Ê½ÍøÕ¾ÖеķþÎñ»¯¿ò¼Ü
ÔÚ·Ö²¼Ê½ÍøÕ¾ÖУ¬»á³öÏֺܶàΪÁ˸ºÔؾùºâºÍfailover×öÖ§³Ö¶ø³öÏֵĿò¼Ü£¬»¹ÓÐΪÏîÄ¿½âñî¶ø³öÏֵĴóÁ¿µÄRPC¿ò¼Ü£¬ÀýÈç×öÖ÷±¸µÄkeepalived¡¢×ö·´Ïò´úÀíµÄnginx¡¢×ö¸ºÔؾùºâµÄlvs¡¢×öRPCµÄdubbo¡¢netty¡¢thriftµÈµÈ¡£
NginxÊÇÒ»¸ö×ÔÓÉ¡¢¿ªÔ´¡¢¸ßÐÔÄܼ°ÇáÁ¿¼¶µÄHTTP·þÎñÆ÷¼°·´×ª´úÀí·þÎñÆ÷¡£NginxÒÔÆä¸ßÐÔÄÜ¡¢Îȶ¨¡¢¹¦Äܷḻ¡¢ÅäÖüòµ¥¼°Õ¼ÓÃϵͳ×ÊÔ´ÉÙ¶øÖø³Æ¡£
Nginx ³¬Ô½ Apache µÄ¸ßÐÔÄܺÍÎȶ¨ÐÔ£¬Ê¹µÃ¹úÄÚʹÓà Nginx ×÷Ϊ Web ·þÎñÆ÷µÄÍøÕ¾Ò²Ô½À´Ô½¶à.
KeepalivedµÄ×÷ÓÃÊǼì²âweb·þÎñÆ÷µÄ״̬£¬Èç¹ûÓÐһ̨web·þÎñÆ÷ËÀ»ú£¬»ò¹¤×÷³öÏÖ¹ÊÕÏ£¬Keepalived½«¼ì²âµ½£¬²¢½«ÓйÊÕϵÄweb·þÎñÆ÷´ÓϵͳÖÐÌÞ³ý£¬µ±web·þÎñÆ÷¹¤×÷Õý³£ºóKeepalived×Ô¶¯½«web·þÎñÆ÷¼ÓÈëµ½·þÎñÆ÷ȺÖУ¬ÕâЩ¹¤×÷È«²¿×Ô¶¯Íê³É£¬²»ÐèÒªÈ˹¤¸ÉÉæ£¬ÐèÒªÈ˹¤×öµÄÖ»ÊÇÐÞ¸´¹ÊÕϵÄweb·þÎñÆ÷¡£
LVSµÄÓ¢ÎÄÈ«³ÆÊÇLinux Virtual Server£¬¼´LinuxÐéÄâ·þÎñÆ÷¡£
ÕâЩ¿ò¼Ü»áÔÚ½ÓÏÂÀ´µÄѧϰÖÐÒ»Ò»ÉæÁÔ¡£
RPC(Remote Procedure Call Protocol)£ºÔ¶³Ì¹ý³Ìµ÷ÓÃÐÒ飬ËüÊÇÒ»ÖÖͨ¹ýÍøÂç´ÓÔ¶³Ì¼ÆËã»ú³ÌÐòÉÏÇëÇó·þÎñ£¬¶ø²»ÐèÒªÁ˽âµ×²ãÍøÂç¼¼ÊõµÄÐÒé¡£RPCÐÒé¼Ù¶¨Ä³Ð©´«ÊäÐÒéµÄ´æÔÚ£¬ÈçTCP»òUDP£¬ÎªÍ¨ÐųÌÐòÖ®¼äЯ´øÐÅÏ¢Êý¾Ý¡£ÔÚOSIÍøÂçͨÐÅÄ£ÐÍÖУ¬RPC¿çÔ½ÁË´«Êä²ãºÍÓ¦Óò㡣RPCʹµÃ¿ª·¢°üÀ¨ÍøÂç·Ö²¼Ê½¶à³ÌÐòÔÚÄÚµÄÓ¦ÓóÌÐò¸ü¼ÓÈÝÒס£
RPC²ÉÓÿͻ§»ú/·þÎñÆ÷ģʽ¡£ÇëÇó³ÌÐò¾ÍÊÇÒ»¸ö¿Í»§»ú£¬¶ø·þÎñÌṩ³ÌÐò¾ÍÊÇÒ»¸ö·þÎñÆ÷¡£Ê×ÏÈ£¬¿Í»§»úµ÷Óýø³Ì·¢ËÍÒ»¸öÓнø³Ì²ÎÊýµÄµ÷ÓÃÐÅÏ¢µ½·þÎñ½ø³Ì£¬È»ºóµÈ´ýÓ¦´ðÐÅÏ¢¡£ÔÚ·þÎñÆ÷¶Ë£¬½ø³Ì±£³Ö˯Ãß״ֱ̬µ½µ÷ÓÃÐÅÏ¢µÄµ½´ïΪֹ¡£µ±Ò»¸öµ÷ÓÃÐÅÏ¢µ½´ï£¬·þÎñÆ÷»ñµÃ½ø³Ì²ÎÊý£¬¼ÆËã½á¹û£¬·¢ËÍ´ð¸´ÐÅÏ¢£¬È»ºóµÈ´ýÏÂÒ»¸öµ÷ÓÃÐÅÏ¢£¬×îºó£¬¿Í»§¶Ëµ÷Óýø³Ì½ÓÊÕ´ð¸´ÐÅÏ¢£¬»ñµÃ½ø³Ì½á¹û£¬È»ºóµ÷ÓÃÖ´ÐмÌÐø½øÐС£
3.3¡¢·Ö²¼Ê½ÍøÕ¾ÖеÄÏûÏ¢»úÖÆ
ÔÚ·Ö²¼Ê½µÄÍøÕ¾ÖУ¬ÏûÏ¢»úÖÆ²»¿É»òȱ£¬ÏûÏ¢»úÖÆµÄ³öÏÖ²»½öΪÏîÄ¿µÄ½âñî×öÁ˲»¿ÉÄ¥ÃðµÄ¹²ÏÖ£¬Ò²ÎªÏûÏ¢µÄ´«µÝÌṩÁËÁíÒ»ÖÖ½â¾ö;¾¶¡£
ÔÚ³£ÓõÄÏûÏ¢»úÖÆÖУ¬ActiveMQ£¬RabbitMQµÈ¼òµ¥µÄ»ùÓÚJMS¹æ·¶µÄÏûÏ¢»úÖÆ±»¹ã·ºÓ¦Ó㬶ø×î½ü¼¸Ä꣬һÖÖ·ÇJMSµÄÏûÏ¢»úÖÆÒ²ÔÚ»¥ÁªÍøÊг¡ÉÏáÈÆð£¬ÃûΪkafka¡£
kafkaÔÚ»¥ÁªÍøÖÐ×îΪһÖÖ·ÇJMS¹æ·¶µÄÏûÏ¢»úÖÆ£¬Ó¦ÓÃÔ½À´Ô½¹ã£¬´ËÍ⣬ÔÚ´óÊý¾ÝµÄÉú̬ȦÀkafkaÒ²ÓÐһϯ֮µØ¡£kafkaºÍflume¡¢stormµÄ½áºÏÊÇʱÏÂ×îÁ÷ÐеÄÁ÷ʽ¼ÆËã¿ò¼ÜÖ®Ò»¡£
»º´æÆª

ΪʲôҪ»º´æ?
¼õÉÙÊý¾Ý¿â·ÃÎÊ(¼õÉÙÎļþIO²Ù×÷)
1.1¡¢ ¶¯Ì¬ÄÚÈÝ»º´æ
¶¯Ì¬ÄÚÈÝ»º´æ
½«¶¯Ì¬ÄÚÈݵÄHTMLÊä³ö½á¹û»º´æÆðÀ´(Ò³Ãæ»º´æ)£¬ÔÚËæºóµÄÒ»¶Îʱ¼äÄÚ£¬µ±ÓÐÓû§·ÃÎÊʱ±äÌø¹ýÖØ¸´µÄ¶¯Ì¬ÄÚÈݼÆËã¶øÖ±½ÓÊä³ö¡£
»º´æÐÅÏ¢¿ÉÒÔ±£´æÔÚÎļþϵͳÖУ¬Ò²¿ÉÒÔ±£´æÔÚÄÚ´æÖС£
ÐèҪѰÕÒºÍÅжÏÊÇ·ñ¹ýÆÚ¡£ÐèÒª¸üлº´æ¡£
¶¯Ì¬ÄÚÈÝ»º´æ¼¼Êõ CSI,SSI,ESI½éÉÜ http://my.oschina.net/coldlemon/blog/341269
¶¯Ì¬ÄÚÈݾ²Ì¬»¯
¶¯Ì¬ÄÚÈÝ»º´æ£¬ËäÈ»¿ÉÒÔ±ÜÃâÖØ¸´µÄ¼ÆË㣬µ«ÊÇÿ´Î»¹ÐèÒªµ÷Óö¯Ì¬½Å±¾µÄ½âÊÍÆ÷À´Åжϻº´æÊÇ·ñ¹ýÆÚÒÔ¼°ÈçºÎ¶ÁÈ¡»º´æ£¬ÏûºÄÁ˲»ÉÙʱ¼ä¡£
Ö±½Ó½«ÄÚÈÝÉú³ÉHTMLÎļþ£¬×ö³É¾²Ì¬Ò³Ã棬·µ»Ø¸øä¯ÀÀÆ÷¡£
²»ÊÇËùÓеÄÄÚÈݶ¼ÄÜ×ö³ÉHTML,¸Ã¼¼ÊõÖ÷ҪʹÓÃÔÚCMSµÈÄÚÈݹÜÀíϵͳÉÏ¡£
¾Ö²¿»º´æ
¶ÔÒ³Ãæ¾²Ì¬×ÊÔ´Éú³ÉHTML£¬¶¯Ì¬ÄÚÈÝʹÓÃÒì²½¼ÓÔØ(ajax)µÄ¼¼Êõ¡£
Ŀǰ¸Ã¼¼ÊõʹÓÃÔÚÖ÷Á÷µÄµçÉÌÍøÕ¾ÖС£
1.2¡¢ ä¯ÀÀÆ÷»º´æ
¶ÔÓÚһЩCSSÑùʽ¡¢Í¼Æ¬¡¢½Å±¾µÈ¾²Ì¬×ÊÔ´£¬¸æÖªä¯ÀÀÆ÷»º´æÆðÀ´£¬²»ÒªÖظ´ÇëÇó¡£
ä¯ÀÀÆ÷Ò»°ã»áÔÚÓû§µÄÎļþϵͳÖд´½¨Ò»¸öĿ¼£¬Óû§´æ·Å»º´æÎļþ£¬²¢¸øÃ¿¸ö»º´æÎļþÉÏһЩ±ØÒªµÄ±ê¼Ç£¬±ÈÈç¹ýÆÚʱ¼äµÈ¡£
IE±£´æÔÚ´ÅÅÌ£¬»ðºüÔÚʹÓôÅÅ̵ÄͬʱҲʹÓÃÁËÄڴ棬½«ÃüÖÐÂʽϸߵĻº´æÄÚÈݱ£´æÔÚÄÚ´æ¡£
ä¯ÀÀÆ÷»º´æÔÀí
1¡¢ µ±ä¯ÀÀÆ÷ÏòWeb·þÎñÆ÷ÇëÇóһЩÄÚÈÝÊÇ£¬Web·þÎñÆ÷ÐèÒª¸æËßä¯ÀÀÆ÷ÄÄЩÄÚÈÝ¿ÉÒÔ±»»º´æ¡£
2¡¢ ä¯ÀÀÆ÷½«¿ÉÒÔ±»»º´æµÄÄÚÈÝ»º´æÆðÀ´¡£
3¡¢ µ±Ï´ÎÇëÇóÄÚÈÝʱ£¬ä¯ÀÀÆ÷²»»áÖ±½ÓÇëÇóÄÚÈÝ£¬¶øÊÇѯÎÊWeb·þÎñÆ÷ÊÇ·ñÐèÒª¸üб¾µØ»º´æ¡£
4¡¢ Web·þÎñÆ÷×ö³öÓ¦´ð£¬ÊÇ·ñÐèÒª¸üУ¬ÈçÐèÒª¸üоͽ«×îеÄÄÚÈÝ·µ»Ø¡£
ÈçºÎ±ê¼ÇÄÄЩÄÚÈÝ¿ÉÒÔ±»»º´æ?
1¡¢ÔÚHTTPÏìÓ¦¶¼ÖÐÔö¼Ólast-modified¹Ø¼ü´Ê¼´¿É¡£
2¡¢ä¯ÀÀÆ÷·¢ËÍÇëÇóÊÇ£¬Ð¯´ø£ºIf-modied-sine: {ʱ¼ä}
3¡¢Web·þÎñÆ÷¼ì²éÎļþ×îºóÐ޸ĵÄʱ¼ä£¬ÌرðÊǾ²Ì¬Îļþ£¬Ö»ÐèÒªÅжÏÁ½¸öʱ¼äÊÇ·ñÒ»Ö¡£Èç¹ûûÓÐÐÞ¸Ä Ð¯´ø£ºHTTP/1.1 304 Not Modified
304Òâζ×ÅûÓÐÐ޸ġ£
ÁíÒ»ÖÖ·½·¨£º(ETag)
1¡¢ ÓÉ·þÎñÆ÷¶ËΪÎļþÉú³ÉÒ»¸ö±êʶºÅ £¬·ÅÔÚHTTPÏìӦͷÖÐ
ETag£º“744177-b-21aa21cd232ee34”
2¡¢ ä¯ÀÀÆ÷ÔÚÏ´ÎÇëÇóµÄʱºò£¬Ð¯´øETag
If –node-match: 744177-b-21aa21cd232ee34
3¡¢ Web·þÎñÆ÷ÖØÐ¼ÆËãÎļþµÄETAG£¬È»ºóÓë½ÓÊܵ½µÄETG±È½Ï¡£Èç¹ûͬ£¬¼°·µ»Ø304£¬²»Í¬¾Í·µ»ØÐµÄÄÚÈÝ¡£

ÓÐûÓÐ×îÓŽâ?
Ö±½Ó¸øÎļþ±ê¼ÇExpires,ÊÇ·ñ¹ýÆÚ¡£
¶ÔÓÚ¾²Ì¬ÄÚÈÝ£¬Web·þÎñÆ÷ĬÈÏÇé¿öÏ»ؿªÆôExpires±ê¼Ç£¬ä¯ÀÀÆ÷²»ÐèÒªÖØ¸´ÇëÇó¡£
¹È¸èÈÕÀúµÄCSSÑùʽ±íÉèÖõÄexpires Ϊ1Ä꣬js½Å±¾ÉèÖÃΪ1¸öÔ¡£
Http://www.baidu.com/css/1.css?v=2
Apache·þÎñÆ÷ÈçºÎÉèÖÃjs css ͼƬµÈÔÚ±¾µØ»º´æ
ÅäÖÃÎļþÖдò¿ª¹ýÆÚÀ©Õ¹#LoadModule expires_module modules/mod_expires.so
ÔÚ.htaccessÖмÓÈëExpiresActive On
1.3¡¢ Web·þÎñÆ÷»º´æ
»º´æURLÓ³Éä
½«urlµØÖ·×ª»»³É×ÊԴ·¾¶
www.baidu.com/12306.html à /data/www/12306.html
¾rewriteÖØÐ´µÄµØÖ·Ö¸Ïò¶ÔÓ¦µÄ¾²Ì¬×ÊԴ·¾¶
www.baidu.com/12306.html à /data/www/product/12306.html
¾rewriteÖØÐ´µÄµØÖ·Ö¸Ïò¶ÔÓ¦µÄ¶¯Ì¬×ÊÔ´µØÖ·
www.baidu.com/12306.html à www.baidu.com/?prodcutId=12306
»º´æURL ÖØÐ´µ½Real ServerµÄÕæÊµµØÖ·
www.baidu.com/12306.html à www.back-end.com/?prodcutId=12306
»º´æÏìÓ¦ÄÚÈÝ
»º´æ¾²Ì¬Îļþ
»º´æ±ä¸ü½ÏСµÄ¶¯Ì¬×ÊÔ´
»º´æÓÐЧÆÚ¿ØÖÆ£¬ºÍHTTP»º´æÒ»ÑùµÄÂß¼¡£ÉèÖÃexpire¼´¿É¡£
»º´æ´æ·ÅÔÚÄÄÀï?¿ªÆô´ÅÅÌ»º´æ»òÕßÄڴ滺´æ¡£
»º´æÎļþÃèÊö·û
´óÁ¿¾²Ì¬µÄСÎļþ£¬ÐèÒª´ò¿ª¡£Ã¿¸öÎļþÕ¼ÓÃÒ»¸öÎļþÃèÊö·û¡£
¿ÉÒÔ½«ÎļþÃèÊö·û»º´æÔÚÄÚ´æÖУ¬µ±ÐèÒª·ÃÎÊÕâ¸öÎļþʱ£¬Ö±½Ó¶ÔÓ¦µ½ÎļþÃèÊö·û¡£
ApacheÖйØÓÚÒ³Ãæ»º´æµÄÉèÖÃ
http://www.cnblogs.com/yyyyy5101/articles/1899350.html
1.4¡¢ ·´Ïò´úÀí»º´æ
ÕýÏò´úÀí£º
Óû§Ö÷¶¯Ê¹ÓôúÀí·þÎñ£¬·þÎñÆ÷²»ÖªµÀÓû§ÔÚÄÄÀï¡£Web·þÎñÆ÷Ö»ÖªµÀ´úÀí·þÎñÆ÷»òÕßÍø¹Ø·¢À´µÄÇëÇ󣬲¢²»ÖªµÀÄ»ºó»¹´æÔÚ²Ù×÷Õß
·´Ïò´úÀí£º
·´Ïò´úÀí·þÎñÆ÷µÄÌØµãÓëÕýÏò´úÀíÕýºÃÏà·´£¬Web·þÎñÆ÷Òþ²ØÔÚ´úÀí·þÎñÆ÷Ö®ºó¡£
·´Ïò´úÀíµÄÌØµã
µ÷¶ÈÆ÷°çÑݵÄÊÇÓû§ºÍʵ¼Ê·þÎñÆ÷ÖмäÈ˵ĽÇÉ«£º
1¡¢ÈκζÔÓÚʵ¼Ê·þÎñÆ÷µÄHTTPÇëÇó¶¼±ØÐë¾¹ýµ÷¶ÈÆ÷
2¡¢µ÷¶ÈÆ÷±ØÐëµÈ´ýʵ¼Ê·þÎñÆ÷µÄHTTPÏìÓ¦£¬²¢½«Ëü·´À¡¸øÓû§
ÄÚÈÝ»º´æ
ÕýÏò´úÀí·þÎñÆ÷¿ÉÒÔÉèÖûº´æ£¬±ÈÈçÒ»¸ö»ú¹¹ÄÚ²¿ÍøÂçͨ¹ý´úÀíÉÏÍø£¬Ò»µ©Ä³¸öÓû§·ÃÎʵÄÍøÒ³±»»º´æÔÚ´úÀí·þÎñÆ÷£¬ÄÚ²¿ÍùÀ´µÄÆäËûÓû§¾Í¿ÉÒÔ¿ìËٵĻñµÃÕâ¸öÍøÒ³¡£
·´Ïò´úÀí·þÎñÆ÷ͬÑù¿ÉÒÔ»º´æÄÚÈÝ£¬ËùÓеĻº´æ»úÖÆÊ¹ÓÃÈÔÈ»ÊÇʹÓÃHTTP/1.1ÐÒé¡£ºÍWEB·þÎñÆ÷»º´æ¡¢ä¯ÀÀÆ÷»º´æÒ»Ñù¡£ÔÚÑ¡Ó÷´Ïò´úÀí·þÎñÆ÷ÅäÖü´¿É¡£
Ïê¼ûNginx·´Ïò´úÀíµÄÅäÖÃÒ»Ïî¡£

1.5¡¢Ó¦ÓÃÂß¼»º´æ
½«¶¯Ì¬ÄÚÈÝÖзÃÎÊÊý¾Ý¿âµÄ²Ù×÷£¬ÌáÈ¡µ½ÄÚ´æÊý¾Ý¿âÖУ¬±ÈÈçRedis£¬¼õÉÙÊý¾Ý¿â·ÃÎʵĴÎÊý£¬¼´¼õÉÙÎļþIO²Ù×÷¡£
ʵ¼ÊµÄ²Ù×÷ÖУ¬¿ÉÒÔ½«Óû§»ù´¡ÐÅÏ¢¡¢ÉÌÆ·µÄ»ù´¡ÐÅÏ¢¡¢ÊÕ»õµØÖ·¡¢¹ºÎï³µÊý¾Ý¡¢ÀúÊ·¹ºÂò¼Ç¼£¬±£´æÔÚRedisÖС£
½«´ó×ֶα£´æÔÚMongodb(·Ö²¼Ê½Îĵµ´æ´¢Êý¾Ý¿â)¡£
ÊÇÎÒÃÇÄܹ»×Ô¶¨ÒåµÄ£¬Ïê¼ûRedisÊý¾Ý½á¹¹¼°°¸Àý·ÖÏí
1.6¡¢Êý¾Ý¿â²éѯ»º´æ
µ±ÄãµÄÊý¾Ý¿â´ò¿ªÁËQuery Cache(¼ò³ÆQC)¹¦Äܺó£¬Êý¾Ý¿âÔÚÖ´ÐÐSELECTÓï¾äʱ£¬»á½«²éѯ½á¹û·Åµ½QCÖУ¬µ±ÏÂÒ»´Î´¦ÀíͬÑùµÄSELECTÇëÇóʱ£¬Êý¾Ý¿â¾Í»á´ÓQCÈ¡µÃ½á ¹û£¬¶ø²»ÐèҪȥÊý¾Ý±íÖвéѯ¡£
mysqlµÄcache¹¦ÄܵÄkeyµÄÉú³ÉÔÀíÊÇ£º°ÑselectÓï¾ä°´ÕÕÒ»¶¨µÄhash¹æÔòÉú³ÉΨһµÄkey£¬selectµÄ½á¹ûÉú³Évalue£¬¼´ key=>value¡£
×¢Ò⣬ËùÒÔ¶ÔÓÚcache¶øÑÔ£¬selectÓï¾äÊÇÇø·Ö´óСдµÄ£¬Ò²Çø·Ö¿Õ¸ñµÄ¡£Á½¸öselectÓï¾ä±ØÐëÍêÍêȫȫһÖ£¬²ÅÄܹ»»ñÈ¡µ½Í¬Ò»¸öcache¡£
Éú³ÉcacheÖ®ºó£¬Ö»Òª¸ÃselectÖÐÉæ¼°µ½µÄtableÓÐÈκεÄÊý¾Ý±ä¶¯(insert£¬update£¬delete²Ù×÷µÈ),Ïà¹ØµÄËùÓÐcache¶¼»á±»É¾³ý¡£
Òò´ËÖ»ÓÐÊý¾ÝºÜÉٱ䶯µÄtable£¬ÒýÈëmysql µÄcache²Å½ÏÓÐÒâÒå
1.7¡¢Ç°¶ËÓÅ»¯
1¡¢Éè¼Æ¸ü¼Ó¼òµ¥µÄÍøÒ³£¬Ê±ÆÚ°üº¬½ÏÉÙµÄͼƬºÍ½Å±¾£¬ÎþÉüÃÀ¹ÛºÍ½»»¥
2¡¢½«¶à¸öͼƬºÏ²¢ÎªÒ»¸öÎļþ£¬Ê¹ÓÃCSS±³¾°Æ«ÒƵļ¼Êõ³ÊÏÖ
3¡¢ºÏ²¢JavaScript½Å±¾»òÕßCSSÑùʽ±í£¬¼õÉÙä¯ÀÀÆ÷ÏÂÔØ´ÎÊý
4¡¢³ä·ÖÀûÓÃHTTPÖеÄä¯ÀÀÆ÷Cache²ßÂÔ£¬¼õÉÙÖØ¸´ÏÂÔØ¡£
5¡¢½«ÍøÕ¾×ÊÔ´·Ö²¼ÔÚ¶à¸öÓòÃû֮ϣ¬Ôö¼Óä¯ÀÀÆ÷µÄ²¢·¢ÏÂÔØ¡£
ĬÈÏÇé¿öÏ£¬ä¯ÀÀÆ÷¶ÔÒ»¸öÓòÃûϵÄ×ÊÔ´ÏÂÔØÓв¢·¢Êý¾ÝÏÞÖÆ£¬´Ó2-6²»µÈ¡£
ͨ¹ý½«cssÑùʽ£¬Í¼Æ¬£¬js´úÂë·ÅÔÚ²»Í¬µÄÓòÃûÏ£¬¿ÉÒÔÔö¼Ó²¢·¢¡£
¸ºÔؾùºâƪ
2.1¡¢Web¸ºÔؾùºâ
²»ÄÜÏÁÒ嵨Àí½âΪ·ÖÅ䏸ËùÓÐʵ¼Ê·þÎñÆ÷Ò»Ñù¶àµÄ¹¤×÷Á¿£¬ÒòΪ¶ą̀·þÎñÆ÷µÄ³ÐÔØÄÜÁ¦¸÷²»Ïàͬ£¬Õâ¿ÉÄÜÌåÏÖÔÚÓ²¼þÅäÖá¢ÍøÂç´ø¿íµÄ²îÒ죬Ҳ¿ÉÄÜÒòΪij̨·þÎñÆ÷Éí¼æ¶àÖ°£¬ÎÒÃÇËù˵µÄ“¾ùºâ”£¬Ò²¾ÍÊÇÏ£ÍûËùÓзþÎñÆ÷¶¼²»Òª¹ýÔØ£¬²¢ÇÒÄܹ»×î´ó³ÌÐòµØ·¢»Ó×÷Óá£
½Ó¿ÚÈ˹ÊÊÂ
¹«Ë¾ÓÐÍŶӣ¬¸÷¾¡ÆäÄÜ£¬¹¤×÷Á¿Ôö¼Ó£¬Íâ°ü¡£
Íâ°ü½Ó¿ÚÈ˹ÜÀí£¬½Ó¿ÚÈËÐݼÙÈÎÎñÎÞ·¨¹µÍ¨£¬µ¥µã¹ÊÕÏ¡£ÖúÀí¡£
½Ó¿ÚÈ˹¤×÷Á¿·ÖÅ䣬ÓеÄÍâ°ü¹«Ë¾ÈÎÎñ¶à£¬ÈÎÎñÉÙ£¬ÄÜÁ¦²î£¬ÄÜÁ¦Ç¿¡£(¸ºÔؾùºâ)

2.1.1¡¢HTTPÖØ¶¨Ïò
HttpÖØ¶¨Ïò£¬Ëü¿ÉÒÔ½«HTTPÇëÇó½øÐÐ×ªÒÆ£¬ÔÚWeb¿ª·¢ÖÐÎÒÃǾ³£»áÓÃËüÀ´Íê³É×Ô¶¯Ìø×ª£¬±ÈÈçÓû§µÇ½³É¹¦ºóÌø×ªµ½ÏàÓ¦µÄ¹ÜÀíÒ³Ãæ¡£
ÕâÖÖÖØ¶¨ÏòÍêÈ«ÓÉHTTP¶¨Ò壬²¢ÇÒÓÉHTTP´úÀíºÍWeb·þÎñÆ÷¹²Í¬ÊµÏÖ¡£ÔÀíÈçÏ£º
1¡¢ µ±HTTP´úÀí(ä¯ÀÀÆ÷)ÏòWeb·þÎñÆ÷ÇëÇóij¸öURLºó£¬Web·þÎñÆ÷¿ÉÒÔͨ¹ýHTTPµÄÏìӦͷÐÅÏ¢ÖеÄlocation±ê¼ÇÀ´·µ»ØÒ»¸öеÄURL
2¡¢ HTTP´úÀí(ä¯ÀÀÆ÷)½ÓÊÕµ½ÏìӦͷÖеÄlocation±ê¼Ç£¬»á½Ó×ÅÇëÇólocationÖÐURL£¬±ãÍê³ÉÁË×Ô¶¯Ìø×ª¡£
°¸Àýչʾ£º
http://www.php.net/downloads.php
http://php.net/get/php-7.0.2.tar.bz2/from/a/mirror


³ýÁ˰´ÕÕµØÓò¾Í½ü·ÖÅäÍ⣬»¹¿ÉÒÔʹÓÃÂÖѯ(Round Robin)µÄ·½Ê½ÇëÇó·½Ê½´òµ½²»Í¬µÄÓòÃûÉÏ£¬»¹ÒÔʹÓÃËæ»ú·ÖÅäµÈ²ßÂÔ¡£
Ëæ×ÅÍÌÍÂÂʵÄÔö¼Ó£¬Ëæ»úµ÷¶ÈÒ²»áÖð½¥Ç÷½üÓÚ˳Ðòµ÷¶ÈµÄ¾ùºâЧ¹û¡£
½áÂÛ£º
²»Í¬Óû§¶ÔÕ¾µãÄÚÒ³µÄ·ÃÎÊÉî¶ÈÊDz»Í¬µÄ£¬Ò²ÊÇÎÒÃÇÎÞ·¨¿ØÖƵģ¬Èç´Ë£¬¶ą̀ʵ¼Ê·þÎñÆ÷µÄʵ¼Ê¸ºÔزîÒìÊDz»¿ÉÔ¤Áϵ쬶øÖ÷Õ¾µãÈ´¶Ô´ËÒ»ÎÞËùÖª¡£
ËùÒÔ£¬ÔÚ´ó¶àÊýÇé¿öÏÂͨ¹ýÖØ¶¨ÏòÀ´ÊµÏÖÕû¸öÕ¾µãµÄ¸ºÔؾùºâ²¢²»ÄÇôÈÃÈËÂúÒâ¡£µ«¶ÔÓÚÎļþÏÂÔØ¡¢¹ã¸æÕ¹Ê¾µÈÒ»´ÎÐÔµÄÇëÇó£¬Ö÷Õ¾µãµ÷¶È³ÌÐò¿ÉÒÔÀÎÀΰÑÎÕ¿ØÖÆ£¬Êµ¼Ê·þÎñÆ÷µÄURLÉõÖÁ¿ÉÒÔº¬ÐîµÄÒþ²ØÆðÀ´¡£
ÔÚʵ¼ÊµÄµÄʹÓÃÖУ¬¶ÔÓÚ²»Í¬µÄÓ¦Óó¡¾°£¬ÎÒÃÇÈÔÈ»ÐèÒªÈÏÕæ¿¼ÂÇ»ùÓÚÖØ¶¨ÏòµÄ¸ºÔؾùºâÊÇ·ñÊÊÓã¬È¨ºâ×ªÒÆÇëÇóµÄ¿ªÏúºÍʵ¼ÊÇëÇóµÄ¿ªÏú£¬Ç°ÕߵĿªÏúԽС£¬Ô½ÓÐÒâÒå¡£
2.1.2¡¢DNS¸ºÔؾùºâ
ÎÒÃÇÖªµÀDNS¸ºÔðÌṩÓòÃû½âÎö£¬µ±ÎÒÃÇ·ÃÎÊij¸öÕ¾µãʱ£¬Êµ¼ÊÉÏÐèҪͨ¹ý¸ÃÕ¾µãµÄÓòÃûµÄDNS·þÎñÆ÷À´»ñÈ¡ÓòÃûÖ¸¶¨µÄIPµØÖ·£¬ÕâÒ»¹ý³ÌÖУ¬DNS·þÎñÆ÷Íê³ÉÁËÓòÃûµ½IPµØÖ·µÄÓ³É䣬ÕâÖÖÓ³ÉäÒ²ÊÇÒ»¶Ô¶àµÄ¡£
Õâʱºò£¬DNS±ã³äµ±Á˸ºÔؾùºâµ÷¶ÈÆ÷£¬ÈçͬHTTPµÄÇëÇóÒ»Ñù£¬Æðµ½ÁËÖØ¶¨×ªÒƲßÂÔ¡£
¶à¸öA¼Ç¼
ÔÚDNSµÄ¸÷ÖּǼÀàÐÍÖУ¬A¼Ç¼ÓÃÀ´Ö¸¶¨ÓòÃû¶ÔÓ¦µÄIPµØÖ·¡£
³£¼ûµÄ±È½Ï³ÉÊìµÄDNSϵͳÈçlinuxµÄbind£¬windowsµÄDNS·þÎñ¶¼Ö§³ÖÒ»¸öÓòÃûÖ¸¶¨¶à¸öIPµØÖ·£¬²¢ÇÒ¿ÉÒÔÑ¡ÔñʹÓø÷ÖÖµ÷¶È²ßÂÔ£¬³£¼ûµÄ±ãÊÇRR(Round Robin)·½Ê½¡£
ÏÂͼÖаٶÈʹÓõÄ×î½üµØÓò(¸ù¾ÝÓû§µÄIPµØÖ·ÖÇÄܽâÎö)
ÔÚlinuxÏÂʹÓÃÃüÁ dig baidu.com

Ò»°ãÇé¿öÏ£¬¿ÉÒÔ¸øÓòÃû°ó¶¨¶à¸öA¼Ç¼£¬ÔÚʵ¼ÊµÄʹÓÃÖУ¬½¨ÒéÈçÏÂÅäÖãºÏÈΪÿ¸öÓòÃûÅäÖöà¸öCNAME,È»ºó¸øCNAMEÖ¸¶¨µÄÓòÃûÅäÖÃA¼Ç¼¡£ÕâÑùÖÁÉÙÄܼæ¹ËÁ½¸öÎÊÌ⣺
1¡¢ ÀÏÓû§Èç¹ûÊÕ²ØÁËÄãµÄwww1.baidu.comµÄÓòÃû£¬»¹ÄܼÌÐøÌṩ·þÎñ¡£
2¡¢ µ±ÄãÓµÓкܶàDNS¼Ç¼ʱ£¬ÕâÑù×ö¸üÈÝÒ×ά»¤¡£±ÈÈ磬ÄãÏ£Íû¶à¸ö¶þ¼¶ÓòÃû¶¼Ö¸Ïòͬһ¸öIPµØÖ·£¬ÄÇôÄãÖ»ÐèÒªÌí¼ÓÒ»¸ö±ðÃûÀ´´úÌæIPµØÖ·£¬Ëæºóµ±ÄãÐèÒªÐÞ¸ÄIPµØÖ·£¬Ö»ÐèÒªÐ޸ıðÃûµÄIPµØÖ·¼´¿É¡£

½áÂÛ£º
DNS¸ºÔؾùºâµÄʵÏÖÖ÷ÒªÒÀÀµDNS·þÎñÆ÷µÄÉèÖã¬Èç¹ûÄãµÄÕ¾µãÓµÓÐ×Ô¼ºµÄDNS·þÎñÆ÷£¬ÄÇôÒÔÉÏÉèÖöÔÓÚDNS¹ÜÀíÔ±À´Ëµ£¬²¢²»À§ÄÑ£¬µ«ÊÇ£¬´ó¶àÊýÕ¾µãÈÔȻʹÓõÚÈý·½DNS·þÎñÉÌ£¬ÐÒÔ˵ÄÊÇ£¬ÏÖÔÚÓкܶàDNS·þÎñÉÌÍêȫ֧³Ö¶à¸öA¼Ç¼µÄÂÖѯÉèÖã¬ÎÒÃÇ¿ÉÒÔ¸ù¾ÝÐèÒªÉèÖá£
¶Ô±ÈHTTPÖØ¶¨Ïò
ºÍÇ°ÃæHTTPÖØ¶¨ÏòÏà±È£¬»ùÓÚDNSµÄ·½°¸ÍêÈ«½ÚÊ¡ÁËËùνµÄÖ÷Õ¾µã£¬»òÕß˵DNS·þÎñÆ÷ÒѾ³äµ±ÁËÖ÷Õ¾µãµÄÖ°Ôð¡£
²»¹ý£¬¾¡¹Ü»ùÓÚHTTPÖØ¶¨ÏòµÄ¸ºÔؾùºâϵͳÊܵ½Ö÷Õ¾µãÐÔÄܵÄÖÆÔ¼£¬µ«ÊDz»¿É·ñÈÏÖØ¶¨ÏòµÄ·½°¸Öеĵ÷¶È²ßÂÔ¾ßÓзdz£ºÃµÄÁé»îÐÔ£¬ÍêÈ«¿ÉÒÔͨ¹ýWebÓ¦ÓóÌÐòʵÏÖÈÎÎñºÍÄãÄÜÏëµ½µÄµ÷¶È²ßÂÔ¡£
Ïà±È֮ϣ¬ÎªDNS·þÎñÆ÷Èÿª·¢×Ô¶¨ÒåµÄµ÷¶È²ßÂԾͲ»ÊÇÄÇôÈÝÒ×ÁË£¬µ«ÐÒÔ˵ÄÊÇ£¬ÀàËÆlinux bindÕâÑùµÄDNS·þÎñÈí¼þÌṩÁ˷ḻµÄµ÷¶È²ßÂÔ¹©ÄãÑ¡Ôñ£¬ÆäÖÐ×î³£ÓõľÍÊǸù¾ÝÓû§IPÀ´½øÐÐÖ»ÄܽâÎö(ÉÏÎÄÖеİٶȾÍÊÇÈç´Ë)£¬ÕâÒâζ×ÅDNS·þÎñÆ÷¿ÉÒÔÔÙËùÓпÉÓõÄA¼Ç¼ÖÐѰÕÒÓû§×î½üµÄһ̨·þÎñÆ÷¡£
ÈçºÎÀûÓÃÕâÖÖ²ßÂÔ£¬Íêȫȡ¾öÓÚÒµÎñµÄ×´¿ö£¬¿ÉÒÔΪÓû§±È½Ï¼¯ÖеĵÄһЩ³ÇÊÐÌṩרÓõķþÎñÆ÷£¬½ÓÈë³ÇÊкËÐĽڵ㡣Ҳ¿ÉÒÔΪΪ¸÷»¥ÁªÍøÔËÓªÉÌÍøÂçÖеÄÓû§ÌṩרÓõķþÎñÆ÷(ÁªÍ¨µÄ¹éÁªÍ¨£¬µçÐŵĹéµçÐÅ)£¬²¢½ÓÈëÔËÓªÉ̹ǸÉÍøÂç¡£
2.1.3¡¢·´Ïò´úÀí¸ºÔØ¾ùºâ
¼¸ºõËùÓÐÖ÷Á÷µÄWeb·þÎñÆ÷¶¼ÈÈÖÔÓÚÖ§³Ö»ùÓÚ·´Ïò´úÀíµÄ¸ºÔؾùºâ¡£ËüµÄºËÐŤ×÷¾ÍÊÇת·¢HTTPÇëÇó¡£
Ïà±ÈÇ°ÃæµÄHTTPÖØ¶¨ÏòºÍDNS½âÎö£¬·´Ïò´úÀíµÄµ÷¶ÈÆ÷°çÑݵÄÊÇÓû§ºÍʵ¼Ê·þÎñÆ÷ÖмäÈ˵ĽÇÉ«£º
1¡¢ÈκζÔÓÚʵ¼Ê·þÎñÆ÷µÄHTTPÇëÇó¶¼±ØÐë¾¹ýµ÷¶ÈÆ÷
2¡¢µ÷¶ÈÆ÷±ØÐëµÈ´ýʵ¼Ê·þÎñÆ÷µÄHTTPÏìÓ¦£¬²¢½«Ëü·´À¡¸øÓû§
ÌØÐÔ£º
1¡¢µ÷¶È²ßÂԷḻ¡£ÀýÈç¿ÉÒÔΪ²»Í¬µÄʵ¼Ê·þÎñÆ÷ÉèÖò»Í¬µÄÈ¨ÖØ£¬ÒÔ´ïµ½ÄÜÕß¶àÀ͵ÄЧ¹û¡£
2¡¢¶Ô·´Ïò´úÀí·þÎñÆ÷µÄ²¢·¢´¦ÀíÄÜÁ¦ÒªÇó¸ß£¬ÒòΪËü¹¤×÷ÔÚHTTP²ãÃæ¡£
3¡¢·´Ïò´úÀí·þÎñÆ÷½øÐÐת·¢²Ù×÷±¾ÉíÊÇÐèÒªÒ»¶¨¿ªÏúµÄ£¬±ÈÈç´´½¨Ï̡߳¢Óëºó¶Ë·þÎñÆ÷½¨Á¢TCPÁ¬½Ó¡¢½ÓÊÕºó¶Ë·þÎñÆ÷·µ»ØµÄ´¦Àí½á¹û¡¢·ÖÎöHTTPÍ·²¿ÐÅÏ¢¡¢Óû§¿Õ¼äºÍÄں˿ռäµÄƵ·±Çл»µÈ£¬ËäÈ»Õⲿ·Öʱ¼ä²¢²»³¤£¬µ«Êǵ±ºó¶Ë·þÎñÆ÷´¦ÀíÇëÇóµÄʱ¼ä·Ç³£¶Ìʱ£¬×ª·¢µÄ¿ªÏú¾ÍÏÔµÃÓÈΪͻ³ö¡£ÀýÈçÇëÇó¾²Ì¬Îļþ£¬¸üÊʺÏʹÓÃÇ°Ãæ½éÉܵĻùÓÚDNSµÄ¸ºÔؾùºâ·½Ê½¡£
4¡¢·´Ïò´úÀí·þÎñÆ÷¿ÉÒÔ¼à¿Øºó¶Ë·þÎñÆ÷£¬±ÈÈçϵͳ¸ºÔØ¡¢ÏìӦʱ¼ä¡¢ÊÇ·ñ¿ÉÓá¢TCPÁ¬½ÓÊý¡¢Á÷Á¿µÈ£¬´Ó¶ø¸ù¾ÝÕâЩÊý¾Ýµ÷Õû¸ºÔؾùºâµÄ²ßÂÔ¡£
5¡¢·´Éä´úÀí·þÎñÆ÷¿ÉÒÔÈÃÓû§ÔÚÒ»´Î»á»°ÖÜÆÚÄÚµÄËùÓÐÇëÇóʼÖÕת·¢µ½Ò»Ì¨Ìض¨µÄºó¶Ë·þÎñÆ÷ÉÏ(Õ³ÖͻỰ)£¬ÕâÑùµÄºÃ´¦Ò»ÊDZ£³ÖsessionµÄ±¾µØ·ÃÎÊ£¬¶þÊÇ·ÀÖ¹ºó¶Ë·þÎñÆ÷µÄ¶¯Ì¬Äڴ滺´æµÄ×ÊÔ´ÀË·Ñ
2.1.4¡¢IP¸ºÔؾùºâ
ÒòΪ·´Ïò´úÀí·þÎñÆ÷¹¤×÷ÔÚHTTP²ã£¬Æä±¾ÉíµÄ¿ªÏú¾ÍÒѾÑÏÖØÖÆÔ¼ÁË¿ÉÀ©Õ¹ÐÔ£¬´Ó¶øÒ²ÏÞÖÆÁËËüµÄÐÔÄܼ«ÏÞ¡£ÄÇÄÜ·ñÔÚHTTP²ãÃæÒÔÏÂʵÏÖ¸ºÔؾùºâÄØ?
NAT·þÎñÆ÷:Ëü¹¤×÷ÔÚ´«Êä²ã£¬Ëü¿ÉÒÔÐ޸ķ¢ËÍÀ´µÄIPÊý¾Ý°ü£¬½«Êý¾Ý°üµÄÄ¿±êµØÖ·ÐÞ¸ÄΪʵ¼Ê·þÎñÆ÷µØÖ·¡£

´Ó Linux2.4Äں˿ªÊ¼£¬ÆäÄÚÖõÄNeftilterÄ£¿éÔÚÄÚºËÖÐά»¤×ÅһЩÊý¾Ý°ü¹ýÂË±í£¬ÕâЩ±í°üº¬ÁËÓÃÓÚ¿ØÖÆÊý¾Ý°ü¹ýÂ˵ĹæÔò¡£¿ÉϲµÄÊÇ£¬LinuxÌṩÁËiptablesÀ´¶Ô¹ýÂË±í½øÐвåÈë¡¢Ð޸ĺÍɾ³ýµÈ²Ù×÷¡£¸ü¼ÓÁîÈËÕñ·ÜµÄÊÇ£¬Linux2.6.xÄÚºËÖÐÄÚÖÃÁËIPVSÄ£¿é£¬ËüµÄ¹¤×÷ÐÔÖÊÀàÐÍÓÚNetfilterÄ£¿é£¬²»¹ýËü¸üרעÓÚʵÏÖIP¸ºÔؾùºâ¡£

×ܽ᣺
ʵÑéÖ¤Ã÷ʹÓûùÓÚNATµÄ¸ºÔؾùºâϵͳ¡£×÷Ϊµ÷¶ÈÆ÷µÄNAT·þÎñÆ÷¿ÉÒÔ½«ÍÌÍÂÂÊÌáÉýµ½Ò»¸öеĸ߶ȣ¬¼¸ºõÊÇ·´Ïò´úÀí·þÎñÆ÷µÄÁ½±¶ÒÔÉÏ£¬Õâ´ó¶à¹é¹¦ÓÚÔÚÄÚºËÖнøÐÐÇëÇóת·¢µÄ½ÏµÍ¿ªÏú¡£µ«ÊÇÒ»µ©ÇëÇóµÄÄÚÈݹý´óʱ£¬²»ÂÛÊÇ»ùÓÚ·´Ïò´úÀí»¹ÊÇNAT£¬¸ºÔؾùºâµÄÕûÌåÍÌÍÂÁ¿¶¼²î¾à²»´ó£¬Õâ˵Ã÷¶ÔÓÚһЩ¿ªÏú½Ï´óµÄÄÚÈÝ£¬Ê¹Óüòµ¥µÄ·´Ïò´úÀíÀ´´î½¨¸ºÔؾùºâϵͳÊÇÖµ¿¼Âǵġ£
ʹÓòßÂÔ£º
Ò»¸ö¼òµ¥ÓÐЧµÄ°ì·¨¾ÍÊǽ«»ùÓÚNATµÄ¼¯ÈººÍÇ°ÃæµÄDNS»ìºÏʹÓ㬱ÈÈç5¸ö100Mbps³ö¿Ú¿í´øµÄ¼¯Èº£¬È»ºóͨ¹ýDNSÀ´½«Óû§ÇëÇó¾ùºâµØÖ¸ÏòÕâЩ¼¯Èº£¬Í¬Ê±£¬Ä㻹¿ÉÒÔÀûÓÃDNSÖÇÄܽâÎöʵÏÖµØÓò¾Í½ü·ÃÎÊ¡£ÕâÑùµÄÅäÖöÔÓÚ´ó¶àÊýÒµÎñÊÇ×ã¹»ÁË£¬µ«ÊǶÔÓÚÌṩÏÂÔØ»òÊÓÆµµÈ·þÎñµÄ´ó¹æÄ£Õ¾µã£¬NAT·þÎñÆ÷»¹ÊDz»¹»³öÉ«
2.1.5¡¢Ö±½Ó·ÓÉ
NATÊǹ¤×÷ÔÚÍøÂç·Ö²ãÄ£Ð͵Ĵ«Êä²ã(µÚËIJã)£¬¶øÖ±½Ó·ÓÉÊǹ¤×÷ÔÚÊý¾ÝÁ´Â·²ã(µÚ¶þ²ã)£¬Ã²ËƸüŒÅЩ¡£Ëüͨ¹ýÐÞ¸ÄÊý¾Ý°üµÄÄ¿±êMACµØÖ·(ûÓÐÐÞ¸ÄÄ¿±êIP)£¬½«Êý¾Ý°üת·¢µ½Êµ¼Ê·þÎñÆ÷ÉÏ£¬²»Í¬µÄÊÇ£¬Êµ¼Ê·þÎñÆ÷µÄÏìÓ¦Êý¾Ý°ü½«Ö±½Ó·¢Ë͸ø¿Í»§¶Ë£¬¶ø²»¾¹ýµ÷¶ÈÆ÷¡£

2.1.6¡¢IPËíµÀ
»ùÓÚIPËíµÀµÄÇëÇóת·¢»úÖÆ£º½«µ÷¶ÈÆ÷ÊÕµ½µÄIPÊý¾Ý°ü·â×°ÔÚÒ»¸öеÄIPÊý¾Ý°üÖУ¬×ª½»¸øÊµ¼Ê·þÎñÆ÷£¬È»ºóʵ¼Ê·þÎñÆ÷µÄÏìÓ¦Êý¾Ý°ü¿ÉÒÔÖ±½Óµ½´ïÓû§¶Ë¡£Ä¿Ç°Linux´ó¶àÖ§³Ö£¬¿ÉÒÔÓÃLVSÀ´ÊµÏÖ£¬³ÆÎªLVS-TUN£¬ÓëLVS-DR²»Í¬µÄÊÇ£¬Êµ¼Ê·þÎñÆ÷¿ÉÒԺ͵÷¶ÈÆ÷²»ÔÚͬһ¸öWANtÍø¶Î£¬µ÷¶ÈÆ÷ͨ¹ý IPËíµÀ¼¼ÊõÀ´×ª·¢ÇëÇóµ½Êµ¼Ê·þÎñÆ÷£¬ËùÒÔʵ¼Ê·þÎñÆ÷Ò²±ØÐëÓµÓкϷ¨µÄIPµØÖ·¡£
×ÜÌåÀ´Ëµ£¬LVS-DRºÍLVS-TUN¶¼ÊʺÏÏìÓ¦ºÍÇëÇ󲻶ԳƵÄWeb·þÎñÆ÷£¬ÈçºÎ´ÓËüÃÇÖÐ×ö³öÑ¡Ôñ£¬È¡¾öÓÚÄãµÄÍøÂ粿ÊðÐèÒª£¬ÒòΪLVS-TUN¿ÉÒÔ½«Êµ¼Ê·þÎñÆ÷¸ù¾ÝÐèÒª²¿ÊðÔÚ²»Í¬µÄµØÓò£¬²¢ÇÒ¸ù¾Ý¾Í½ü·ÃÎʵÄÔÔòÀ´×ªÒÆÇëÇó£¬ËùÒÔÓÐÀàËÆÕâÖÖÐèÇóµÄ£¬¾ÍÓ¦¸ÃÑ¡ÔñLVS-TUN¡£
2.1.7¡¢¸ºÔؾùºâ×ܽá
l HTTPÖØ¶¨Ïò¸ºÔؾùºâ£¬Í¨¹ýHTTPÐÒé½øÐÐת·¢£¬³£Óõļ¼ÊõµãÊÇÒ»´ÎÐÔÏÂÔØ¡£·ÖÅä²ßÂÔ×Ô¼º¶¨Òå¡£
l DNS¸ºÔؾùºâ£¬Í¨¹ýDNS·þÎñÆ÷¶ÔÓòÃû½øÐнâÎö£¬°´ÕÕÒ»¶¨µÄ·ÖÅä²ßÂÔ½øÐзÖÅ䣬Èç¾Í½ü·ÖÅäºÍÂÖѯ·ÖÅä¡£Áé»îÐÔûÓÐHTTPÖØ¶¨Ïò¸ºÔؾùºâ¸ß¡£
l ·´Ïò´úÀí¸ºÔØ¾ùºâ£¬ÊÇͨ¹ýÒ»×é»ùÓÚWeb·þÎñÆ÷ÓëÓû§Ö®¼äµÄ·þÎñÆ÷À´½øÐеģ¬¿ÉÒÔÅäÖþ²Ì¬ºÍ¶¯Ì¬Á½ÖÖ²ßÂÔ·½Ê½À´ÊµÏÖ¸ºÔؾùºâ¡£Ò»°ã»áÓöµ½ð¤ÖͻỰµÄÎÊÌ⣬ÐèÒª¿¼ÂÇÊÇ·ñͨ¹ýʵÏÖð¤ÖͻỰÀ´Ç¨¾ÍϵͳµÄÌØÊâÐèÇ󣬿ÉÒÔ¿¼ÂÇʹÓÃcookie¡¢·Ö²¼Ê½session¡¢·Ö²¼Ê½»º´æµÄ¼¼ÊõÊֶΣ¬Èúó¶Ë·þÎñÆ÷µÄÓ¦Óþ¡Á¿Óë±¾µØÎ޹ء£
l IP¸ºÔؾùºâ(DNAT¶Ë¿ÚÓ³Éä)£¬Í¨¹ýÐÞ¸ÄÊý¾Ý°üÇëÇóת·¢µÄIPµØÖ·£¬±ÜÃâÍøÂçÊý¾Ý°ü½øÈëÓû§½ø³Ì£¬Ö±½ÓÔÚLinuxÄں˽׶ξÍת·¢µ½Êµ¼Ê·þÎñÆ÷ÉÏ¡£ÊÕµ½Ê±ºò·þÎñµÄ·´À¡Ö®ºó£¬ÔÙÐ޸ķµ»ØÊý¾Ý°üµÄµÄIPµØÖ·½«·µ»ØÊý¾Ý°üÖ´ÐÐÓû§µÄÕæÕýÇëÇó¡£³£¼ûµÄ¼¼ÊõÊÖ¶ÎÊÇLinuxÄÚºËÄ£¿éNetFilter¡£³£ÓõĿò¼Ü¾ÍÊÇLVS£¬LVS²»½ö¿ÉÒÔÓÃÀ´×öIP¸ºÔؾùºâ£¬»¹¿ÉÒÔʹÓÃÓÃÀ´×öÖ±½Ó·ÓɺÍIPËíµÀ¡£
l Ö±½Ó·ÓÉ£¬Í¨¹ýÐÞ¸ÄÊý¾Ý°üµÄÄ¿±êMACµØÖ·£¬½«Êµ¼Ê·þÎñÆ÷µÄÏìÓ¦Êý¾Ý°ü½«Ö±½Ó·¢Ë͸øÓû§¶Ë£¬¶ø²»¾¹ýµ÷¶ÈÆ÷¡£ÔÚLVS¿ò¼ÜÖнÐ×öLVS-DR¡£Ö±½Ó·ÓÉÊÇ»ùÓÚIP±ðÃûµÄʵÏÖ¡£
l IPËíµÀ(IP Tunneling),¼òµ¥µÄ˵£¬Ëü¼Û¸ñµ÷¶ÈÆ÷ÊÕµ½µÄIPÊý¾Ý°ü·â×°ÔÚÒ»¸öеÄIPÊý¾Ý°üÖУ¬×ª½»¸øÊµ¼Ê·þÎñÆ÷£¬È»ºóʵ¼Ê·þÎñÆ÷µÄÏìÓ¦Êý¾Ý°ü¿ÉÒÔÖ±½Óµ½´ï¿Í»§¶Ë¡£
2.1.8¡¢¸ºÔؾùºâ²ßÂÔ×ܽá
1¡¢ÂÖѾùºâ(Round Robin)£ºÃ¿Ò»´ÎÀ´×ÔÍøÂçµÄÇëÇóÂÖÁ÷·ÖÅ䏸ÄÚ²¿ÖеķþÎñÆ÷£¬´Ó1ÖÁNÈ»ºóÖØÐ¿ªÊ¼¡£´ËÖÖ¾ùºâËã·¨ÊʺÏÓÚ·þÎñÆ÷×éÖеÄËùÓзþÎñÆ÷¶¼ÓÐÏàͬµÄÈíÓ²¼þÅäÖò¢ÇÒÆ½¾ù·þÎñÇëÇóÏà¶Ô¾ùºâµÄÇé¿ö¡£
2¡¢È¨ÖØÂÖѾùºâ(Weighted Round Robin)£º¸ù¾Ý·þÎñÆ÷µÄ²»Í¬´¦ÀíÄÜÁ¦£¬¸øÃ¿¸ö·þÎñÆ÷·ÖÅ䲻ͬµÄȨֵ£¬Ê¹ÆäÄܹ»½ÓÊÜÏàӦȨֵÊýµÄ·þÎñÇëÇó¡£ÀýÈ磺·þÎñÆ÷AµÄȨֵ±»Éè¼Æ³É1£¬BµÄȨֵÊÇ3£¬CµÄȨֵÊÇ6£¬Ôò·þÎñÆ÷A¡¢B¡¢C½«·Ö±ð½ÓÊܵ½10%¡¢30%¡¢60%µÄ·þÎñÇëÇó¡£´ËÖÖ¾ùºâËã·¨ÄÜÈ·±£¸ßÐÔÄܵķþÎñÆ÷µÃµ½¸ü¶àµÄʹÓÃÂÊ£¬±ÜÃâµÍÐÔÄܵķþÎñÆ÷¸ºÔعýÖØ¡£
3¡¢Ëæ»ú¾ùºâ(Random)£º°ÑÀ´×ÔÍøÂçµÄÇëÇóËæ»ú·ÖÅ䏸ÄÚ²¿ÖеĶà¸ö·þÎñÆ÷¡£
4¡¢È¨ÖØËæ»ú¾ùºâ(Weighted Random)£º´ËÖÖ¾ùºâËã·¨ÀàËÆÓÚÈ¨ÖØÂÖÑËã·¨£¬²»¹ýÔÚ´¦ÀíÇëÇó·Öµ£Ê±ÊǸöËæ»úÑ¡ÔñµÄ¹ý³Ì¡£
5¡¢ÏìÓ¦ËٶȾùºâ(Response Time)£º¸ºÔؾùºâÉ豸¶ÔÄÚ²¿¸÷·þÎñÆ÷·¢³öÒ»¸ö̽²âÇëÇó(ÀýÈçPing)£¬È»ºó¸ù¾ÝÄÚ²¿Öи÷·þÎñÆ÷¶Ô̽²âÇëÇóµÄ×î¿ìÏìӦʱ¼äÀ´¾ö¶¨ÄÄһ̨·þÎñÆ÷À´ÏìÓ¦¿Í»§¶ËµÄ·þÎñÇëÇó¡£´ËÖÖ¾ùºâËã·¨ÄܽϺõķ´Ó³·þÎñÆ÷µÄµ±Ç°ÔËÐÐ״̬£¬µ«Õâ×î¿ìÏìӦʱ¼ä½ö½öÖ¸µÄÊǸºÔؾùºâÉ豸Óë·þÎñÆ÷¼äµÄ×î¿ìÏìӦʱ¼ä£¬¶ø²»Êǿͻ§¶ËÓë·þÎñÆ÷¼äµÄ×î¿ìÏìӦʱ¼ä¡£
6¡¢×îÉÙÁ¬½ÓÊý¾ùºâ(Least Connection)£º¿Í»§¶ËµÄÿһ´ÎÇëÇó·þÎñÔÚ·þÎñÆ÷Í£ÁôµÄʱ¼ä¿ÉÄÜ»áÓнϴóµÄ²îÒì£¬Ëæ×Ź¤×÷ʱ¼ä¼Ó³¤£¬Èç¹û²ÉÓüòµ¥µÄÂÖÑ»òËæ»ú¾ùºâËã·¨£¬Ã¿Ò»Ì¨·þÎñÆ÷ÉϵÄÁ¬½Ó½ø³Ì¿ÉÄÜ»á²úÉú¼«´óµÄ²»Í¬£¬²¢Ã»ÓÐ´ïµ½ÕæÕýµÄ¸ºÔؾùºâ¡£×îÉÙÁ¬½ÓÊý¾ùºâËã·¨¶ÔÄÚ²¿ÖÐÐè¸ºÔØµÄÿһ̨·þÎñÆ÷¶¼ÓÐÒ»¸öÊý¾Ý¼Ç¼£¬¼Ç¼µ±Ç°¸Ã·þÎñÆ÷ÕýÔÚ´¦ÀíµÄÁ¬½ÓÊýÁ¿£¬µ±ÓÐеķþÎñÁ¬½ÓÇëÇóʱ£¬½«°Ñµ±Ç°ÇëÇó·ÖÅ䏸Á¬½ÓÊý×îÉٵķþÎñÆ÷£¬Ê¹¾ùºâ¸ü¼Ó·ûºÏʵ¼ÊÇé¿ö£¬¸ºÔظü¼Ó¾ùºâ¡£´ËÖÖ¾ùºâËã·¨Êʺϳ¤Ê±´¦ÀíµÄÇëÇó·þÎñ£¬ÈçFTP¡£
7¡¢´¦ÀíÄÜÁ¦¾ùºâ£º´ËÖÖ¾ùºâËã·¨½«°Ñ·þÎñÇëÇó·ÖÅ䏸ÄÚ²¿Öд¦Àí¸ººÉ(¸ù¾Ý·þÎñÆ÷CPUÐͺš¢CPUÊýÁ¿¡¢ÄÚ´æ´óС¼°µ±Ç°Á¬½ÓÊýµÈ»»Ëã¶ø³É)×îÇáµÄ·þÎñÆ÷£¬ÓÉÓÚ¿¼Âǵ½ÁËÄÚ²¿·þÎñÆ÷µÄ´¦ÀíÄÜÁ¦¼°µ±Ç°ÍøÂçÔËÐÐ×´¿ö£¬ËùÒÔ´ËÖÖ¾ùºâËã·¨Ïà¶ÔÀ´Ëµ¸ü¼Ó¾«È·£¬ÓÈÆäÊʺÏÔËÓõ½µÚÆß²ã(Ó¦Óòã)¸ºÔؾùºâµÄÇé¿öÏ¡£
8¡¢DNSÏìÓ¦¾ùºâ(Flash DNS)£ºÔÚInternetÉÏ£¬ÎÞÂÛÊÇHTTP¡¢FTP»òÊÇÆäËüµÄ·þÎñÇëÇ󣬿ͻ§¶ËÒ»°ã¶¼ÊÇͨ¹ýÓòÃû½âÎöÀ´ÕÒµ½·þÎñÆ÷È·ÇеÄIPµØÖ·µÄ¡£Ôڴ˾ùºâË㷨ϣ¬·Ö´¦ÔÚ²»Í¬µØÀíλÖõĸºÔؾùºâÉ豸ÊÕµ½Í¬Ò»¸ö¿Í»§¶ËµÄÓòÃû½âÎöÇëÇ󣬲¢ÔÚͬһʱ¼äÄÚ°Ñ´ËÓòÃû½âÎö³É¸÷×ÔÏà¶ÔÓ¦·þÎñÆ÷µÄIPµØÖ·(¼´Óë´Ë¸ºÔؾùºâÉ豸ÔÚͬһλµØÀíλÖõķþÎñÆ÷µÄIPµØÖ·)²¢·µ»Ø¸ø¿Í»§¶Ë£¬Ôò¿Í»§¶Ë½«ÒÔ×îÏÈÊÕµ½µÄÓòÃû½âÎöIPµØÖ·À´¼ÌÐøÇëÇó·þÎñ£¬¶øºöÂÔÆäËüµÄIPµØÖ·ÏìÓ¦¡£ÔÚÖÖ¾ùºâ²ßÂÔÊʺÏÓ¦ÓÃÔÚÈ«¾Ö¸ºÔؾùºâµÄÇé¿öÏ£¬¶Ô±¾µØ¸ºÔؾùºâÊÇûÓÐÒâÒåµÄ¡£
·þÎñ¹ÊÕϵļì²â·½Ê½ºÍÄÜÁ¦£º
1¡¢PingÕì²â£ºÍ¨¹ýpingµÄ·½Ê½¼ì²â·þÎñÆ÷¼°ÍøÂçϵͳ״¿ö£¬´ËÖÖ·½Ê½¼òµ¥¿ìËÙ£¬µ«Ö»ÄÜ´óÖ¼ì²â³öÍøÂç¼°·þÎñÆ÷ÉϵIJÙ×÷ϵͳÊÇ·ñÕý³££¬¶Ô·þÎñÆ÷ÉϵÄÓ¦Ó÷þÎñ¼ì²â¾ÍÎÞÄÜΪÁ¦ÁË¡£
2¡¢TCP OpenÕì²â£ºÃ¿¸ö·þÎñ¶¼»á¿ª·Åij¸öͨ¹ýTCPÁ¬½Ó£¬¼ì²â·þÎñÆ÷ÉÏij¸öTCP¶Ë¿Ú(ÈçTelnetµÄ23¿Ú£¬HTTPµÄ80¿ÚµÈ)ÊÇ·ñ¿ª·ÅÀ´ÅжϷþÎñÊÇ·ñÕý³£¡£
3¡¢HTT PURLÕì²â£º±ÈÈçÏòHTTP·þÎñÆ÷·¢³öÒ»¸ö¶Ômain.htmlÎļþµÄ·ÃÎÊÇëÇó£¬Èç¹ûÊÕµ½´íÎóÐÅÏ¢£¬ÔòÈÏΪ·þÎñÆ÷³öÏÖ¹ÊÕÏ¡£
2.2¡¢LVS¸ºÔؾùºâ
2.2.1¡¢LVSÊÇʲô
1¡¢LVSµÄÓ¢ÎÄÈ«³ÆÊÇLinux Virtual Server£¬¼´LinuxÐéÄâ·þÎñÆ÷¡£
2¡¢ËüÊÇÎÒÃǹú¼ÒµÄÕÂÎÄáÔ²©Ê¿µÄÒ»¸ö¿ªÔ´ÏîÄ¿¡£
2.2.2¡¢LVSÄܸÉʲô
1¡¢ LVSÖ÷ÒªÓÃÓÚ¶à·þÎñÆ÷µÄ¸ºÔؾùºâ¡£
2¡¢ Ëü¹¤×÷ÔÚÍøÂç²ã£¬¿ÉÒÔʵÏÖ¸ßÐÔÄÜ£¬¸ß¿ÉÓõķþÎñÆ÷¼¯Èº¼¼Êõ¡£
3¡¢ Ëü¿É°ÑÐí¶àµÍÐÔÄܵķþÎñÆ÷×éºÏÔÚÒ»ÆðÐγÉÒ»¸ö³¬¼¶·þÎñÆ÷¡£
4¡¢ ËüÅäÖ÷dz£¼òµ¥£¬ÇÒÓжàÖÖ¸ºÔؾùºâµÄ·½·¨¡£
5¡¢ ËüÎȶ¨¿É¿¿£¬¼´Ê¹ÔÚ¼¯ÈºµÄ·þÎñÆ÷ÖÐij̨·þÎñÆ÷ÎÞ·¨Õý³£¹¤×÷£¬Ò²²»Ó°ÏìÕûÌåЧ¹û¡£
6¡¢ ¿ÉÀ©Õ¹ÐÔÒ²·Ç³£ºÃ¡£
2.2.3¡¢NginxºÍlvs×÷¶Ô±ÈµÄ½á¹û
1¡¢nginx¹¤×÷ÔÚÍøÂçµÄÓ¦Óò㣬Ö÷Òª×ö·´Ïò´úÀí;lvs¹¤×÷ÔÚÍøÂç²ã£¬Ö÷Òª×ö¸ºÔؾùºâ¡£NginxҲͬÑùÄܳÐÊܸܺ߸ºÔØÇÒÎȶ¨£¬µ«¸ºÔضȺÍÎȶ¨¶È²»¼°lvs¡£
2¡¢nginx¶ÔÍøÂçµÄÒÀÀµ½ÏС£¬lvs¾Í±È½ÏÒÀÀµÓÚÍøÂç»·¾³¡£
3¡¢ÔÚʹÓÃÉÏ£¬Ò»°ã×îǰ¶ËËù²ÉÈ¡µÄ²ßÂÔÓ¦ÊÇlvs¡£ nginx¿É×÷Ϊlvs½Úµã»úÆ÷ʹÓá£
2.2.4¡¢¸ºÔؾùºâ»úÖÆ
Ç°ÃæÎÒÃÇ˵ÁËLVSÊǹ¤×÷ÔÚÍøÂç²ã¡£Ïà¶ÔÓÚÆäËü¸ºÔؾùºâµÄ½â¾ö°ì·¨£¬ËüµÄЧÂÊÊǷdz£¸ßµÄ¡£LVSµÄͨ¹ý¿ØÖÆIPÀ´ÊµÏÖ¸ºÔؾùºâ¡£IPVSÊÇÆä¾ßÌåµÄʵÏÖÄ£¿é¡£IPVSµÄÖ÷Òª×÷Ó㺰²×°ÔÚDirector ServerÉÏÃæ£¬ÔÚDirector ServerÐéÄâÒ»¸ö¶ÔÍâ·ÃÎʵÄIP(VIP)¡£Óû§·ÃÎÊVIP£¬µ½´ïDirector Server£¬Director Server¸ù¾ÝÒ»¶¨µÄ¹æÔòÑ¡ÔñÒ»¸öReal Server£¬´¦ÀíÍê³ÉºóÈ»ºó·µ»Ø¸ø¿Í»§¶ËÊý¾Ý¡£ÕâЩ²½Öè²úÉúÁËһЩ¾ßÌåµÄÎÊÌ⣬±ÈÈçÈçºÎÑ¡Ôñ¾ßÌåµÄReal Server£¬Real ServerÈç¹û·µ»Ø¸ø¿Í»§¶ËÊý¾ÝµÈµÈ¡£IPVSΪ´ËÓÐÈýÖÖ»úÖÆ£º
1. VS/NAT(Virtual Server via Network Address Translation)£¬¼´ÍøÂçµØÖ··×ª¼¼ÊõʵÏÖÐéÄâ·þÎñÆ÷¡£
µ±ÇëÇóÀ´µ½Ê±£¬Diretor serverÉÏ´¦ÀíµÄ³ÌÐò½«Êý¾Ý±¨ÎÄÖеÄÄ¿±êµØÖ·(¼´ÐéÄâIPµØÖ·)¸Ä³É¾ßÌåµÄij̨Real Server,¶Ë¿ÚÒ²¸Ä³ÉReal ServerµÄ¶Ë¿Ú£¬È»ºó°Ñ±¨ÎÄ·¢¸øReal Server¡£Real Server´¦ÀíÍêÊý¾Ýºó£¬ÐèÒª·µ»Ø¸øDiretor Server£¬È»ºóDiretor server½«Êý¾Ý°üÖеÄÔ´µØÖ·ºÍÔ´¶Ë¿Ú¸Ä³ÉVIPµÄµØÖ·ºÍ¶Ë¿Ú£¬×îºó°ÑÊý¾Ý·¢ËͳöÈ¥¡£ÓÉ´Ë¿ÉÒÔ¿´³ö£¬Óû§µÄÇëÇóºÍ·µ»Ø¶¼Òª¾¹ýDiretor Server£¬Èç¹ûÊý¾Ý¹ý¶à£¬Diretor Server¿Ï¶¨»á²»¿°Öظº¡£

2. VS/TUN(Virtual Server via IP Tunneling),¼´IPËíµÀ¼¼ÊõʵÏÖÐéÄâ·þÎñÆ÷¡£
IPËíµÀ(IP tunneling)Êǽ«Ò»¸öIP±¨ÎÄ·â×°ÔÚÁíÒ»¸öIP±¨Îĵļ¼Êõ£¬Õâ¿ÉÒÔʹµÃÄ¿±êΪһ¸öIPµØÖ·µÄÊý¾Ý±¨ÎÄÄܱ»·â×°ºÍת·¢µ½ÁíÒ»¸öIPµØÖ·¡£IPËíµÀ¼¼ÊõÒà³ÆÎªIP·â×°¼¼Êõ(IP encapsulation)¡£Ëü¸úVS/NAT»ù±¾Ò»Ñù£¬µ«ÊÇReal serverÊÇÖ±½Ó·µ»ØÊý¾Ý¸ø¿Í»§¶Ë£¬²»ÐèÒª¾¹ýDiretor server,Õâ´ó´ó½µµÍÁËDiretor serverµÄѹÁ¦¡£
3. VS/DR(Virtual Server via Direct Routing)£¬¼´ÓÃÖ±½Ó·Óɼ¼ÊõʵÏÖÐéÄâ·þÎñÆ÷¡£
¸úÇ°ÃæÁ½ÖÖ·½Ê½£¬ËüµÄ±¨ÎÄת·¢·½·¨ÓÐËù²»Í¬£¬VS/DRͨ¹ý¸ÄдÇëÇó±¨ÎĵÄMACµØÖ·£¬½«ÇëÇó·¢Ë͵½Real Server£¬¶øReal Server½«ÏìÓ¦Ö±½Ó·µ»Ø¸ø¿Í»§£¬ÃâÈ¥ÁËVS/TUNÖеÄIPËíµÀ¿ªÏú¡£ÕâÖÖ·½Ê½ÊÇÈýÖÖ¸ºÔص÷¶È»úÖÆÖÐÐÔÄÜ×î¸ß×îºÃµÄ£¬µ«ÊDZØÐëÒªÇóDirector ServerÓëReal Server¶¼ÓÐÒ»¿éÍø¿¨Á¬ÔÚͬһÎïÀíÍø¶ÎÉÏ¡£

2.2.5¡¢LVSÅäÖÃ
CentOS 6.3ϲ¿ÊðLVS(NAT)+keepalivedʵÏÖ¸ßÐÔÄܸ߿ÉÓøºÔؾùºâ
http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html
2.3¡¢Nginx·´Ïò´úÀí
2.3.1¡¢Nginx¼ò½é
NginxÊÇÒ»¸ö×ÔÓÉ¡¢¿ªÔ´¡¢¸ßÐÔÄܼ°ÇáÁ¿¼¶µÄHTTP·þÎñÆ÷¼°·´×ª´úÀí·þÎñÆ÷¡£NginxÒÔÆä¸ßÐÔÄÜ¡¢Îȶ¨¡¢¹¦Äܷḻ¡¢ÅäÖüòµ¥¼°Õ¼ÓÃϵͳ×ÊÔ´ÉÙ¶øÖø³Æ¡£
Nginx ³¬Ô½ Apache µÄ¸ßÐÔÄܺÍÎȶ¨ÐÔ£¬Ê¹µÃ¹úÄÚʹÓà Nginx ×÷Ϊ Web ·þÎñÆ÷µÄÍøÕ¾Ò²Ô½À´Ô½¶à.
2.3.2¡¢»ù´¡¹¦ÄÜ
·´Ïò´úÀí¼ÓËÙ£¬¼òµ¥µÄ¸ºÔؾùºâºÍÈÝ´í;
2.3.3¡¢ÓÅÊÆ
1¡¢NginxרΪÐÔÄÜÓÅ»¯¶ø¿ª·¢£¬ÐÔÄÜÊÇÆä×îÖØÒªµÄ¿¼Á¿, ʵÏÖÉϷdz£×¢ÖØÐ§ÂÊ ¡£Óб¨¸æ±íÃ÷ÄÜÖ§³Ö¸ß´ï 50,000 ¸ö²¢·¢Á¬½ÓÊý¡£
2¡¢Nginx¾ßÓкܸߵÄÎȶ¨ÐÔ¡£ÆäËüHTTP·þÎñÆ÷£¬µ±Óöµ½·ÃÎʵķåÖµ£¬»òÕßÓÐÈ˶ñÒâ·¢ÆðÂýËÙÁ¬½Óʱ£¬Ò²ºÜ¿ÉÄܻᵼÖ·þÎñÆ÷ÎïÀíÄÚ´æºÄ¾¡Æµ·±½»»»£¬Ê§È¥ÏìÓ¦£¬Ö»ÄÜÖØÆô·þÎñÆ÷¡£
ÀýÈ統ǰapacheÒ»µ©Éϵ½200¸öÒÔÉϽø³Ì£¬webÏìÓ¦ËٶȾÍÃ÷ÏԷdz£»ºÂýÁË¡£¶øNginx²ÉÈ¡ÁË·Ö½×¶Î×ÊÔ´·ÖÅä¼¼Êõ£¬Ê¹µÃËüµÄCPUÓëÄÚ´æÕ¼ÓÃÂʷdz£µÍ¡£
3¡¢nginx¹Ù·½±íʾ±£³Ö10,000¸öûÓлµÄÁ¬½Ó£¬ËüÖ»Õ¼2.5MÄڴ棬¾ÍÎȶ¨ÐÔ¶øÑÔ, nginx±ÈÆäËû´úÀí·þÎñÆ÷¸üʤһ³ï¡£
4¡¢NginxÖ§³ÖÈȲ¿Êð¡£ËüµÄÆô¶¯ÌرðÈÝÒ×, ²¢ÇÒ¼¸ºõ¿ÉÒÔ×öµ½7*24²»¼ä¶ÏÔËÐУ¬¼´Ê¹ÔËÐÐÊý¸öÔÂÒ²²»ÐèÒªÖØÐÂÆô¶¯¡£Ä㻹Äܹ»ÔÚ²»¼ä¶Ï·þÎñµÄÇé¿öÏ£¬¶ÔÈí¼þ°æ±¾½øÐнøÐÐÉý¼¶¡£
5¡¢Nginx²ÉÓÃC½øÐбàд, ²»ÂÛÊÇϵͳ×ÊÔ´¿ªÏú»¹ÊÇCPUʹÓÃЧÂʶ¼¸ßºÜ¶à¡£
2.3.4¡¢ÅäÖÃ
Nginx°²×°ÓëʹÓÃ
http://www.cnblogs.com/skynet/p/4146083.html
NginxÅäÖÃÎļþÏêϸ˵Ã÷
http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html
±±¾©Ð£Çø