±à¼ÍƼö: |
ÎÄÕ½éÉÜÁ˵äÐ͵ģ¬Èý²ã¼Ü¹¹µÄ¸ßÐÔÄÜ
Web Ó¦Óüܹ¹£¬²¢¶Ô·´Ïò´úÀí·þÎñ£¬Ó¦Óòã½Úµã¹¤×÷Ä£ÐÍ£¬Memcached ·þÎñµÈ×öÁËÏêϸµÄ½âÊÍ£¬Ï£ÍûÄܶÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þLuca±à¼¡¢ÍƼö¡£ |
|
µäÐÍ Web App ¼Ü¹¹
ÒÔÏÂÊÇÒ»¸öµäÐ͵ĸ߸ºÔØ web Ó¦ÓÃʾÀý£º

ÉÏͼչʾÁËÒ»¸öµäÐ͵ģ¬Èý²ã¼Ü¹¹µÄ¸ßÐÔÄÜ Web Ó¦Óá£ÕâÖÖ³ÉÊìµÄ¼Ü¹¹¶àÄêÒÔÀ´Òѱ»¹ã·º²¿ÊðÓÚ°üÀ¨
Google¡¢Yahoo¡¢Facebook¡¢Twitter¡¢Wikipedia ÔÚÄÚµÄÖî¶à´óÐÍ Web
Ó¦ÓÃÖС£
·´Ïò´úÀí·þÎñ
λÓÚÈý²ã¹¹¼ÜÖÐ×îÍâ²ãµÄ·´Ïò´úÀí·þÎñÆ÷¸ºÔð½ÓÊÜÓû§µÄ½ÓÈëÇëÇó£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬´úÀí·þÎñÆ÷ͨ³£ÖÁÉÙ»¹ÒªÍê³ÉÒÔÏÂÁбíÖеÄÒ»²¿·ÖÈÎÎñ£º
Á¬½Ó¹ÜÀí£º·Ö±ðά»¤¿Í»§¶ËºÍÓ¦Ó÷þÎñÆ÷µÄÁ¬½Ó³Ø£¬¹ÜÀí²¢¹Ø±ÕÒѳ¬Ê±µÄ³¤Á¬½Ó¡£
¹¥»÷¼ì²âºÍ°²È«¸ôÀ룺ÓÉÓÚ·´Ïò´úÀí·þÎñÎÞÐèÍê³ÉÈκζ¯Ì¬Ò³ÃæÉú³ÉÈÎÎñ£¬ËùÓÐÓëÒµÎñÂß¼Ïà¹ØµÄÇëÇó¶¼×ª·¢ÖÁºó¶ËÓ¦Ó÷þÎñÆ÷´¦Àí¡£Òò´Ë·´Ïò´úÀí·þÎñ¼¸ºõ²»»á±»Ó¦ÓóÌÐòÉè¼Æ»òºó¶ËÊý¾Ý©¶´ËùÓ°Ïì¡£·´Ïò´úÀíµÄ°²È«ÐԺͿɿ¿ÐÔͨ³£½öÈ¡¾öÓÚ²úÆ·±¾Éí¡£ÔÚÓ¦Ó÷þÎñµÄǰ¶Ë²¿Êð·´Ïò´úÀí·þÎñÆ÷¿ÉÒÔÓÐЧµØÔÚºó¶ËÓ¦ÓúÍÔ¶³ÌÓû§¼ä½¨Á¢ÆðÒ»Ì׿ɿ¿µÄ°²È«¸ôÀëºÍ¹¥»÷¼ì²â»úÖÆ¡£
Èç¹ûÐèÒªµÄ»°£¬»¹¿ÉÒÔͨ¹ýÔÚÍâÍø¡¢·´Ïò´úÀí¡¢ºó¶ËÓ¦ÓúÍÊý¾Ý¿âµÈ±ß½çλÖÃÌí¼Ó¶îÍâµÄÓ²¼þ·À»ðǽµÈÍøÂç¸ôÀëÉ豸À´ÊµÏÖ¸ü¸ßµÄ°²È«ÐÔ±£Ö¤¡£
¸ºÔؾùºâ£ºÍ¨³£Ê¹ÓÃÂÖת£¨Round Robin£©»ò×îÉÙÁ¬½ÓÊýÓÅÏȵȲßÂÔÍê³É»ùÓÚ¿Í»§ÇëÇóµÄ¸ºÔؾùºâ£»Ò²¿ÉÒÔʹÓÃ
SSI µÈ¼¼Êõ½«Ò»¸ö¿Í»§ÇëÇó²ð·Ö³ÉÈô¸É²¢ÐмÆË㲿·Ö·Ö±ðÌá½»µ½¶à¸öÓ¦Ó÷þÎñÆ÷¡£
·Ö²¼Ê½µÄ cache ¼ÓËÙ£º¿ÉÒÔ½«·´Ïò´úÀí·Ö×鲿ÊðÔÚ¾àÀëÈÈµãµØÇøµØÀíλÖýϽüµÄÍøÂç±ß½çÉÏ¡£Í¨¹ýÔÚλÓÚ¿Í»§½Ï½üµÄλÖÃÌṩ»º³å·þÎñÀ´¼ÓËÙÍøÂçÓ¦Óá£Õâʵ¼ÊÉϾ͹¹³ÉÁË
CDN ÍøÂç¡£
¾²Ì¬ÎļþËÅ·þ£ºµ±ÊÕµ½¾²Ì¬ÎļþÇëÇóʱ£¬Ö±½Ó·µ»Ø¸ÃÎļþ¶øÎÞÐ轫¸ÃÇëÇóÌá½»ÖÁºó¶ËÓ¦Ó÷þÎñÆ÷¡£
¶¯Ì¬ÏìÓ¦»º´æ£º¶ÔÒ»¶Îʱ¼äÄÚ²»»á·¢Éú¸Ä±äµÄ¶¯Ì¬Éú³ÉÏìÓ¦½øÐлº´æ£¬±ÜÃâºó¶ËÓ¦Ó÷þÎñÆ÷Ƶ·±Ö´ÐÐÖØ¸´²éѯºÍ¼ÆËã¡£
Êý¾ÝѹËõ´«Ê䣺Ϊ·µ»ØµÄÊý¾ÝÆôÓà GZIP/ZLIB ѹËõËã·¨ÒÔ½ÚÔ¼´ø¿í¡£
Êý¾Ý¼ÓÃܱ£»¤£¨SSL Offloading£©£ºÎªÓë¿Í»§¶ËµÄͨÐÅÆôÓà SSL/TLS ¼ÓÃܱ£»¤¡£
ÈÝ´í£º¸ú×Ùºó¶ËÓ¦Ó÷þÎñÆ÷µÄ½¡¿µ×´¿ö£¬±ÜÃ⽫ÇëÇóµ÷¶Èµ½·¢Éú¹ÊÕϵķþÎñÆ÷¡£
Óû§¼øÈ¨£ºÍê³ÉÓû§µÇ½ºÍ»á»°½¨Á¢µÈ¹¤×÷¡£
URL±ðÃû£º¶ÔÍ⽨Á¢Í³Ò»µÄurl±ðÃûÐÅÏ¢£¬ÆÁ±ÎÕæÊµÎ»Öá£
Ó¦Óûì´î£ºÍ¨¹ýSSIºÍURLÓ³Éä¼¼Êõ½«²»Í¬µÄwebÓ¦Óûì´îÔÚÒ»Æð¡£
ÐÒéת»»£ºÎªÊ¹Óà SCGI ºÍ FastCGI µÈÐÒéµÄºó¶ËÓ¦ÓÃÌṩÐÒéת»»·þÎñ¡£
Ŀǰ±È½ÏÓÐÃûµÄ·´Ïò´úÀí·þÎñ°üÀ¨£ºApache httpd+mod_proxy
/ IIS+ARR / Squid / Apache Traffic Server / Nginx
/ Cherokee / Lighttpd / HAProxy ÒÔ¼° Varnish µÈµÈ¡£
Ó¦Ó÷þÎñ
Ó¦Ó÷þÎñ²ãλÓÚÊý¾Ý¿âµÈºó¶ËͨÓ÷þÎñ²ãÓë·´Ïò´úÀí²ãÖ®¼ä£¬ÏòÉϽÓÊÕÓÉ·´Ïò´úÀí·þÎñת·¢¶øÀ´µÄ¿Í»§¶Ë·ÃÎÊÇëÇó£¬ÏòÏ·ÃÎÊÓÉÊý¾Ý¿â²ãÌṩµÄ½á¹¹»¯´æ´¢ÓëÊý¾Ý²éѯ·þÎñ¡£
Ó¦ÓòãʵÏÖÁË Web Ó¦ÓõÄËùÓÐÒµÎñÂß¼£¬Í¨³£ÒªÍê³É´óÁ¿µÄ¼ÆËãºÍÊý¾Ý¶¯Ì¬Éú³ÉÈÎÎñ¡£Ó¦ÓòãÄڵĸ÷¸ö½Úµã²»Ò»¶¨ÊÇÍêÈ«¶ÔµÈµÄ£¬»¹¿ÉÄÜÒÔ
SOA¡¢¦ÌSOA µÈ¼Ü¹¹²ð·ÖΪ²»Í¬·þÎñ¼¯Èº¡£

ÉÏͼ¸ø³öÁËÒ»¸öµäÐ͵ĸ߲¢·¢¡¢¸ßÐÔÄÜÓ¦Óòã½Úµã¹¤×÷Ä£ÐÍ¡£Ã¿¸ö Web Ó¦Óýڵ㣨ÔÚͼ 5ÖÐÓɱêÓÐ"App"×ÖÑùµÄ·½¿ò±íʾ£©Í¨³£¶¼»á¹¤×÷ÔÚ×Ô¼ºµÄ·þÎñÆ÷£¨ÎïÀí·þÎñÆ÷»òVPS£©Ö®ÉÏ£¬¶à¸öÓ¦Óýڵã¿ÉÒÔÓÐЧµØ²¢Ðй¤×÷£¬ÒÔ·½±ãµØÊµÏÖºáÏòÀ©Õ¹¡£
ÔÚÉÏͼËùʾµÄÀý×ÓÖУ¬Web Ó¦ÓýڵãÓÉ IO »Øµ÷Ï̳߳ء¢Web ÇëÇó¶ÓÁÐÒÔ¼°ºǫ́¹¤×÷Ï̳߳صÈÈý¸öÖØÒª²¿·Ö×é³É£¬ÆäËÅ·þÁ÷³ÌÈçÏ£º
µ±Ò»¸ö Web ÇëÇóµ½´ïºó£¬µ×²ã²Ù×÷ϵͳͨ¹ý IOCP¡¢epoll¡¢kqueue¡¢event ports¡¢real
time signal (posix aio)¡¢/dev/poll¡¢pollset µÈ¸÷ÀàÓë¾ßÌåÆ½Ì¨½ôÃÜÏà¹ØµÄ
IO Íê³É£¨»ò IO ¾ÍÐ÷£©»Øµ÷»úÖÆÍ¨Öª AIO£¨Asynchronous IO£©»Øµ÷Ị̈߳¬¶ÔÕâ¸öÒѵ½´ïµÄ
Web ÇëÇó½øÐд¦Àí¡£
ÔÚ AIO »Øµ÷³ØÖеŤ×÷Ï߳̽ÓÊÕµ½Ò»¸öÒѵ½´ïµÄ Web ÇëÇóºó£¬Ê×Ïȳ¢ÊÔ¶Ô¸ÃÇëÇó½øÐÐÔ¤´¦Àí¡£ÔÚÔ¤´¦Àí¹ý³ÌÖУ¬½«»áʹÓÃλÓÚ±¾µØµÄ¸ßËÙ»º´æÀ´±ÜÃâ³É±¾½Ï¸ßµÄÊý¾Ý¿â²éѯ¡£Èç¹û±¾µØ»º´æÃüÖУ¬ÔòÖ±½Ó½«»º´æÖеĽá¹û£¨ÈÔÈ»ÒÔÒì²½
IO µÄ·½Ê½£©·µ»Ø¿Í»§¶Ë£¬²¢½áÊø±¾´ÎÇëÇó¡£
Èç¹ûÖ¸¶¨µÄ Web ÇëÇóÒªÇó²éѯµÄÊý¾ÝÎÞ·¨±»±¾µØ»º´æÃüÖУ¬»òÕßÕâ¸ö Web ÇëÇóÐèÒªÊý¾Ý¿âдÈë²Ù×÷£¬Ôò¸ÃÇëÇ󽫱»
AIO »Øµ÷Ïß³Ì×·¼Óµ½Ö¸¶¨µÄ¶ÓÁÐÖУ¬µÈ´ýºǫ́¹¤×÷Ï̳߳ØÖеÄij¸ö¿ÕÏÐÏß³Ì¶ÔÆä½øÐнøÒ»²½´¦Àí¡£
ºǫ́¹¤×÷Ï̳߳ØÖеÄÿ¸öÏ̶߳¼·Ö±ðά»¤×ÅÁ½Ìõ³¤Á¬½Ó£ºÒ»ÌõÓëµ×²ãµ½Êý¾Ý¿â·þÎñÏàÁ¬£¬ÁíÒ»ÌõÔòÁ¬½Óµ½·Ö²¼Ê½»º´æ£¨memcached£©ÍøÂ硣ͨ¹ýÈÃÿ¸ö¹¤×÷Ïß³Ìά»¤ÊôÓÚ×Ô¼ºµÄ³¤Á¬½Ó£¬ºǫ́¹¤×÷Ï̳߳ØÊµÏÖÁËÊý¾Ý¿âºÍ·Ö²¼Ê½»º´æÁ¬½Ó³Ø»úÖÆ¡£³¤Á¬½Ó£¨Keep-Alive£©Í¨¹ýΪ²»Í¬µÄÇëÇóÖØ¸´Ê¹ÓÃͬһÌõÍøÂçÁ¬½Ó´ó´óÌá¸ßÁËÓ¦ÓóÌÐò´¦ÀíЧÂʺÍÍøÂçÀûÓÃÂÊ¡£
ºǫ́¹¤×÷Ïß³ÌÔÚ Web ÇëÇó¶ÓÁÐÉϵȴýеÄÇëÇóµ½´ï¡£ÔÚ´Ó¶ÓÁÐÖÐÈ¡³öÒ»¸öеÄÇëÇóºó£¬ºǫ́¹¤×÷Ïß³ÌÊ×Ïȳ¢ÊÔʹÓ÷ֲ¼Ê½»º´æ·þÎñÃüÖиÃÇëÇóÖеIJéѯ²Ù×÷£¬Èç¹ûÍøÂ绺´æÎ´ÃüÖлò¸ÃÇëÇóÐèÒªÊý¾Ý¿âдÈëµÈ½øÒ»²½´¦Àí£¬ÔòÖ±½Óͨ¹ýÊý¾Ý¿â²Ù×÷À´Íê³ÉÕâ¸ö
Web ÇëÇó¡£
µ±Ò»¸ö Web ÇëÇó±»´¦ÀíÍê³Éºó£¬ºǫ́¹¤×÷Ï̻߳Ὣ´¦Àí½á¹û×÷Ϊ Web ÏìÓ¦ÒÔÒì²½ IO µÄ·½Ê½·µ»Øµ½Ö¸¶¨¿Í»§¶Ë¡£
ÉÏÊö²½Öè´ÖÂÔÃèÊöÁËÒ»¸öµäÐÍ Web Ó¦ÓýڵãµÄ¹¤×÷·½Ê½¡£ÖµµÃ×¢ÒâµÄÊÇ£¬ÓÉÓÚÉè¼ÆË¼ÏëºÍ¾ßÌ幦ÄܵIJîÒ죬²»Í¬µÄ
Web Ó¦Óü䣬ÎÞÂÛÔÚ¹¤×÷ģʽ»ò¼Ü¹¹É϶¼¿ÉÄÜ´æÔںܴóµÄ²îÒì¡£
ÐèҪ˵Ã÷µÄÊÇ£¬Óë epoll/kqueue/event ports µÈÏàλ´¥·¢µÄ֪ͨ»úÖÆ²»Í¬£¬¶ÔÓÚ
Windows IOCP ºÍ POSIX AIO Realtime Signal ÕâÀà±ßÔµ´¥·¢µÄ AIO
Íê³Éʼþ֪ͨ»úÖÆ£¬ÎªÁ˱ÜÃâ²Ù×÷ϵͳµ×²ã IO Íê³É¶ÓÁУ¨»òʵʱÐźŶÓÁУ©¹ý³¤»òÒç³öµ¼ÖµÄÄڴ滺³åÇø±»³¤Ê±¼äËø¶¨ÔÚ·Ç·ÖÒ³ÄÚ´æ³Ø£¬ÔÚÉÏÊöϵͳÄÚµÄ
AIO »Øµ÷·½Ê½Êµ¼ÊÉÏÊÇÓÉÁ½¸ö¶ÀÁ¢µÄÏ̳߳غÍÒ»¸ö AIO Íê³Éʼþ¶ÓÁÐ×é³ÉµÄ£ºÒ»¸öÏ̳߳Ø×¨ÃŸºÔð²»¼ä¶ÏµØµÈ´ýϵͳ
AIO Íê³É¶ÓÁÐÖе½´ïµÄʼþ£¬²¢½«ÆäÌá½»µ½Ò»¸öÄÚ²¿µÄ AIO Íê³É¶ÓÁÐÖУ¨¸Ã¶ÓÁй¤×÷ÔÚÓû§Ä£Ê½£¬¾ßÓÐÓû§¿É¿ØµÄµ¯ÐԳߴ磬²¢ÇÒ²»»áËø¶¨Äڴ棩£»Óë´ËͬʱÁíÒ»¸öÏ̳߳صȴýÔÚÕâ¸öÄÚ²¿
AIO Íê³É¶ÓÁÐÉÏ£¬²¢ÇÒ´¦Àí²»¶Ïµ½´ï¸Ã¶ÓÁÐµÄ AIO Íê³Éʼþ¡£ÕâÑùµÄÉè¼Æ½µµÍÁ˲Ù×÷ϵͳµÄ¹¤×÷¸ºµ££¬±ÜÃâÁËÔÚ¼«¶ËÇé¿öÏ¿ÉÄܳöÏÖµÄÏûÏ¢¶ªÊ§¡¢ÄÚ´æÐ¹Â¶ÒÔ¼°ÄÚ´æºÄ¾¡µÈÎÊÌ⣬ͬʱҲ¿ÉÒÔ°ïÖú²Ù×÷ϵͳ¸üºÃµØÊ¹Óú͹ÜÀí·Ç·ÖÒ³ÄÚ´æ³Ø¡£
×÷ΪµäÐͰ¸Àý£º°üÀ¨ËÑË÷ÒýÇæ¡¢Gmail Óʼþ·þÎñÔÚÄÚµÄ´ó²¿·Ö Google
Web Ó¦ÓþùÊÇʹÓà C/C++ ʵÏֵġ£µÃÒæÓÚ C/C++ ÓïÑԵĸßЧºÍÇ¿´ó£¬Google ÔÚΪȫÇò
Internet Óû§Ìṩ×î¼Ñ Web Ó¦ÓÃÌåÑéµÄͬʱ£¬Ò²ÊµÏÖÁËÔÚÆä±é¼°È«ÇòµÄÉϰÙÍǫ̀·Ö²¼Ê½·þÎñÆ÷ÉÏÍê³ÉÒ»´Î
Web ËÑË÷£¬×ÜÄܺĽöÐè 0.0003 kW¡¤h µÄÓÅÒì±íÏÖ¡£¹ØÓÚ Google Web Ó¦Óüܹ¹ÒÔ¼°Ó²¼þ¹æÄ£µÈ½øÒ»²½ÌÖÂÛ£¬Çë²Î¿¼£ºhttp://en.wikipedia.org/wiki/Google
ÒÔ¼° http://en.wikipedia.org/wiki/Google_search¡£
Êý¾Ý¿âºÍmemcached·þÎñ
Êý¾Ý¿â·þÎñΪÉϲã Web Ó¦ÓÃÌṩ¹ØÏµÊ½»ò½á¹¹»¯µÄÊý¾Ý´æ´¢Óë²éѯ֧³Ö¡£È¡¾öÓÚ¾ßÌåÓÃÀý£¬Web Ó¦ÓÿÉÒÔʹÓÃÊý¾Ý¿âÁ¬½ÓÆ÷Ö®ÀàµÄ²å¼þ»úÖÆÀ´Ìṩ¶Ô²»Í¬Êý¾Ý¿â·þÎñµÄ·ÃÎÊÖ§³Ö¡£ÔÚÕâÖּܹ¹Ï£¬Óû§¿ÉÒÔÁé»îµØÑ¡Ôñ»ò±ä¸ü×îÊÊºÏÆóÒµÏÖ½×¶ÎÇé¿öµÄ²»Í¬Êý¾Ý¿â²úÆ·¡£ÀýÈ磺Óû§¿ÉÒÔÔÚÔÐͽ׶ÎʹÓÃ
SQLite Ö®ÀàµÄǶÈëʽÒýÇæÍê³É¿ìËÙ²¿ÊðºÍ¹¦ÄÜÑéÖ¤£»¶øÔÚÓ¦ÓõijõÆÚ½×¶ÎÇл»µ½Á®¼ÛµÄ MySql Êý¾Ý¿â½â¾ö·½°¸£»µÈµ½ÒµÎñÐèÇó²»¶ÏÉÏÉý£¬Êý¾Ý¿â¸ºÔز»¶Ï¼ÓÖØÊ±ÔÙÏò
Clustrix¡¢MongoDB¡¢Cassandra¡¢MySql Cluster¡¢ORACLE µÈ¸ü°º¹óºÍ¸´ÔӵĽâ¾ö·½°¸½øÐÐÇ¨ÒÆ¡£
Memcached ·þÎñ×÷Ϊһ¸öÍêÈ«»ùÓÚÄÚ´æºÍ <Key, Value> ¶ÔµÄ·Ö²¼Ê½Êý¾Ý¶ÔÏ󻺳å·þÎñ£¬ÓµÓÐÁîÈËÄÑÒÔÖÃÐŵIJéѯЧÂÊÒÔ¼°Ò»¸öÓÅÑŵģ¬ÎÞÐè·þÎñÆ÷¼äͨÐŵĴóÐÍ·Ö²¼Ê½¼Ü¹¹¡£¶ÔÓڸ߸ºÔØ
Web Ó¦ÓÃÀ´Ëµ£¬Memcached ³£±»ÓÃ×÷Ò»ÖÖÖØÒªµÄÊý¾Ý¿â·ÃÎʼÓËÙ·þÎñ£¬Òò´ËËü²»ÊÇÒ»¸ö±ØÑ¡×é¼þ¡£Óû§ÍêÈ«¿ÉÒԵȵ½ÏÖʵ»·¾³ÏµÄÊý¾Ý¿â·þÎñ³öÏÖÁËÐÔÄÜÆ¿¾±Ê±ÔÚ²¿ÊðËü¡£ÖµµÃÇ¿µ÷µÄÊÇ£¬ËäÈ»
memcached ²¢²»ÊÇÒ»¸ö±ØÑ¡×é¼þ£¬µ«Í¨¹ýÆäÔÚ YouTube¡¢Wikipedia¡¢Amazon.com¡¢SourceForge¡¢Facebook¡¢Twitter
µÈ´óÐÍ Web Ó¦ÓÃÉϵĶàÄ겿Êð¿ÉÒÔÖ¤Ã÷£ºmemcached ²»µ«Äܹ»Ôڸ߸ºÔØ»·¾³Ï³¤ÆÚÎȶ¨µØ¹¤×÷£¬¶øÇÒ¿ÉÒÔÏ·¾çÐÔµØÌáÉýÊý¾Ý²éѯµÄÕûÌåЧÂÊ¡£ÓйØ
memcached µÄ½øÒ»²½ÌÖÂÛ£¬Çë²Î¿¼£ºhttp://en.wikipedia.org/wiki/Memcached¡£
µ±È»£¬ÎÒÃÇÒ²Ó¦¸Ã×¢Òâµ½£ºÒÔ memcached Ϊ´ú±íµÄ·Ö²¼Ê½»º´æÏµÍ³£¬Æä±¾ÖÊÉÏÊÇÒ»ÖÖÒÔÎþÉüÒ»ÖÂÐÔΪ´ú¼ÛÀ´ÌáÉýƽ¾ù·ÃÎÊЧÂʵÄÍ×з½°¸¡ª¡ª»º´æ·þÎñΪÊý¾Ý¿âÖеIJ¿·Ö¼Ç¼Ôö¼ÓÁË·Ö²¼Ê½¸±±¾¡£¶ÔÓÚͬһÊý¾ÝµÄ¶à¸ö·Ö²¼Ê½¸±±¾À´Ëµ£¬³ý·ÇʹÓÃ
Paxos¡¢Raft µÈÒ»ÖÂÐÔËã·¨£¬²»È»ÎÞ·¨ÊµÏÖǿһÖÂÐÔ±£Ö¤¡£
ì¶ÜµÄÊÇ£¬memory cache ±¾Éí¾ÍÊÇÓÃÀ´ÌáÉýЧÂʵģ¬ÕâʹµÃΪÁËËüʹÓÃÉÏÊö¿ªÏú¸ß°ºµÄ·Ö²¼Ê½Ç¿Ò»ÖÂÐÔËã·¨±äµÃ·Ç³£²»ÇÐʵ¼Ê£ºÄ¿Ç°µÄ·Ö²¼Ê½Ç¿Ò»ÖÂÐÔËã·¨¾ùÒªÇóÿ´Î·ÃÎÊÇëÇó£¨ÎÞÂÛ¶Áд£©¶¼ÐèҪͬʱ·ÃÎʰüÀ¨ºǫ́Êý¾Ý¿âÖ÷´Ó½ÚµãÔÚÄڵĶàÊýÅɸ±±¾¡ª¡ªÏÔÈ»£¬Õ⻹²»Èç¸É´à²»Ê¹Óûº´æÀ´µÄÓÐЧÂÊ¡£
ÁíÍ⣬¼´Ê¹ÊÇ Paxos¡¢Raft Ö®ÀàµÄ·Ö²¼Ê½Ò»ÖÂÐÔËã·¨Ò²Ö»ÄÜÔÚµ¥¸ö¼Ç¼µÄ¼¶±ðÉϱ£Ö¤Ç¿Ò»Ö¡£Òâ¼´£º¼´Ê¹Ó¦ÓÃÁË´ËÀàËã·¨£¬Ò²ÎÞ·¨Æ¾´ËÌṩÊÂÎñ¼¶µÄǿһÖÂÐÔ±£Ö¤¡£
³ý´ËÖ®Í⣬·Ö²¼Ê½»º´æÒ²Ôö¼ÓÁ˳ÌÐòÉè¼ÆµÄ¸´ÔÓ¶È£¨ÐèÒªÔÚ·ÃÎÊÊý¾Ý¿âµÄͬʱ³¢ÊÔÃüÖлò¸üлº´æ£©£¬²¢ÇÒ»¹Ôö¼ÓÁ˽ϲîÇéÐÎϵķÃÎÊÑÓ³Ù£¨È磺δÃüÖÐʱµÄ
RTT µÈ´ýÑÓ³Ù£¬ÒÔ¼°½ÚµãÏÂÏß¡¢ÍøÂçͨÐŹÊÕÏʱµÄÑӳٵȣ©¡£
Óë´Ëͬʱ£¬¿ÉÒÔ¿´µ½£º´Ó¶þÊ®Äêǰ¿ªÊ¼£¬¸÷Ö÷Á÷Êý¾Ý¿â²úÆ·Æäʵ¾ùÔçÒÑʵÏÖÁ˳ÉÊì¡¢¸ßÃüÖÐÂʵĶà²ã£¨´ÅÅ̿顢Êý¾ÝÒ³¡¢½á¹û¼¯µÈ£©»º´æ»úÖÆ¡£¼ÈÈ»·Ö²¼Ê½»º´æÓÐÈç´Ë¶àµÄȱÏÝ£¬¶øÊý¾Ý¿â²úÆ·ÓÖ×Ô´øÁËÓÅÐãµÄ»º´æ»úÖÆ£¬ËüΪºÎÓÖÄܹ»³ÉΪÏÖ´ú¸ß¸ºÔØ
Web App ÖеÄÖØÒª»ùÊ¯ÄØ£¿
Æä¸ù±¾ÔÒòÔÚÓÚ£º¶ÔÓÚÊ®ÄêǰµÄ¼¼Êõ»·¾³À´Ëµ£¬µ±Ê±Ê®·Öȱ·¦ºáÏòÀ©Õ¹ÄÜÁ¦µÄ RDBMS£¨SQL£©ÏµÍ³ÒѳÉΪÁËÑÏÖØÖÆÔ¼
Web App µÈÍøÂçÓ¦ÓÃÀ©´ó¹æÄ£µÄÆ¿¾±¡£Îª´Ë£¬ÒÔ Google BigTable¡¢Facebook
Cassandra¡¢MongoDB Ϊ´ú±íµÄ NoSQL Êý¾Ý¿â²úÆ·£¬ÒÔ¼°ÒÔ memcached¡¢redis
Ϊ´ú±íµÄ·Ö²¼Ê½»º´æ²úÆ··×·×·ÛÄ«µÇ³¡£¬²¢¸÷×Ô°çÑÝÁËÖØÒª×÷Óá£
Óë MySQL¡¢ORACLE¡¢DB2¡¢MS SQL Server¡¢PostgreSQL µÈµ±Ê±µÄ
"´«Í³" SQLÊý¾Ý¿â²úÆ·Ïà±È£¬ÎÞÂÛ NoSQL Êý¾Ý¿â»¹ÊÇ·Ö²¼Ê½»º´æ²úÆ·£¬Æä±¾ÖÊÉ϶¼ÊÇÒÔÎþÉüǰÕßµÄǿһÖÂÐÔΪ´ú¼Û£¬À´»»È¡¸üÓŵĺáÏòÀ©Õ¹ÄÜÁ¦¡£
Ó¦µ±¿´µ½£¬ÕâÖÖÈ¡ÉáÊÇÔÚµ±Ê±¼¼ÊõÌõ¼þÏÂ×ö³öµÄÎÞÄΡ¢Í´¿àµÄ¾ñÔñ£¬ÏµÍ³Òò´Ë¶ø±äµÃ¸´ÔÓ¡ª¡ªÔÚÐèÒªÊÂÎñºÍǿһÖÂÐÔ±£ÕÏ£¬²¢ÇÒÊý¾ÝÁ¿½ÏÉٵĵط½£¬Ê¹ÓÃÎÞ»º´æ²ãµÄ´«Í³
RDBMS£»ÔÚÒ»ÖÂÐÔ·½ÃæÓÐÒ»¶¨Í×ÐÓàµØ£¬²¢ÇÒ¶Á¶àдÉٵĵط½¾¡Á¿Ê¹Ó÷ֲ¼Ê½»º´æÀ´¼ÓËÙ£»ÔÚ¶ÔÒ»ÖÂÐÔÒªÇó¸üµÍµÄ´óÊý¾ÝÉÏʹÓÃ
NoSQL£»Èç¹ûÊý¾ÝÁ¿½Ï´ó£¬Í¬Ê±¶ÔÒ»ÖÂÐÔÒªÇóÒ²½Ï¸ß£¬¾ÍÖ»Äܳ¢ÊÔͨ¹ý¶Ô RDMBS ·Ö¿â·Ö±íµÈ·½·¨À´¾¡Á¿½â¾ö£¬Îª´Ë»¹Òª¿ª·¢¸÷ÖÖÖмä¼þÀ´ÊµÏÖÊý¾Ý·ÃÎʵÄÇëÇó·Ö·¢ºÍ½á¹û¼¯¾ÛºÏµÈ¸´ÔÓ²Ù×÷¡¡¸÷ÖÖÇéÐβ»Ò»¶ø×㣬¶øËüÃǵÄÏ໥×éºÏºÍ½»Ö¯ÔòÔٴμӾçÁ˸´ÔÓÐÔ¡£
»Ø¹ËÆðÀ´£¬ÕâÊÇÒ»¸ö¾ÉÖÈÐò±»´òÆÆ£¬ÐÂÖÈÐòÓÖÉÐ佨Á¢ÆðÀ´µÄ»ìÂÒʱ´ú¡ª¡ªÀÏ¾É RMDBS ȱ·¦ºáÏòÀ©Õ¹ÄÜÁ¦£¬ÎÞ·¨Âú×ãÐÂʱ´úµÄ´óÊý¾Ý´¦ÀíÐèÇó£¬ÓÖûÓÐÒ»ÖÖÄܹ»Ìæ´úÀÏϵͳµØÎ»£¬¿ÉͬʱÂú×ã´ó²¿·ÖÓû§ÐèÇóµÄÆÕÊʼ¶½á¹¹»¯Êý¾Ý¹ÜÀí·½°¸¡£
ÕâÊÇÒ»¸öÇà»Æ²»½ÓµÄʱ´ú£¬¶ø BigTable¡¢Cassandra¡¢memcached µÈ²úÆ·Ôò·Ö±ðÊÇ
Google¡¢Facebook ÒÔ¼° LiveJournal µÈ³§ÉÌÔÚÄǸöʱ´ú½øÐÐ "×Ô¾È"
µÄ½á¹û¡£ÕâÑùÒÔ£º"»¨·Ñ×îС´ú¼Û£¬Âú×ã×ÔÉíÒµÎñÐèÇó¼´¿É" ΪĿ±êµÄ²úÎï×ÔÈ»²»Ì«ÈÝÒ׾߱¸ºÜºÃµÄÆÕÊÊÐÔ¡£
È»¶ø½ñÌ죨2015£©£¬ÎÒÃÇÖÕÓھͿìÒª×ß³öÕâ¸ö¾½¾³¡£Ëæ×Å Google F1¡¢MySQL Cluster£¨NDB£©¡¢Clustrix¡¢VoltDB¡¢MemSQL¡¢NuoDB
µÈÖÚ¶à NewSQL ½â¾ö·½°¸µÄÖð²½³ÉÊìÒÔ¼°¼¼ÊõµÄ²»¶Ï½ø²½£¬ºáÏòÀ©Õ¹ÄÜÁ¦Öð½¥²»ÔÙ³ÉΪ RDBMS µÄÆ¿¾±¡£½ñÌìµÄ¼Ü¹¹Éè¼ÆÊ¦ÍêÈ«¿ÉÒÔÔÚÈ·±£ÏµÍ³ÓµÓÐ×ã¹»ºáÏòÀ©Õ¹ÄÜÁ¦µÄͬʱ£¬ÊµÏÖ·Ö²¼Ê½µÄÊÂÎñ¼¶£¨XA£©Ç¿Ò»ÖÂÐÔ±£Ö¤£º

ÈçÉÏͼËùʾ£¬ÔÚ NewSQL ¾ß±¸ÁËÁ¼ºÃµÄºáÏòÀ©Õ¹ÄÜÁ¦ºó£¬¼Ü¹¹Öв»ÔÙÆÈÇÐÐèÒª·Ö²¼Ê½»º´æºÍ NoSQL
²úÆ·À´ÃÖ²¹Õâ·½ÃæµÄ¶Ì°å£¬ÕâʹµÃÉè¼ÆºÍ¿ª·¢¹¤×÷Ôٴλع鵽ÁË×î³õµÄ¼ò½àºÍÇåÎú¡£¶ø¶ÔÏó´æ´¢£¨Object
Storage£©·þÎñÔòÌṩÁ˶ÔÒôƵ¡¢ÊÓÆµ¡¢Í¼Æ¬¡¢Îļþ°üµÈº£Á¿·Ç½á¹¹»¯BLOBÊý¾ÝµÄ´æ´¢ºÍ·ÃÎÊÖ§³Ö¡£
ÕâÑù¼ò½à¡¢ÇåÎú¡¢ÆÓËØµÄ¼Ü¹¹Ê¹Ò»Çп´ÆðÀ´·Â·ð»Ø¹éµ½Á˶àÄêÒÔǰ£¬¶ÔÏó´æ´¢·þÎñ¾ÍÏñ FAT¡¢NTFS¡¢Ext3
µÈ´ÅÅÌÎļþϵͳ£¬NewSQL ·þÎñÔòºÃÏñµ±Äê MySQL¡¢SQL Server µÈ "µ¥»ú°æ"
Êý¾Ý¿â¡£µ«Ò»ÇÐÈ´ÓÖÒѲ»Í¬£¬ÒµÎñÂß¼¡¢Êý¾Ý¿âºÍÎļþ´æ´¢¾ùÒÑÑݽø³ÉΪ֧³ÖºáÏòÀ©Õ¹µÄ¸ß¿ÉÓü¯Èº£¬ÔÚÐÔÄÜ¡¢ÈÝÁ¿¡¢¿ÉÓÃÐÔ¡¢¿É¿¿ÐÔ¡¢¿ÉÉìËõÐԵȷ½ÃæÓÐÁ˾޴óµÄ·ÉÔ¾£ºÈËÀà×ÜÊÇÒÔÂÝÐýÉÏÉýµÄ·½Ê½²»¶Ï½ø²½¡ª¡ªÔÚÿһ´Î¿´ËƻعéµÄ±äǨÖУ¬Êµ°üº¬Á˱¾ÖʵÄÉý»ª¡£
Ëæ×Å GlusterFS¡¢Ceph¡¢Lustre µÈ¿É mount
ÇÒÖ§³Ö Native File API µÄ·Ö²¼Ê½ÎļþϵͳԽÀ´Ô½³ÉÊìºÍÍêÉÆ£¬Ò²ÓÐÍûÓڴ󲿷ֳ¡ºÏÏÂÖð½¥Ìæ»»ÏÖÓеĶÔÏó´æ´¢·þÎñ¡£ÖÁ´Ë
Web App ¼Ü¹¹µÄÑݽø²ÅÄÜËãÊÇÍê³ÉÁËÒ»´ÎÖØÉú¡ª¡ªÕ⻹Ëã²»ÉÏÊÇÄù˜„£¬µ±ÎÒÃÇÄܹ»ÔÚÕæÕýÒâÒåÉÏʵÏÖ³ö¸ßЧ¡¢¸ß¿ÉÓõĶàÐéÒ»£¨Single
System Image£©ÏµÍ³Ê±£¬Äù˜„²ÅÕæÕý½µÁÙ¡£ÄÇʱµÄÎÒÃDZàд·Ö²¼Ê½Ó¦ÓÃÓëÈç½ñ±àдһ¸öµ¥»ú°æµÄ¶àÏß³ÌÓ¦Óý«²»»áÓÐÈκÎÇø±ð¡ª¡ª½ø³ÌÌìÈ»¾ÍÊÇ·Ö²¼Ê½¡¢¸ß¿ÉÓõģ¡
Èý²ã¼Ü¹¹µÄ¿ÉÉìËõÐÔ
Сµ½¼¯Öв¿ÊðÓÚµ¥Ì¨ÎïÀí·þÎñÆ÷»ò VPS ÄÚ£¬´óµ½ Google ±é¼°È«ÇòµÄÉϰÙÍǫ̀ÎïÀí·þÎñÆ÷Ëù×é³ÉµÄ·Ö²¼Ê½Ó¦Óá£Ç°ÎÄÃèÊöµÄÈý²ã
Web Ó¦Óüܹ¹ÌåÏÖ³öÁËÄÑÒÔÖÃÐŵĿÉÉìËõÐÔ¡£
¾ßÌåÀ´Ëµ£¬ÔÚÏîÄ¿ÑéÖ¤¡¢Ó¦Óò¿ÊðºÍ·þÎñÔËÓªµÄ³õÆÚ½×¶Î£¬¿ÉÒÔ½«ÒÔÉÏÈý²ã·þÎñ×é¼þ¼¯Öв¿ÊðÓÚͬһ̨ÎïÀí·þÎñÆ÷»ò
VPS ÄÚ¡£Óë´Ëͬʱ£¬¿Éͨ¹ýÈ¡Ïû memcached ·þÎñ£¬ÒÔ¼°Ê¹ÓÃ×ÊÔ´¿ªÏúС²¢ÇÒÒ×ÓÚ²¿ÊðµÄǶÈëʽÊý¾Ý¿â²úÆ·À´½øÒ»²½½µµÍ²¿ÊðÄѶȺÍϵͳÕûÌå×ÊÔ´¿ªÏú¡£
Ëæ×ÅÏîÄ¿ÔËÓªµÄÀ©´óºÍ¸ºÔصijÖÐø¼ÓÖØ£¬µ±µ¥·þÎñÆ÷·½°¸ºÍ¼òµ¥µÄ×ÝÏòÀ©Õ¹ÒÑÎÞ·¨Âú×ãÏîÄ¿ÔËÓª¸ººÉʱ£¬Óû§¼´¿Éͨ¹ý½«¸÷×é¼þ·Ö²¼Ê½µØÔËÐÐÔÚ¶ą̀·þÎñÆ÷ÄÚÀ´´ïµ½ºáÏòÀ©Õ¹µÄÄ¿µÄ¡£ÀýÈ磺·´Ïò´úÀí¿Éͨ¹ý
DNS CNAME ¼Ç¼ÂÖת»ò 3/4 ²ãת·¢£¨LVS¡¢HAProxyµÈ£©µÄ·½Ê½ÊµÏÖ·Ö²¼Ê½¸ºÔؾùºâ¡£Ó¦Ó÷þÎñÔò¿ÉÓÉ·´Ïò´úÀíʹÓûùÓÚÂÖת»ò×îС¸ºÔØÓÅÏȵȲßÂÔÀ´ÊµÏÖ·Ö²¼Ê½ºÍ¸ºÔؾùºâ¡£´ËÍ⣬ʹÓûùÓÚ¹²Ïí
IP µÄ·þÎñÆ÷¼¯Èº·½°¸Ò²Äܹ»ÊµÏÖ¸ºÔؾùºâºÍÈÝ´í»úÖÆ¡£
Óë´ËÀàËÆ£¬memcached ºÍÊý¾Ý¿â²úÆ·Ò²¶¼ÓÐ×Ô¼ºµÄ·Ö²¼Ê½ÔËËã¡¢¸ºÔؾùºâÒÔ¼°ÈÝ´í·½°¸¡£´ËÍ⣬Êý¾Ý¿â·ÃÎÊÐÔÄÜÆ¿¾±¿Éͨ¹ý¸ü»»·Ç¹ØÏµÊ½£¨NoSQL£©µÄÊý¾Ý¿â²úÆ·£¬»òʹÓÃÖ÷-´ÓÊý¾Ý¿â¼Ó¸´ÖƵȷ½Ê½À´ÌáÉý¡£¶øÊý¾Ý¿â²éѯÐÔÄÜÔò¿Éͨ¹ý²¿Êð
memcached »òÀàËÆ·þÎñÀ´¼«´ó³Ì¶ÈµØ¸ÄÉÆ¡£ |