±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÈîÒ»·å£¬Ö÷Òª½éÉÜÁËÈí¼þ¼Ü¹¹µÄ·Ö²ã¼Ü¹¹¡¢Ê¼þÇý¶¯¼Ü¹¹¡¢Î¢ºË¼Ü¹¹¡¢Î¢·þÎñ¼Ü¹¹¡¢ÔƼܹ¹¡£
|
|
Èí¼þ¼Ü¹¹£¨software architecture£©¾ÍÊÇÈí¼þµÄ»ù±¾½á¹¹¡£
ºÏÊʵļܹ¹ÊÇÈí¼þ³É¹¦µÄ×îÖØÒªÒòËØÖ®Ò»¡£´óÐÍÈí¼þ¹«Ë¾Í¨³£ÓÐרÃŵļܹ¹Ê¦Ö°Î»£¨architect£©£¬Ö»ÓÐ×ÊÉî³ÌÐòÔ±²Å¿ÉÒÔµ£ÈΡ£
O'Reilly ³ö°æ¹ýÒ»±¾Ãâ·ÑµÄС²á×Ó¡¶Software Architecture Patterns¡·£¨PDF£©£¬
½éÉÜÁËÎåÖÖ×î³£¼ûµÄÈí¼þ¼Ü¹¹£¬ÊǷdz£ºÃµÄÈëÃŶÁÎï¡£ÎÒ¶ÁºóÊÜÒæ·Ëdz£¬ÏÂÃæ¾ÍÊÇÎҵıʼǡ£

Ò»¡¢·Ö²ã¼Ü¹¹
·Ö²ã¼Ü¹¹£¨layered architecture£©ÊÇ×î³£¼ûµÄÈí¼þ¼Ü¹¹£¬Ò²ÊÇÊÂʵÉϵıê×¼¼Ü¹¹¡£Èç¹ûÄã²»ÖªµÀÒªÓÃʲô¼Ü¹¹£¬ÄǾÍÓÃËü¡£
ÕâÖּܹ¹½«Èí¼þ·Ö³ÉÈô¸É¸öˮƽ²ã£¬Ã¿Ò»²ã¶¼ÓÐÇåÎúµÄ½ÇÉ«ºÍ·Ö¹¤£¬²»ÐèÒªÖªµÀÆäËû²ãµÄϸ½Ú¡£²ãÓë²ãÖ®¼äͨ¹ý½Ó¿ÚͨÐÅ¡£
ËäȻûÓÐÃ÷È·Ô¼¶¨£¬Èí¼þÒ»¶¨Òª·Ö³É¶àÉٲ㣬µ«ÊÇËIJãµÄ½á¹¹×î³£¼û¡£

±íÏֲ㣨presentation£©£ºÓû§½çÃæ£¬¸ºÔðÊÓ¾õºÍÓû§»¥¶¯
ÒµÎñ²ã£¨business£©£ºÊµÏÖÒµÎñÂß¼
³Ö¾Ã²ã£¨persistence£©£ºÌṩÊý¾Ý£¬SQL Óï¾ä¾Í·ÅÔÚÕâÒ»²ã
Êý¾Ý¿â£¨database£© £º±£´æÊý¾Ý
ÓеÄÈí¼þÔÚÂß¼²ãºÍ³Ö¾Ã²ãÖ®¼ä£¬¼ÓÁËÒ»¸ö·þÎñ²ã£¨service£©£¬Ìṩ²»Í¬ÒµÎñÂß¼ÐèÒªµÄһЩͨÓýӿڡ£
Óû§µÄÇëÇó½«ÒÀ´Îͨ¹ýÕâËIJãµÄ´¦Àí£¬²»ÄÜÌø¹ýÆäÖÐÈκÎÒ»²ã¡£

Óŵã
½á¹¹¼òµ¥£¬ÈÝÒ×Àí½âºÍ¿ª·¢
²»Í¬¼¼ÄܵijÌÐòÔ±¿ÉÒÔ·Ö¹¤£¬¸ºÔð²»Í¬µÄ²ã£¬ÌìÈ»Êʺϴó¶àÊýÈí¼þ¹«Ë¾µÄ×éÖ¯¼Ü¹¹
ÿһ²ã¶¼¿ÉÒÔ¶ÀÁ¢²âÊÔ£¬ÆäËû²ãµÄ½Ó¿Úͨ¹ýÄ£Äâ½â¾ö
ȱµã
Ò»µ©»·¾³±ä»¯£¬ÐèÒª´úÂëµ÷Õû»òÔö¼Ó¹¦ÄÜʱ£¬Í¨³£±È½ÏÂé·³ºÍ·Ñʱ
²¿Êð±È½ÏÂé·³£¬¼´Ê¹Ö»ÐÞ¸ÄÒ»¸öСµØ·½£¬ÍùÍùÐèÒªÕû¸öÈí¼þÖØÐ²¿Ê𣬲»ÈÝÒ××ö³ÖÐø·¢²¼
Èí¼þÉý¼¶Ê±£¬¿ÉÄÜÐèÒªÕû¸ö·þÎñÔÝÍ£
À©Õ¹ÐԲÓû§ÇëÇó´óÁ¿Ôö¼Óʱ£¬±ØÐëÒÀ´ÎÀ©Õ¹Ã¿Ò»²ã£¬ÓÉÓÚÿһ²ãÄÚ²¿ÊÇñîºÏµÄ£¬À©Õ¹»áºÜÀ§ÄÑ
¶þ¡¢Ê¼þÇý¶¯¼Ü¹¹
ʼþ£¨event£©ÊÇ״̬·¢Éú±ä»¯Ê±£¬Èí¼þ·¢³öµÄ֪ͨ¡£
ʼþÇý¶¯¼Ü¹¹£¨event-driven architecture£©¾ÍÊÇͨ¹ýʼþ½øÐÐͨÐŵÄÈí¼þ¼Ü¹¹¡£Ëü·Ö³ÉËĸö²¿·Ö¡£

ʼþ¶ÓÁУ¨event queue£©£º½ÓÊÕʼþµÄÈë¿Ú
·Ö·¢Æ÷£¨event mediator£©£º½«²»Í¬µÄʼþ·Ö·¢µ½²»Í¬µÄÒµÎñÂß¼µ¥Ôª
ʼþͨµÀ£¨event channel£©£º·Ö·¢Æ÷Óë´¦ÀíÆ÷Ö®¼äµÄÁªÏµÇþµÀ
ʼþ´¦ÀíÆ÷£¨event processor£©£ºÊµÏÖÒµÎñÂß¼£¬´¦ÀíÍê³Éºó»á·¢³öʼþ£¬´¥·¢ÏÂÒ»²½²Ù×÷
¶ÔÓÚ¼òµ¥µÄÏîÄ¿£¬Ê¼þ¶ÓÁС¢·Ö·¢Æ÷ºÍʼþͨµÀ£¬¿ÉÒÔºÏΪһÌ壬Õû¸öÈí¼þ¾Í·Ö³Éʼþ´úÀíºÍʼþ´¦ÀíÆ÷Á½²¿·Ö¡£

Óŵã
·Ö²¼Ê½µÄÒì²½¼Ü¹¹£¬Ê¼þ´¦ÀíÆ÷Ö®¼ä¸ß¶È½âñÈí¼þµÄÀ©Õ¹ÐÔºÃ
ÊÊÓÃÐԹ㣬¸÷ÖÖÀàÐ͵ÄÏîÄ¿¶¼¿ÉÒÔÓÃ
ÐÔÄܽϺã¬ÒòΪʼþµÄÒì²½±¾ÖÊ£¬Èí¼þ²»ÒײúÉú¶ÂÈû
ʼþ´¦ÀíÆ÷¿ÉÒÔ¶ÀÁ¢µØ¼ÓÔØºÍÐ¶ÔØ£¬ÈÝÒײ¿Êð
ȱµã
Éæ¼°Òì²½±à³Ì£¨Òª¿¼ÂÇÔ¶³ÌͨÐÅ¡¢Ê§È¥ÏìÓ¦µÈÇé¿ö£©£¬¿ª·¢Ïà¶Ô¸´ÔÓ
ÄÑÒÔÖ§³ÖÔ×ÓÐÔ²Ù×÷£¬ÒòΪʼþͨ¹ý»áÉæ¼°¶à¸ö´¦ÀíÆ÷£¬ºÜÄѻعö
·Ö²¼Ê½ºÍÒì²½ÌØÐÔµ¼ÖÂÕâ¸ö¼Ü¹¹½ÏÄѲâÊÔ
Èý¡¢Î¢ºË¼Ü¹¹
΢ºË¼Ü¹¹£¨microkernel architecture£©ÓÖ³ÆÎª"²å¼þ¼Ü¹¹"£¨plug-in
architecture£©£¬Ö¸µÄÊÇÈí¼þµÄÄÚºËÏà¶Ô½ÏС£¬Ö÷Òª¹¦ÄܺÍÒµÎñÂß¼¶¼Í¨¹ý²å¼þʵÏÖ¡£
Äںˣ¨core£©Í¨³£Ö»°üº¬ÏµÍ³ÔËÐеÄ×îС¹¦ÄÜ¡£²å¼þÔòÊÇ»¥Ïà¶ÀÁ¢µÄ£¬²å¼þÖ®¼äµÄͨÐÅ£¬Ó¦¸Ã¼õÉÙµ½×îµÍ£¬±ÜÃâ³öÏÖ»¥ÏàÒÀÀµµÄÎÊÌâ¡£

Óŵã
Á¼ºÃµÄ¹¦ÄÜÑÓÉìÐÔ£¨extensibility£©£¬ÐèҪʲô¹¦ÄÜ£¬¿ª·¢Ò»¸ö²å¼þ¼´¿É
¹¦ÄÜÖ®¼äÊǸôÀëµÄ£¬²å¼þ¿ÉÒÔ¶ÀÁ¢µÄ¼ÓÔØºÍÐ¶ÔØ£¬Ê¹µÃËü±È½ÏÈÝÒײ¿Êð£¬
¿É¶¨ÖÆÐԸߣ¬ÊÊÓ¦²»Í¬µÄ¿ª·¢ÐèÒª
¿ÉÒÔ½¥½øÊ½µØ¿ª·¢£¬Öð²½Ôö¼Ó¹¦ÄÜ
ȱµã
À©Õ¹ÐÔ£¨scalability£©²î£¬ÄÚºËͨ³£ÊÇÒ»¸ö¶ÀÁ¢µ¥Ôª£¬²»ÈÝÒ××ö³É·Ö²¼Ê½
¿ª·¢ÄѶÈÏà¶Ô½Ï¸ß£¬ÒòÎªÉæ¼°µ½²å¼þÓëÄں˵ÄͨÐÅ£¬ÒÔ¼°ÄÚ²¿µÄ²å¼þµÇ¼Ç»úÖÆ
ËÄ¡¢Î¢·þÎñ¼Ü¹¹
΢·þÎñ¼Ü¹¹£¨microservices architecture£©ÊÇ·þÎñµ¼Ïò¼Ü¹¹£¨service-oriented
architecture£¬Ëõд SOA£©µÄÉý¼¶¡£
ÿһ¸ö·þÎñ¾ÍÊÇÒ»¸ö¶ÀÁ¢µÄ²¿Êðµ¥Ôª£¨separately deployed unit£©¡£ÕâЩµ¥Ôª¶¼ÊÇ·Ö²¼Ê½µÄ£¬»¥Ïà½âñͨ¹ýÔ¶³ÌͨÐÅÐÒ飨±ÈÈçREST¡¢SOAP£©ÁªÏµ¡£

΢·þÎñ¼Ü¹¹·Ö³ÉÈýÖÖʵÏÖģʽ¡£
RESTful API ģʽ£º·þÎñͨ¹ý API Ìṩ£¬ÔÆ·þÎñ¾ÍÊôÓÚÕâÒ»Àà
RESTful Ó¦ÓÃģʽ£º·þÎñͨ¹ý´«Í³µÄÍøÂçÐÒé»òÕßÓ¦ÓÃÐÒéÌṩ£¬±³ºóͨ³£ÊÇÒ»¸ö¶à¹¦ÄܵÄÓ¦ÓóÌÐò£¬³£¼ûÓÚÆóÒµÄÚ²¿
¼¯ÖÐÏûϢģʽ£º²ÉÓÃÏûÏ¢´úÀí£¨message broker£©£¬¿ÉÒÔʵÏÖÏûÏ¢¶ÓÁС¢¸ºÔؾùºâ¡¢Í³Ò»ÈÕÖ¾ºÍÒì³£´¦Àí£¬È±µãÊÇ»á³öÏÖµ¥µãʧ°Ü£¬ÏûÏ¢´úÀí¿ÉÄÜÒª×ö³É¼¯Èº
Óŵã
À©Õ¹ÐԺ㬸÷¸ö·þÎñÖ®¼äµÍñîºÏ
ÈÝÒײ¿Êð£¬Èí¼þ´Óµ¥Ò»¿É²¿Êðµ¥Ôª£¬±»²ð³ÉÁ˶à¸ö·þÎñ£¬Ã¿¸ö·þÎñ¶¼Êǿɲ¿Êðµ¥Ôª
ÈÝÒ׿ª·¢£¬Ã¿¸ö×é¼þ¶¼¿ÉÒÔ½øÐгÖÐø¼¯³ÉʽµÄ¿ª·¢£¬¿ÉÒÔ×öµ½ÊµÊ±²¿Ê𣬲»¼ä¶ÏµØÉý¼¶
Ò×ÓÚ²âÊÔ£¬¿ÉÒÔµ¥¶À²âÊÔÿһ¸ö·þÎñ
ȱµã
ÓÉÓÚÇ¿µ÷»¥Ïà¶ÀÁ¢ºÍµÍñîºÏ£¬·þÎñ¿ÉÄÜ»á²ð·ÖµÃºÜϸ¡£Õâµ¼ÖÂϵͳÒÀÀµ´óÁ¿µÄ΢·þÎñ£¬±äµÃºÜÁèÂҺͱ¿ÖØ£¬ÐÔÄÜÒ²»á²»¼Ñ¡£
Ò»µ©·þÎñÖ®¼äÐèҪͨÐÅ£¨¼´Ò»¸ö·þÎñÒªÓõ½ÁíÒ»¸ö·þÎñ£©£¬Õû¸ö¼Ü¹¹¾Í»á±äµÃ¸´ÔÓ¡£µäÐ͵ÄÀý×Ó¾ÍÊÇһЩͨÓõÄ
Utility À࣬һÖÖ½â¾ö·½°¸ÊǰÑËüÃÇ¿½±´µ½Ã¿Ò»¸ö·þÎñÖÐÈ¥£¬ÓÃÈßÓ໻ȡ¼Ü¹¹µÄ¼òµ¥ÐÔ¡£
·Ö²¼Ê½µÄ±¾ÖÊʹµÃÕâÖּܹ¹ºÜÄÑʵÏÖÔ×ÓÐÔ²Ù×÷£¬½»Ò׻عö»á±È½ÏÀ§ÄÑ¡£
Îå¡¢ÔÆ¼Ü¹¹
ÔÆ½á¹¹£¨cloud architecture£©Ö÷Òª½â¾öÀ©Õ¹ÐԺͲ¢·¢µÄÎÊÌ⣬ÊÇ×îÈÝÒ×À©Õ¹µÄ¼Ü¹¹¡£
ËüµÄ¸ßÀ©Õ¹ÐÔ£¬Ö÷ÒªÔÒòÊÇûʹÓÃÖÐÑëÊý¾Ý¿â£¬¶øÊǰÑÊý¾Ý¶¼¸´ÖƵ½ÄÚ´æÖУ¬±ä³É¿É¸´ÖƵÄÄÚ´æÊý¾Ýµ¥Ôª¡£È»ºó£¬ÒµÎñ´¦ÀíÄÜÁ¦·â×°³ÉÒ»¸ö¸ö´¦Àíµ¥Ôª£¨prcessing
unit£©¡£·ÃÎÊÁ¿Ôö¼Ó£¬¾Íн¨´¦Àíµ¥Ôª£»·ÃÎÊÁ¿¼õÉÙ£¬¾Í¹Ø±Õ´¦Àíµ¥Ôª¡£ÓÉÓÚûÓÐÖÐÑëÊý¾Ý¿â£¬ËùÒÔÀ©Õ¹ÐÔµÄ×î´óÆ¿¾±ÏûʧÁË¡£ÓÉÓÚÿ¸ö´¦Àíµ¥ÔªµÄÊý¾Ý¶¼ÔÚÄÚ´æÀ×îºÃÒª½øÐÐÊý¾Ý³Ö¾Ã»¯¡£
Õâ¸öģʽÖ÷Òª·Ö³ÉÁ½²¿·Ö£º´¦Àíµ¥Ôª£¨processing unit£©ºÍÐéÄâÖмä¼þ£¨virtualized
middleware£©¡£
´¦Àíµ¥Ôª£ºÊµÏÖÒµÎñÂß¼
ÐéÄâÖмä¼þ£º¸ºÔðͨÐÅ¡¢±£³Ösessions¡¢Êý¾Ý¸´ÖÆ¡¢·Ö²¼Ê½´¦Àí¡¢´¦Àíµ¥ÔªµÄ²¿Êð¡£

ÐéÄâÖмä¼þÓÖ°üº¬Ëĸö×é¼þ¡£
ÏûÏ¢Öмä¼þ£¨Messaging Grid£©£º¹ÜÀíÓû§ÇëÇóºÍsession£¬µ±Ò»¸öÇëÇó½øÀ´ÒԺ󣬾ö¶¨·ÖÅ䏸ÄÄÒ»¸ö´¦Àíµ¥Ôª¡£
Êý¾ÝÖмä¼þ£¨Data Grid£©£º½«Êý¾Ý¸´ÖƵ½Ã¿Ò»¸ö´¦Àíµ¥Ôª£¬¼´Êý¾Ýͬ²½¡£±£Ö¤Ä³¸ö´¦Àíµ¥Ôª¶¼µÃµ½Í¬ÑùµÄÊý¾Ý¡£
´¦ÀíÖмä¼þ£¨Processing Grid£©£º¿ÉÑ¡£¬Èç¹ûÒ»¸öÇëÇóÉæ¼°²»Í¬ÀàÐ͵Ĵ¦Àíµ¥Ôª£¬¸ÃÖмä¼þ¸ºÔðе÷´¦Àíµ¥Ôª
²¿ÊðÖмä¼þ£¨Deployment Manager£©£º¸ºÔð´¦Àíµ¥ÔªµÄÆô¶¯ºÍ¹Ø±Õ£¬¼à¿Ø¸ºÔغÍÏìӦʱ¼ä£¬µ±¸ºÔØÔö¼Ó£¬¾ÍÐÂÆô¶¯´¦Àíµ¥Ôª£¬¸ºÔؼõÉÙ£¬¾Í¹Ø±Õ´¦Àíµ¥Ôª¡£
Óŵã
¸ß¸ºÔØ£¬¸ßÀ©Õ¹ÐÔ
¶¯Ì¬²¿Êð
ȱµã
ʵÏÖ¸´ÔÓ£¬³É±¾½Ï¸ß
Ö÷ÒªÊʺÏÍøÕ¾ÀàÓ¦Ó㬲»ºÏÊÊ´óÁ¿Êý¾ÝÍÌ͵ĴóÐÍÊý¾Ý¿âÓ¦ÓÃ
½ÏÄѲâÊÔ |