±à¼ÍƼö: |
´ËÎļòÒª½éÉÜÁËCQRS
& ES ÔÚÁìÓòÇý¶¯Éè¼ÆÄÚµÄʵ¼ù ,ÔÚÉè¼ÆÒµÎñϵͳÉÏÌṩһÖÖеÄ˼·ºÍÑ¡Ôñ¡£Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
1¡¢Ç°ÑÔ
ÁìÓòÇý¶¯£¨Domain ¨C Driven Design£©Éè¼ÆµÄÀíÄîÔÚÓÚ½¨Á¢Ò»ÏµÁмȷûºÏÈí¼þËù´¦ÁìÓò±¾ÉíÓÖÊʺÏÈí¼þ·ÖÎö¿ª·¢ÐèÒªµÄÁìÓòÄ£ÐÍ¡£ÃüÁî²éѯÓëÖ°Ôð·ÖÀ루Command
Query Responsibility Segregation£©ºÍʼþËÝÔ´£¨E¡¢vent Sourcing£©ÊÇΪһÖÖÁìÓòÇý¶¯Éè¼ÆµÄʵ¼ù¡£
±¾ÎÄÖ¼ÔÚ¼òÒª½éÉÜCQRS & Event Sourcing£¬ Ï£ÍûÄܹ»¸ø´ó¼ÒÔÚÉè¼ÆÒµÎñϵͳÉÏÌṩһÖÖеÄ˼·ºÍÑ¡Ôñ¡£
2¡¢ÁìÓòÇý¶¯Éè¼Æ
ÔÚ¿ªÊ¼½éÉÜCQRS֮ǰ£¬ÓбØÒªÏÈÁ˽âDDDÖеÄһЩ»ù±¾Ë¼ÏëºÍ¸ÅÄî¡£
¸÷Ðи÷Òµ¶¼ÓÐÒµÎñϵͳºÍÈí¼þ¿ª·¢µÄÐèÇó¡£±ÈÈçFintech¹«Ë¾»á¿ª·¢´û¿îÒµÎñϵͳ£¬Ö¤È¯¹«Ë¾»á¿ª·¢¹ÉƱÐÐÇé½»Ò×Èí¼þ£¬ÂÃÐÐÉç»á¿ª·¢ÔÚÏßÂÃÓÎÍøÕ¾¡£ËäÈ»×÷Ϊ³ÌÐòÔ±£¬ÎÒÔ޳ɴó¼Ò¶¼Äܲ©Ñ§¶à²Å£¬ÉÏÏþÌìÎÄ£¬ÏÂÖªµØÀí¡£µ«ÊDZϾ¹ÊõÒµÓÐר¹¥£¬×ö´û¿îÒµÎñϵͳʱ£¬ÎÒÃÇÐèÒªÇë½ÌÐÅ´ûר¼Ò£»Ñз¢¹ÉƱÐÐÇé½»Ò×ϵͳʱ£¬ÎÒÃÇ»áºÍ½»Ò×Ô±Ò»ÆðÌÖÂÛ£»Êµ¼ùÂÃÓÎÍøÕ¾Ê±£¬ÐËÐíÎÒÃÇÐèÒªÇë½Ì×ÊÉîµÄÂÃÐмҡ¡
ÄÇôµ±ÎÒÃǺÍÁìÓòר¼ÒÎ§×øÒ»Æð£¬¸ß̸À«ÂÛ֮ʱ£¬ÎÒÃÇÔõÑù²ÅÄÜ×öµ½ÓÐЧµÄ¹µÍ¨£¬¶ø²»ÊǼ¦Í¬Ñ¼½²ÄØ£¿DDD¸øÁËÎÒÃÇÈçÏÂһЩÆô·¢£º
1¡¢È·¶¨µÄÁìÓòÄ£ÐÍ£¨Domain Model£©
Ã÷È·µÄÁìÓòÄ£ÐÍÊÇÒ»ÇеĻù´¡¡£
Ò»¸öÁ¼ºÃ¶¨ÒåµÄÁìÓòÄ£ÐÍÒ»°ã»áÓÐÒÔϼ¸¸öÌØµã£º
¸ÃÄ£ÐÍÓ¦¸Ã°üº¬ËùÓÐÀ´×ÔÁìÓòר¼ÒµÄ֪ʶ
¸ÃÄ£ÐÍ¿ÉÒÔÈÿª·¢ÍŶӺÜÇå³þµÄ½ç¶¨ÁìÓò±ß½ç£¬²¢ÇÒÅжÏ֪ʶµÄÉÏÏÂÎÄÒ»ÖÂÐÔ
¿ª·¢Õß¿ÉÒÔ½«¸ÃÄ£ÐÍÒÔ´úÂëµÄÐÎʽ½øÐбíÊö
¸ÃÄ£ÐÍ¿ÉÒÔ·½±ãµØÓ¦¶ÔÀ´×ÔÁìÓòµÄ±ä»¯
2¡¢Í¨ÓõÄÓïÑÔ£¨Ubiquitous Language£©
¶ÔÓÚÁìÓòÖеÄÃû´Ê£¬¸ÅÄËùÓеĿª·¢ÕߺÍÁìÓòר¼Ò»á²ÉÓÃͬÑùµÄ´Ê»ã£¬²¢ÇÒÓÐ×ÅͬÑùµÄÀí½â¡£
±ÈÈçÔÚÖ§¸¶ÏµÍ³ÖУ¬¡°ÇþµÀ¡±¿ÉÒÔÊÇ¡°Î¢ÐÅÖ§¸¶¡±£¬¡°Á¬Á¬Ö§¸¶¡±£¬¶ø²»ÊÇ¡°¹¤ÉÌÒøÐС±£¬ ¡°ÕÐÉÌÒøÐС±¡£Èç¹û¿ª·¢ÕߺÍÁìÓòר¼ÒµÄÀí½â²»Í¬£¬ÄÇ×îºóÉè¼Æ³öÀ´µÄ²úÆ·ÊÆ±ØÄÏÔ¯±±ÕÞ¡£
3¡¢ÊµÌ壨Entities£©£¬Öµ£¨value£©, ·þÎñ£¨Services£©
ʵÌ壺ÓÐÒ»¸öÈ«¾ÖΨһµÄ±êʶ£¬²¢ÇÒÔÚÕû¸öÉúÃüÖÜÆÚÖв»±ä¡£
±ÈÈçÔÚÖ§¸¶ÏµÍ³ÖУ¬Ò»¸ö½»Ò×£¨Transaction£©¾ÍÊÇÒ»¸öʵÌ塣ÿ¸ö½»Ò×¶¼ÓÐ×Ô¼º¶ÀÓеĽ»Ò×ID¡£
Öµ£ºÖµÃ»ÓÐÒ»¸öΨһµÄ±êʶ¡£±ÈÈçÔÚÖ§¸¶ÏµÍ³ÖС£
½»Ò×µÄ״̬¿ÉÒÔ·ÖΪ£º¡°´´½¨ÖС±£¬¡°´¦ÀíÖС±£¬¡°³É¹¦¡±£¬¡°Ê§°Ü¡±¡£¡¡ËùÒÔ½»Ò×µÄ״̬¾ÍÊÇÒ»¸öÖµ¡£
·þÎñ£º³ýÁËʵÌåºÍÖµÖ®Í⣬¶ÔÓÚÃèÊöµÄ¶¯×÷£¬ÁìÓòÇý¶¯µÄÉè¼ÆÈÏΪÕâÊÇÒ»¸ö·þÎñ¡£
±ÈÈçÔÚÖ§¸¶ÏµÍ³ÖУ¬ÓëµÚÈý·½Ö§¸¶°ó¶¨ÒøÐп¨µÄÐÐΪ£¬ÎÒÃǾͿÉÒÔÈÏΪÊÇÒ»ÖÖ·þÎñ¡£
4¡¢¾ÛºÏ£¨Aggregate£©ºÍ¾ÛºÏ¸ù£¨Aggregate Root£©
Ïà¶ÔÓÚʵÌ壬ֵºÍ·þÎñÊÇÓÃÀ´½øÐÐÁìÓòÇý¶¯Éè¼ÆÖеĽ¨Ä£Ä£ÐÍ¡£¾ÛºÏºÍ¾ÛºÏ¸ùÔòÊǸù¾ÝÁìÓòµÄÔÔò·Ö¸î²¢ÇÒÃèÊöʵÌåÖ®¼äµÄ×éºÏ¡£
ÏëÏóһϣ¬Èç¹ûÒ»¸öϵͳÖÐÓÐÐí¶àÓû§£¬Ã¿¸öÓû§¶¼¿ÉÒÔÐ޸IJ¿·ÖÊý¾Ý¡£ÄÇôÈçºÎ±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔÎÊÌ⣺
µ±Ã¿Ò»¸öÓû§ÐÞ¸ÄÊý¾Ýʱ£¬½«Êý¾Ý¿âÖÐËùÓÐµÄ±í¶¼Ëø¶¨¡£È·Êµ£¬ÕâÑù¿ÉÒÔ±£Ö¤Ç¿Ò»ÖÂÐÔ£¬µ«ÊÇÕâ¿Ï¶¨²»ÊÇÒ»¸öÓû§ÌåÑéºÃµÄϵͳ£¬²¢ÇÒÐÔÄÜÊ®·ÖÔã¸â
µ±Ã¿Ò»¸öÓû§ÐÞ¸ÄÊý¾Ýʱ£¬Ö»½«²¿·ÖÊý¾ÝËø¶¨¡£Èç´ËÔÚÓû§µÄ¿ÉÓÃÐÔºÍϵͳµÄÒ»ÖÂÐÔÉÏÄÜÈ¡µ½È¨ºâ
ÕâÀïµÄÎÊÌâ¾ÍÔÚÓÚ£¬ÈçºÎ½ç¶¨B·½°¸Öеġ°²¿·Ö¡±£¬ DDDÈÏΪ¾ÛºÏ¾ÍÊÇÔÚ¿¼Á¿ÏµÍ³Ò»ÖÂÐÔºó£¬Ïà¹ØµÄʵÌåºÍÖµ×éºÏÔÚÒ»ÆðµÄ×îС²»¿É·Ö¸îµÄ¼¯ºÏ¡£¶ø¾ÛºÏ¸ù±¾ÖÊÈÔÈ»ÊÇÒ»¸öʵÌ壬
ÔÚDDDÖÐÈÏΪ¾ÛºÏ¸ùÊÇ·ÃÎʾۺϵÄΨһ·½Ê½¡£
¿ÉÄÜ˵µÄ±È½Ï³éÏó£¬ÈÔÈ»ÒÔÖ§¸¶ÏµÍ³ÎªÀý£ºÎÒÃÇÈÏΪ¡°¶©µ¥¡±¾ÍÊÇÒ»¸ö¾ÛºÏ¡£¶©µ¥¿ÉÒÔ°üº¬¶à¸ö¡°½»Òס±£¬ ͬʱ¶©µ¥Ò²ÊÇÒ»¸öʵÌ壬ÒòΪ¶©µ¥ºÅÊǶ©µ¥µÄΨһ¡°±êʶ¡±£¬¶©µ¥±¾ÉíÒ²¿ÉÒÔ×÷Ϊ¶©µ¥×ÔÉí¾ÛºÏµÄ¾ÛºÏ¸ù£¬Íâ½çͨ¹ý·ÃÎʶ©µ¥²ÅÄÜ·ÃÎʶ©µ¥ÖеĽ»Òס£
ÒÔÉϱãÊÇDDDµÄһЩ»ù±¾¸ÅÄ×÷Ϊ¿ª·¢Õß¶øÑÔ£¬ÎÒ²¢²»ÔÞͬ¸ÅÄîµÄ¶ÑÆöºÍ½ÌÌõÖ÷Ò壬ÆäʵºÜ¶àʱºò£¬ÎÒÃÇÒѾ²»×Ô¾õµÄʹÓÃÁËDDDµÄһЩ¸ÅÄîÇ±ÒÆÄ¬»¯µÄÖ¸µ¼ÎÒÃÇÆ½Ê±µÄÈí¼þ¿ª·¢£¬±ÈÈçÎÒÃÇ»áÔÚ¿ª·¢µÄС×éÄÚ£¬Ê¹ÓÃÔ¼¶¨Ë׳ƵÄÃû´Ê£¬¿ª·¢ÕߺÍÒµÎñÔ±¶¼ÄÜÃ÷°×ÕâЩûÓÐÆçÒåµÄÃû´Ê£¨Í¨ÓÃÓïÑÔ£©£¬
¿ª·¢ÕßÒ²»áÕ¾ÔÚÒµÎñÔ±µÄ½Ç¶È˼¿¼Èí¼þϵͳÄÚ²¿Éè¼Æ·Ö¸îµÄÔÔò£¨¾ÛºÏ/¾ÛºÏ¸ùµÄÉè¼Æ£©¡£ÎÒÏàÐÅDDD²»ÊÇÈí¼þÉè¼ÆµÄÌõÌõ¿ò¿ò£¬¶øÊÇ´óÁ¿Èí¼þÉè¼ÆÊµ¼ùºó£¬¶ÔÓÚÁ¼ºÃÉè¼Æ·¶Ê½µÄÒ»¸ö×ܽáºÍÌáÁ¶¡£
3¡¢ÃüÁî²éѯÓëÖ°Ôð & ʼþËÝÔ´µÄϵͳ¼Ü¹¹
Ê×ÏÈÎÒÃÇÀ´¿´Ò»¸ö¾µäµÄ»ùÓÚÊý¾ÝÇý¶¯£¨Data Driven£©µÄϵͳÉè¼Æ½á¹¹£º

ÕâÊÇÒ»¸ö·Ç³£¾µäµÄϵͳÉè¼Æ£¬Êý¾ÝÇý¶¯µÄ¼Ü¹¹ÓкܶàÏÖ´úORM¿ÉÒÔ·½±ãµØÊµÏÖ»ù±¾µÄ¹¦ÄÜ£¬Óŵ㲻ÑÔ¶øÓ÷¡£ÎÒÃǾÍÀ´Ì¸Ì¸ÕâÑùµÄϵͳµÄ¾ÖÏÞÐÔ£º
1¡¢ÎÞ·¨Êµ¼ùÁìÓòÇý¶¯±à³Ì
ºÜÃ÷ÏÔ£¬ÕâÑùϵͳ¶ÔÁìÓò¶ÔÏó×î»ù±¾µÄ²Ù×÷¾ÍÊÇÔöɾ¸Ä²é£¨CURD£©£¬µ«ÊÇÔöɾ¸Ä²éÊǼÆËã»úÊÀ½çµÄÊõÓ²¢²»ÊÇÒ»¸öÁìÓòµÄͨÓÃÓïÑÔ¡£ÔÚÁìÓòÊÀ½çÖУ¬Í¨ÓõÄÓïÑÔÔ¶Ô¶±ÈÔöɾ¸Ä²é¸´ÔӵĶࡣ
»¹ÊÇÒÔÖ§¸¶ÏµÍ³ÎªÀý£º±ÈÈç´´½¨¡°¶©µ¥¡±£¬Õâ²¢²»ÊÇÒ»¸ö¼òµ¥µÄÔö¼Ó²Ù×÷¡£ÒòΪ¡°¶©µ¥¡±¿ÉÄܰüº¬¶à¸ö¡°½»Òס±£¬ËùÒÔ´´½¨¡°¶©µ¥¡±Æäʵ°üÀ¨Ôö¼ÓÒ»¸ö¡°¶©µ¥¡±ÐÅÏ¢ÒÔ¼°Ôö¼Ó¸Ã¶©µ¥ÏµĶà¸ö¡°½»Òס±ÐÅÏ¢£¬²¢ÇÒ×îÖÕ½«¶©µ¥ºÍ½»Ò×Ôö¼Ó£¨ÐòÁл¯£©µ½Êý¾Ý´æ´¢ÖС£¶ø²éѯ¶©µ¥£¬Ôò°üÀ¨²éѯ¶©µ¥ËùÊôµÄ¡°½»Òס±£¬×îÖÕ×éºÏ³ö¶©µ¥²¢ÇÒ·µ»Ø¡£
Èç¹û×îÖÕµÄÊý¾Ý´æ´¢ÊÇÒ»¸ö¹ØÏµÐ͵ÄÊý¾Ý¿â£¬Ôò´´½¨¡°¶©µ¥¡±ºÍ²éѯ¡°¶©µ¥¡±µÄ²Ù×÷£¬ÐèÒª¿ª·¢ÈËÔ±Àí½â¶©µ¥ºÍ½»Ò׵ĹØÏµ£¬²¢ÇÒת»»¶©µ¥/½»Ò×Ä£ÐÍÖÁÒ»¸ö¹ØÏµÐ͵ÄÊý¾Ý¿â¡£
2¡¢µ¥Ò»µÄ¶ÔÏóʵÌå×÷ÓÃÓÚÊý¾Ý¶Áд
ÈÔÈ»ÒÔÖ§¸¶ÏµÍ³ÎªÀý£ºÎÞÂÛÊÇÔö¼Ó¶©µ¥»¹ÊDzéѯ¶©µ¥£¬ÔÚÕâÑùµÄϵͳÖУ¬¶©µ¥±»½¨Ä£³ÉÒ»¸öµ¥Ò»µÄʵÌå¡£ÎÞÂÛÊÇ´æ´¢»¹ÊǶÁÈ¡£¬¶¼»á½«Õû¸ö¶©µ¥¶ÔÏóÐòÁл¯µ½Êý¾Ý´æ´¢»òÕß·´ÐòÁгöÀ´¡£Èç¹ûÎÒÃÇÖ»ÊÇÐÞ¸ÄÒ»¸ö¶©µ¥µÄ״̬£¬²¢ÇÒ²éѯ×îÐµĶ©µ¥×´Ì¬£¬ÕæµÄÐèÒª½«Õû¸ö¶ÔÏó¶¼Ð´ÈëÊý¾Ý´æ´¢»òÕß¶ÁÈ¡³öÀ´Âð£¿Æ²¿ªÏµÍ³ÐÔÄܶøÑÔ£¬°²È«ÐÔÒ²ÊÇÒ»¸öÖµµÃ¿¼Á¿µÄÎÊÌâ¡£
»ùÓÚ¶ÔÏÖʵÊÀ½çµÄ¹Û²ì£¬Èκεķ½·¨£¬¶¼¿ÉÒÔ²ð½âΪÁ½ÀࣺÃüÁîºÍ²éѯ¡£²éѯ¸ºÔð·µ»ØÊý¾Ý£¬²¢ÇÒ²»¸Ä±äÊý¾ÝµÄ״̬¡£ÃüÁÔð¸Ä±äÊý¾ÝµÄ״̬£¬²úÉúʼþ£¬µ«ÊDz»·µ»ØÈκÎÊý¾Ý¡£Èκθ´Ôӵķ½·¨£¨DDDÖеķþÎñ£©£¬¶¼¿ÉÒÔÊÇÃüÁîºÍ²éѯµÄ×éºÏ¡£
ÓÉ´Ë£¬ÎÒÃÇÀ´¿´Ò»Ï»ùÓÚCQRS & Event SourcingµÄϵͳÉè¼Æ£º

ÔÚCQRSµÄ¼Ü¹¹Éè¼ÆÖУ¬¿Í»§¶Ë¿ÉÒÔ·¢ËÍÃüÁ»òÕßÒªÇó²éѯ¡£¶ÔÓÚÃüÁî¶øÑÔ£¬ÓÉÃüÁî×ÜÏ߸ºÔð·Ö·¢¸øÏàÓ¦µÄÃüÁî´¦ÀíÆ÷¡£ÃüÁî´¦ÀíÆ÷ͨ¹ýʼþËÝÔ´¼ÓÔØµÃµ½ÏàÓ¦µÄ¾ÛºÏ¸ù£¬Ð޸ľۺϣ¬²¢ÇÒ²úÉúÏàÓ¦µÄʼþ¡£Ê¼þÊ×ÏȻᱻ´æ´¢£¬¼Ì¶ø±»Ê¼þ×ÜÏß·Ö·¢¸øÊ¼þ´¦ÀíÆ÷¡£ÓÉʼþ´¦ÀíÆ÷¸ù¾ÝÏàÓ¦µÄʼþ½«ÁìÓòÄ£ÐÍת»»³ÉдÊý¾Ý¿âÖеĴ洢±íÏÖÐÎʽ¡£
дÊý¾Ý¿â¿ÉÒÔÒÔÒ»ÖÖ¿É¿¿µÄ·½Ê½£¬½«Êý¾Ýͬ²½µ½¶ÁÊý¾Ý¿â£¬¶ÔÓÚ½ÓÊÜ×îÖÕÒ»ÖÂÐÔµÄϵͳ¶øÑÔ£¬ÕâÊÇ¿ÉÒÔ½ÓÊܵÄͬ²½·½Ê½¡£
¶øÁíÒ»·½Ã棬¶ÔÓ¦²éѯµÄÐèÇ󣬿ÉÒÔÓɼòµ¥µÄ²éѯ´¦ÀíÆ÷½ÓÊܲéѯÇëÇ󣬽«Ð´Êý¾Ý¿âÖеÄÊý¾Ýת»»³É²éѯÐèÒªµÄÐÎʽÓèÒÔ·µ»Ø¡£
ʼþËÝÔ´ÊÇÒ»ÖÖͨ¹ý²É¼¯ËùÓеÄÀúʷʼþ»¹ÔÒ»¸ö¾ÛºÏ״̬µÄ·½·¨¡£
ÒÔÒ»¸öÖ§¸¶ÏµÍ³µÄ¶©µ¥£¨¾ÛºÏ£©ÎªÀý¡£¶©µ¥µÄÉúÃüÖÜÆÚ¿ÉÒÔÊÇ´´½¨ -> ´ý¼Æ»® -> Ö´ÐÐÖÐ
-> Íê³É¡£ÄÇô¶ÔÓ¦µÄʼþ¿ÉÒÔÊǶ©µ¥´´½¨Ê¼þ£¬¶©µ¥¼Æ»®Ö´ÐÐʼþ£¬¶©µ¥Ö´ÐÐʼþ£¬¶©µ¥Íê³Éʼþ¡£
¶ÔÓÚÆÕͨÊý¾ÝÇý¶¯µÄÉè¼Æ¶øÑÔ£¬¶©µ¥µÄÐÅÏ¢´æ´¢¿ÉÄÜÊÇÕâÑùµÄ£º

£¨¹ØÏµÐÍÊý¾Ý¿â£©¶ø¶ÔÓÚÖ§³ÖʼþËÝÔ´µÄϵͳ¶øÑÔ£¬¶©µ¥µÄ´æ´¢¿ÉÒÔÊÇÕâÑùµÄ£º
{
¡°aggregateId¡± : ¡°201609011005¡±
¡°eventPayload ¡°: ¡°Created¡±
¡°timeStamp¡± : ¡°2016/09/01 10:50:01 ¡±
}
{
¡°aggregateId¡± : ¡°201609011005¡±
¡°eventPayload ¡°: ¡°Scheduled¡±
¡°timeStamp¡± : ¡°2016/09/01 10:51:11 ¡±
}
{
¡°aggregateId¡± : ¡°201609011005¡±
¡°eventPayload ¡°: ¡°Executing¡±
¡°timeStamp¡± : ¡°2016/09/01 18:02:59 ¡±
} |
ʼþËÝÔ´½«ÕâÈý¸öʼþÒÀ´Î¼ÓÔØ´¦Àí£¬±ã¿ÉÒÔ»¹Ô³ö¶©µ¥µÄÏÖÔÚ״̬¡£ÔÚ¾ÛºÏʼþÊýÁ¿´óµÄÇé¿öÏ£¬²ÉÓÃʼþ¿ìÕÕ£¨Event
Snapshot£©¿ÉÒÔÓÐЧÌá¸ßʼþËÝÔ´µÄЧÂʺÍËÙ¶È¡£
¾¹ýÒÔÉÏ·ÖÎö£¬ÔÚCQRS & Event SourcingµÄÉè¼ÆÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÒÔÏÂÓŵ㣺
¶Áд·ÖÀ룺²»Í¬ÓÚÊý¾ÝÇý¶¯µÄÉè¼Æ£¬¶ÁдʹÓõÄͬһ¸öÁ÷³Ì£¬ÉõÖÁÊÇͬһ¸öÄ£ÐÍ¡£ÔÚCQRSÖУ¬ÁìÓòÄ£Ð͸ù¾ÝʼþÐòÁл¯ÖÁÊý¾Ý¿â¡£¶ø²éѯģ¿éÔòÍêÈ«¿ÉÒÔ¶¨ÒåÐèÒª²éѯÁìÓòÄ£ÐÍ¡£¶ÁдÊÇÍêÈ«¸ôÀëµÄ¡£Èç¹ûʹÓÃÊý¾Ý¿âͬ²½µÄ·½Ê½£¬¶ÁдÉõÖÁ¿ÉÒÔʹÓò»Í¬µÄÊý¾Ý¿â£¨È¡¾öÓÚϵͳ¶ÔÒ»ÖÂÐÔµÄÐèÇ󣩡£ËùÒÔÔÚÕâÀÎÒÃÇ¿ÉÒÔÌá¸ßϵͳµÄÍÌÍÂÁ¿ºÍÐÔÄÜ¡£²¢ÇÒ¿ÉÒÔ·Ö±ð¶ÔдÊý¾Ý¿âºÍ¶ÁÊý¾Ý¿â×ö³öÕë¶ÔÐÔµÄÓÅ»¯¡£
·ûºÏÁìÓòÉè¼ÆµÄÔÔò£ºÎÞÂÛÊÇÃüÁÊÇʼþ£¬¶¼ÊÇ»ùÓÚ¶ÔÏÖʵÊÀ½çµÄ¹Û²ì¡£²»Í¬ÓÚÔöɾ¸Ä£¬Õû¸öϵͳÊÇÓÉÃüÁîºÍʼþÇý¶¯£¬ÓÉÃüÁî¶ÔÏàÓ¦µÄ¾ÛºÏ£¨ÊµÌ壩½øÐÐÐ޸ġ£¶øÐÞ¸ÄÔò²úÉúÁËÏàÓ¦µÄʼþ£¬Ê¼þ¿ÉÒÔÔÙ²úÉúÃüÁÈç´ËÍù¸´¡£
ÎÒÃǵÄÊÀ½ç´Ë¿Ì²»ÕýÊÇÓÉÎÞÊý¸öʼþµþ¼Ó²úÉúµÄ½á¹ûÂð£¿
Õû¸öϵͳµÄËùÓÐʼþ¶¼ÓÐÀúÊ·¼Ç¼£º¶ÔÓÚÈκξۺϵÄÉúÃüÖÜÆÚÖУ¬ÈçºÎ±»´´½¨£¬ÐÞ¸ÄÖ±ÖÁ»ØÊյĹý³Ì£¬¶¼¿ÉÒÔͨ¹ýÒ»¸öÓÖÒ»¸öʼþ±»»ØËÝ£¬·ÖÎö¡£ÎÒÃDz»½ö½ö¹ØÐľۺÏ×îÖÕ״̬£¬¶ÔÖмä¼Ç¼µÄ·ÖÎöͬÑùÒ²ÓмÛÖµ¡£
ͬÑù£¬CQRS & Event Sourcing Ò²ÓÐ×ÔÉíµÄ¾ÖÏÞÐÔ£º
ϵͳ½á¹¹Ïà¶ÔÓÚ¾µäµÄÉè¼Æ¶øÑÔ¸´ÔÓ¡£ÐèÒªÉè¼ÆÃüÁî×ÜÏߣ¬ÃüÁî·Ö·¢Æ÷£¬Ê¼þ×ÜÏߣ¬Ê¼þ·Ö·¢Æ÷¡£ÐèÒªÉè¼ÆÁ¼ºÃµÄʼþ´æ´¢»úÖÆ£¬ÒÔ¼°Ê¼þËÝÔ´»úÖÆ
¶ÔÓÚ¼òµ¥£¬¾²Ì¬µÄϵͳ£¬»òÕßÊÇûÓи´ÔÓÐ×÷ÉÏÏÂÎÄ£¨Bounded Context£©µÄÁìÓòÄ£Ð͵Äϵͳ£¬ÒýÈëCQRS²¢²»»áµÃµ½ºÜ¶àÒæ´¦£¬Ïà·´»áʹµÃϵͳӷÖ×£¬ÅÓ´ó
ÒòΪÒýÈëÁ˲¿·ÖDDDÁìÓòÉè¼ÆµÄ¸ÅÄ¶ÔÓÚ¿ª·¢ÈËÔ±Ò²ÓÐÒ»¶¨µÄѧϰÇúÏß
4¡¢×ܽá
CQRS & ES ¸øÎÒÃÇÌṩÁËÒ»ÖÖÓбðÓÚ´«Í³¾µäÌåϵµÄÉè¼ÆË¼Â·£¬ÔÚÒµÎñϵͳÖзÖÎöÄÄÀïÐèҪʹÓÃCQRS
& ES ÐèÒªÎÒÃÇȨºâʵʩÕâÖÖÐÂÌåϵ¼Ü¹¹ËùÐèµÄ´ú¼ÛºÍ³¤ÆÚµÄ»Ø±¨¡£´ËÎļòÒª½éÉÜÁËCQRS &
ES ÔÚÁìÓòÇý¶¯Éè¼ÆÄÚµÄʵ¼ù£¬Ï£ÍûÄÜÅ×שÒýÓñ£¬ÓëÖî¾ý¹²Ãã¡£
|