Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
dubbo¸ß¼¶ÅäÖÃѧϰ£¨ÉÏ£©
 
×÷Õߣºwanglei0622 À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-9-10
  16264  次浏览      30
 

Æô¶¯Ê±¼ì²é

Dubboȱʡ»áÔÚÆô¶¯Ê±¼ì²éÒÀÀµµÄ·þÎñÊÇ·ñ¿ÉÓ㬲»¿ÉÓÃʱ»áÅ׳öÒì³££¬×èÖ¹Spring³õʼ»¯Íê³É£¬ÒÔ±ãÉÏÏßʱ£¬Äܼ°Ôç·¢ÏÖÎÊÌ⣬ĬÈÏcheck=true¡£

Èç¹ûÄãµÄSpringÈÝÆ÷ÊÇÀÁ¼ÓÔØµÄ£¬»òÕßͨ¹ýAPI±à³ÌÑÓ³ÙÒýÓ÷þÎñ£¬Çë¹Ø±Õcheck£¬·ñÔò·þÎñÁÙʱ²»¿ÉÓÃʱ£¬»áÅ׳öÒì³££¬Äõ½nullÒýÓã¬Èç¹ûcheck=false£¬×ÜÊǻ᷵»ØÒýÓ㬵±·þÎñ»Ö¸´Ê±£¬ÄÜ×Ô¶¯Á¬ÉÏ¡£

¿ÉÒÔͨ¹ýcheck="false"¹Ø±Õ¼ì²é£¬±ÈÈ磬²âÊÔʱ£¬ÓÐЩ·þÎñ²»¹ØÐÄ£¬»òÕß³öÏÖÁËÑ­»·ÒÀÀµ£¬±ØÐëÓÐÒ»·½ÏÈÆô¶¯¡£

¹Ø±Õij¸ö·þÎñµÄÆô¶¯Ê±¼ì²é£º(ûÓÐÌṩÕßʱ±¨´í)

<dubbo:reference

interface="com.foo.BarService"

check="false"

/>

¹Ø±ÕËùÓзþÎñµÄÆô¶¯Ê±¼ì²é£º(ûÓÐÌṩÕßʱ±¨´í)


<dubbo:consumer

check="false"

/>

¹Ø±Õ×¢²áÖÐÐÄÆô¶¯Ê±¼ì²é£º(×¢²á¶©ÔÄʧ°Üʱ±¨´í)

<dubbo:registry

check="false"

/>

Ò²¿ÉÒÔÓÃdubbo.propertiesÅäÖãº

dubbo.reference.com.foo.BarService.check=false


dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry.check=false

Ò²¿ÉÒÔÓÃ-D²ÎÊý£º

java
 -Ddubbo.reference.com.foo.BarService.check=false
java
 -Ddubbo.reference.check=false
java
 -Ddubbo.consumer.check=false 
java
 -Ddubbo.registry.check=false

×¢ÒâÇø±ð

dubbo.reference.check=false£¬Ç¿ÖƸıäËùÓÐreferenceµÄcheckÖµ£¬¾ÍËãÅäÖÃÖÐÓÐÉùÃ÷£¬Ò²»á±»¸²¸Ç¡£

dubbo.consumer.check=false£¬ÊÇÉèÖÃcheckµÄȱʡֵ£¬Èç¹ûÅäÖÃÖÐÓÐÏÔʽµÄÉùÃ÷£¬È磺<dubbo:reference check="true"/>£¬²»»áÊÜÓ°Ïì¡£

dubbo.registry.check=false£¬Ç°ÃæÁ½¸ö¶¼ÊÇÖ¸¶©Ôijɹ¦£¬µ«ÌṩÕßÁбíÊÇ·ñΪ¿ÕÊÇ·ñ±¨´í£¬Èç¹û×¢²á¶©ÔÄʧ°Üʱ£¬Ò²ÔÊÐíÆô¶¯£¬ÐèʹÓôËÑ¡Ï½«ÔÚºǫ́¶¨Ê±ÖØÊÔ¡£

ÒýÓÃȱʡÊÇÑÓ³Ù³õʼ»¯µÄ£¬Ö»ÓÐÒýÓñ»×¢Èëµ½ÆäËüBean£¬»ò±»getBean()»ñÈ¡£¬²Å»á³õʼ»¯¡£

Èç¹ûÐèÒª¼¢¶ö¼ÓÔØ£¬¼´Ã»ÓÐÈËÒýÓÃÒ²Á¢¼´Éú³É¶¯Ì¬´úÀí£¬¿ÉÒÔÅäÖãº

<dubbo:reference

interface="com.foo.BarService"

init="true"

/>

¼¯ÈºÈÝ´í

ÔÚ¼¯Èºµ÷ÓÃʧ°Üʱ£¬DubboÌṩÁ˶àÖÖÈÝ´í·½°¸£¬È±Ê¡ÎªfailoverÖØÊÔ¡£

¸÷½Úµã¹ØÏµ£º

ÕâÀïµÄInvokerÊÇProviderµÄÒ»¸ö¿Éµ÷ÓÃServiceµÄ³éÏó£¬Invoker·â×°ÁËProviderµØÖ·¼°Service½Ó¿ÚÐÅÏ¢¡£

Directory´ú±í¶à¸öInvoker£¬¿ÉÒÔ°ÑËü¿´³ÉList<Invoker>£¬µ«ÓëList²»Í¬µÄÊÇ£¬ËüµÄÖµ¿ÉÄÜÊǶ¯Ì¬±ä»¯µÄ£¬±ÈÈç×¢²áÖÐÐÄÍÆËͱä¸ü¡£

Cluster½«DirectoryÖеĶà¸öInvokerαװ³ÉÒ»¸öInvoker£¬¶ÔÉϲã͸Ã÷£¬Î±×°¹ý³Ì°üº¬ÁËÈÝ´íÂß¼­£¬µ÷ÓÃʧ°Üºó£¬ÖØÊÔÁíÒ»¸ö¡£

Router¸ºÔð´Ó¶à¸öInvokerÖа´Â·ÓɹæÔòÑ¡³ö×Ó¼¯£¬±ÈÈç¶Áд·ÖÀ룬ӦÓøôÀëµÈ¡£

LoadBalance¸ºÔð´Ó¶à¸öInvokerÖÐÑ¡³ö¾ßÌåµÄÒ»¸öÓÃÓÚ±¾´Îµ÷Óã¬Ñ¡µÄ¹ý³Ì°üº¬Á˸ºÔؾùºâËã·¨£¬µ÷ÓÃʧ°Üºó£¬ÐèÒªÖØÑ¡¡£

¼¯ÈºÈÝ´íģʽ£º

Failover Cluster

ʧ°Ü×Ô¶¯Çл»£¬µ±³öÏÖʧ°Ü£¬ÖØÊÔÆäËü·þÎñÆ÷¡£(ȱʡ)

ͨ³£ÓÃÓÚ¶Á²Ù×÷£¬µ«ÖØÊÔ»á´øÀ´¸ü³¤ÑÓ³Ù¡£

¿Éͨ¹ýretries="2"À´ÉèÖÃÖØÊÔ´ÎÊý(²»º¬µÚÒ»´Î)¡£

Failfast Cluster

¿ìËÙʧ°Ü£¬Ö»·¢ÆðÒ»´Îµ÷Óã¬Ê§°ÜÁ¢¼´±¨´í¡£

ͨ³£ÓÃÓÚ·ÇÃݵÈÐÔµÄд²Ù×÷£¬±ÈÈçÐÂÔö¼Ç¼¡£

Failsafe Cluster

ʧ°Ü°²È«£¬³öÏÖÒ쳣ʱ£¬Ö±½ÓºöÂÔ¡£

ͨ³£ÓÃÓÚдÈëÉó¼ÆÈÕÖ¾µÈ²Ù×÷¡£

Failback Cluster

ʧ°Ü×Ô¶¯»Ö¸´£¬ºǫ́¼Ç¼ʧ°ÜÇëÇ󣬶¨Ê±ÖØ·¢¡£

ͨ³£ÓÃÓÚÏûϢ֪ͨ²Ù×÷¡£

Forking Cluster

²¢Ðе÷Óöà¸ö·þÎñÆ÷£¬Ö»ÒªÒ»¸ö³É¹¦¼´·µ»Ø¡£

ͨ³£ÓÃÓÚʵʱÐÔÒªÇó½Ï¸ßµÄ¶Á²Ù×÷£¬µ«ÐèÒªÀ˷Ѹü¶à·þÎñ×ÊÔ´¡£

¿Éͨ¹ýforks="2"À´ÉèÖÃ×î´ó²¢ÐÐÊý¡£

Broadcast Cluster

¹ã²¥µ÷ÓÃËùÓÐÌṩÕߣ¬Öð¸öµ÷Óã¬ÈÎÒâһ̨±¨´íÔò±¨´í¡£(2.1.0¿ªÊ¼Ö§³Ö)

ͨ³£ÓÃÓÚ֪ͨËùÓÐÌṩÕ߸üлº´æ»òÈÕÖ¾µÈ±¾µØ×ÊÔ´ÐÅÏ¢¡£

ÖØÊÔ´ÎÊýÅäÖÃÈ磺(failover¼¯ÈºÄ£Ê½ÉúЧ)


<dubbo:service

retries="2"

/>

»ò£º

<dubbo:reference

retries="2"

/>

»ò£º


<dubbo:reference>


<dubbo:method

name="findFoo"

retries="2"

/>
</dubbo:reference>

¼¯ÈºÄ£Ê½ÅäÖÃÈ磺

<dubbo:service

cluster="failsafe"

/>

»ò£º

<dubbo:reference

cluster="failsafe"

/>

¸ºÔؾùºâ

ÔÚ¼¯Èº¸ºÔؾùºâʱ£¬DubboÌṩÁ˶àÖÖ¾ùºâ²ßÂÔ£¬È±Ê¡ÎªrandomËæ»úµ÷Óá£

Random LoadBalance

Ëæ»ú£¬°´È¨ÖØÉèÖÃËæ»ú¸ÅÂÊ¡£

ÔÚÒ»¸ö½ØÃæÉÏÅöײµÄ¸ÅÂʸߣ¬µ«µ÷ÓÃÁ¿Ô½´ó·Ö²¼Ô½¾ùÔÈ£¬¶øÇÒ°´¸ÅÂÊʹÓÃÈ¨ÖØºóÒ²±È½Ï¾ùÔÈ£¬ÓÐÀûÓÚ¶¯Ì¬µ÷ÕûÌṩÕßÈ¨ÖØ¡£

RoundRobin LoadBalance

ÂÖÑ­£¬°´¹«Ô¼ºóµÄÈ¨ÖØÉèÖÃÂÖÑ­±ÈÂÊ¡£

´æÔÚÂýµÄÌṩÕßÀÛ»ýÇëÇóÎÊÌ⣬±ÈÈ磺µÚ¶þ̨»úÆ÷ºÜÂý£¬µ«Ã»¹Ò£¬µ±ÇëÇóµ÷µ½µÚ¶þ̨ʱ¾Í¿¨ÔÚÄÇ£¬¾Ã¶ø¾ÃÖ®£¬ËùÓÐÇëÇ󶼿¨ÔÚµ÷µ½µÚ¶þ̨ÉÏ¡£

LeastActive LoadBalance

×îÉÙ»îÔ¾µ÷ÓÃÊý£¬Ïàͬ»îÔ¾ÊýµÄËæ»ú£¬»îÔ¾ÊýÖ¸µ÷ÓÃǰºó¼ÆÊý²î¡£

ʹÂýµÄÌṩÕßÊÕµ½¸üÉÙÇëÇó£¬ÒòΪԽÂýµÄÌṩÕߵĵ÷ÓÃǰºó¼ÆÊý²î»áÔ½´ó¡£

ConsistentHash LoadBalance

Ò»ÖÂÐÔHash£¬Ïàͬ²ÎÊýµÄÇëÇó×ÜÊÇ·¢µ½Í¬Ò»ÌṩÕß¡£

µ±Ä³Ò»Ì¨ÌṩÕß¹Òʱ£¬Ô­±¾·¢Íù¸ÃÌṩÕßµÄÇëÇ󣬻ùÓÚÐéÄâ½Úµã£¬Æ½Ì¯µ½ÆäËüÌṩÕߣ¬²»»áÒýÆð¾çÁұ䶯¡£

Ëã·¨²Î¼û£ºhttp://en.wikipedia.org/wiki/Consistent_hashing¡£

ȱʡֻ¶ÔµÚÒ»¸ö²ÎÊýHash£¬Èç¹ûÒªÐ޸ģ¬ÇëÅäÖÃ<dubbo:parameter key="hash.arguments" value="0,1" />

ȱʡÓÃ160·ÝÐéÄâ½Úµã£¬Èç¹ûÒªÐ޸ģ¬ÇëÅäÖÃ<dubbo:parameter key="hash.nodes" value="320" />

ÅäÖÃÈ磺

<dubbo:service

interface="..."

loadbalance="roundrobin"

/>

»ò£º

<dubbo:reference

interface="..."

loadbalance="roundrobin"

/>

»ò£º

<dubbo:service

interface="...">


<dubbo:method

name="..."

loadbalance="roundrobin"/>


</dubbo:service>

»ò£º

<dubbo:reference

interface="...">


<dubbo:method

name="..."

loadbalance="roundrobin"/>


</dubbo:reference>

Ïß³ÌÄ£ÐÍ

¼þ´¦ÀíÏß³Ì˵Ã÷

Èç¹ûʼþ´¦ÀíµÄÂß¼­ÄÜѸËÙÍê³É£¬²¢ÇÒ²»»á·¢ÆðеÄIOÇëÇ󣬱ÈÈçÖ»ÊÇÔÚÄÚ´æÖмǸö±êʶ£¬ÔòÖ±½ÓÔÚIOÏß³ÌÉÏ´¦Àí¸ü¿ì£¬ÒòΪ¼õÉÙÁËÏ̳߳ص÷¶È¡£

µ«Èç¹ûʼþ´¦ÀíÂß¼­½ÏÂý£¬»òÕßÐèÒª·¢ÆðеÄIOÇëÇ󣬱ÈÈçÐèÒª²éѯÊý¾Ý¿â£¬Ôò±ØÐëÅÉ·¢µ½Ï̳߳أ¬·ñÔòIOÏß³Ì×èÈû£¬½«µ¼Ö²»ÄܽÓÊÕÆäËüÇëÇó¡£

Èç¹ûÓÃIOÏ̴߳¦Àíʼþ£¬ÓÖÔÚʼþ´¦Àí¹ý³ÌÖз¢ÆðеÄIOÇëÇ󣬱ÈÈçÔÚÁ¬½ÓʼþÖз¢ÆðµÇ¼ÇëÇ󣬻ᱨ¡°¿ÉÄÜÒý·¢ËÀËø¡±Òì³££¬µ«²»»áÕæËÀËø¡£

Dispatcher

all ËùÓÐÏûÏ¢¶¼ÅÉ·¢µ½Ï̳߳أ¬°üÀ¨ÇëÇó£¬ÏìÓ¦£¬Á¬½Óʼþ£¬¶Ï¿ªÊ¼þ£¬ÐÄÌøµÈ¡£

direct ËùÓÐÏûÏ¢¶¼²»ÅÉ·¢µ½Ï̳߳أ¬È«²¿ÔÚIOÏß³ÌÉÏÖ±½ÓÖ´ÐС£

message Ö»ÓÐÇëÇóÏìÓ¦ÏûÏ¢ÅÉ·¢µ½Ï̳߳أ¬ÆäËüÁ¬½Ó¶Ï¿ªÊ¼þ£¬ÐÄÌøµÈÏûÏ¢£¬Ö±½ÓÔÚIOÏß³ÌÉÏÖ´ÐС£

execution Ö»ÇëÇóÏûÏ¢ÅÉ·¢µ½Ï̳߳أ¬²»º¬ÏìÓ¦£¬ÏìÓ¦ºÍÆäËüÁ¬½Ó¶Ï¿ªÊ¼þ£¬ÐÄÌøµÈÏûÏ¢£¬Ö±½ÓÔÚIOÏß³ÌÉÏÖ´ÐС£

connection ÔÚIOÏß³ÌÉÏ£¬½«Á¬½Ó¶Ï¿ªÊ¼þ·ÅÈë¶ÓÁУ¬ÓÐÐòÖð¸öÖ´ÐУ¬ÆäËüÏûÏ¢ÅÉ·¢µ½Ï̳߳ء£

ThreadPool

fixed ¹Ì¶¨´óСÏ̳߳أ¬Æô¶¯Ê±½¨Á¢Ị̈߳¬²»¹Ø±Õ£¬Ò»Ö±³ÖÓС£(ȱʡ)

cached »º´æÏ̳߳أ¬¿ÕÏÐÒ»·ÖÖÓ×Ô¶¯É¾³ý£¬ÐèÒªÊ±ÖØ½¨¡£

limited ¿ÉÉìËõÏ̳߳أ¬µ«³ØÖеÄÏß³ÌÊýÖ»»áÔö³¤²»»áÊÕËõ¡£(Ϊ±ÜÃâÊÕËõʱͻȻÀ´ÁË´óÁ÷Á¿ÒýÆðµÄÐÔÄÜÎÊÌâ)¡£

ÅäÖÃÈ磺

<dubbo:protocol

name="dubbo"

dispatcher="all"

threadpool="fixed"

threads="100"

/>

Ö±Á¬ÌṩÕß

ÔÚ¿ª·¢¼°²âÊÔ»·¾³Ï£¬¾­³£ÐèÒªÈÆ¹ý×¢²áÖÐÐÄ£¬Ö»²âÊÔÖ¸¶¨·þÎñÌṩÕߣ¬Õâʱºò¿ÉÄÜÐèÒªµã¶ÔµãÖ±Á¬£¬µã¶ÔµãÖ±Áª·½Ê½£¬½«ÒÔ·þÎñ½Ó¿ÚΪµ¥Î»£¬ºöÂÔ×¢²áÖÐÐĵÄÌṩÕßÁÐ±í£¬A½Ó¿ÚÅäÖõã¶Ôµã£¬²»Ó°ÏìB½Ó¿Ú´Ó×¢²áÖÐÐÄ»ñÈ¡ÁÐ±í¡£

(1) Èç¹ûÊÇÏßÉÏÐèÇóÐèÒªµã¶Ôµã£¬¿ÉÔÚ<dubbo:reference>ÖÐÅäÖÃurlÖ¸ÏòÌṩÕߣ¬½«Èƹý×¢²áÖÐÐÄ£¬¶à¸öµØÖ·Ó÷ֺŸô¿ª£¬ÅäÖÃÈçÏ£º(1.0.6¼°ÒÔÉϰ汾֧³Ö)

<dubbo:reference
id="xxxService"

interface="com.alibaba.xxx.XxxService"

url="dubbo://localhost:20890"

/>

(2) ÔÚJVMÆô¶¯²ÎÊýÖмÓÈë-D²ÎÊýÓ³Éä·þÎñµØÖ·£¬È磺

(keyΪ·þÎñÃû£¬valueΪ·þÎñÌṩÕßurl£¬´ËÅäÖÃÓÅÏȼ¶×î¸ß£¬1.0.15¼°ÒÔÉϰ汾֧³Ö)

java
-Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890

×¢Òâ

ΪÁ˱ÜÃ⸴ÔÓ»¯ÏßÉÏ»·¾³£¬²»ÒªÔÚÏßÉÏʹÓÃÕâ¸ö¹¦ÄÜ£¬Ö»Ó¦ÔÚ²âÊÔ½×¶ÎʹÓá£

(3) Èç¹û·þÎñ±È½Ï¶à£¬Ò²¿ÉÒÔÓÃÎļþÓ³É䣬È磺

(ÓÃ-Ddubbo.resolve.fileÖ¸¶¨Ó³ÉäÎļþ·¾¶£¬´ËÅäÖÃÓÅÏȼ¶¸ßÓÚ<dubbo:reference>ÖеÄÅäÖã¬1.0.15¼°ÒÔÉϰ汾֧³Ö)

(2.0ÒÔÉϰ汾×Ô¶¯¼ÓÔØ${user.home}/dubbo-resolve.propertiesÎļþ£¬²»ÐèÒªÅäÖÃ)

java
-Ddubbo.resolve.file=xxx.properties

È»ºóÔÚÓ³ÉäÎļþxxx.propertiesÖмÓÈ룺(keyΪ·þÎñÃû£¬valueΪ·þÎñÌṩÕßurl)

com.alibaba.xxx.XxxService=dubbo://localhost:20890

×¢Òâ

ΪÁ˱ÜÃ⸴ÔÓ»¯ÏßÉÏ»·¾³£¬²»ÒªÔÚÏßÉÏʹÓÃÕâ¸ö¹¦ÄÜ£¬Ö»Ó¦ÔÚ²âÊÔ½×¶ÎʹÓá£

Ö»¶©ÔÄ

ÎÊÌâ

Ϊ·½±ã¿ª·¢²âÊÔ£¬¾­³£»áÔÚÏßϹ²ÓÃÒ»¸öËùÓзþÎñ¿ÉÓõÄ×¢²áÖÐÐÄ£¬Õâʱ£¬Èç¹ûÒ»¸öÕýÔÚ¿ª·¢ÖеķþÎñÌṩÕß×¢²á£¬¿ÉÄÜ»áÓ°ÏìÏû·ÑÕß²»ÄÜÕý³£ÔËÐС£

½â¾ö·½°¸

¿ÉÒÔÈ÷þÎñÌṩÕß¿ª·¢·½£¬Ö»¶©ÔÄ·þÎñ(¿ª·¢µÄ·þÎñ¿ÉÄÜÒÀÀµÆäËü·þÎñ)£¬¶ø²»×¢²áÕýÔÚ¿ª·¢µÄ·þÎñ£¬Í¨¹ýÖ±Á¬²âÊÔÕýÔÚ¿ª·¢µÄ·þÎñ¡£

½ûÓÃ×¢²áÅäÖãº

<dubbo:registry

address="10.20.153.10:9090"

register="false"

/>

»òÕߣº

<dubbo:registry

address="10.20.153.10:9090?register=false"

/>

Ö»×¢²á

ÎÊÌâ

Èç¹ûÓÐÁ½¸ö¾µÏñ»·¾³£¬Á½¸ö×¢²áÖÐÐÄ£¬ÓÐÒ»¸ö·þÎñÖ»ÔÚÆäÖÐÒ»¸ö×¢²áÖÐÐÄÓв¿Êð£¬ÁíÒ»¸ö×¢²áÖÐÐÄ»¹Ã»À´µÃ¼°²¿Ê𣬶øÁ½¸ö×¢²áÖÐÐĵįäËüÓ¦Óö¼ÐèÒªÒÀÀµ´Ë·þÎñ£¬ËùÒÔÐèÒª½«·þÎñͬʱע²áµ½Á½¸ö×¢²áÖÐÐÄ£¬µ«È´²»ÄÜÈô˷þÎñͬʱÒÀÀµÁ½¸ö×¢²áÖÐÐĵįäËü·þÎñ¡£

½â¾ö·½°¸

¿ÉÒÔÈ÷þÎñÌṩÕß·½£¬Ö»×¢²á·þÎñµ½ÁíÒ»×¢²áÖÐÐÄ£¬¶ø²»´ÓÁíÒ»×¢²áÖÐÐĶ©ÔÄ·þÎñ¡£

½ûÓö©ÔÄÅäÖãº

<dubbo:registry

id="hzRegistry"

address="10.20.153.10:9090"

/>
<dubbo:registry

id="qdRegistry"

address="10.20.141.150:9090"

subscribe="false"

/>

»òÕߣº

<dubbo:registry

id="hzRegistry"

address="10.20.153.10:9090"

/>
<dubbo:registry

id="qdRegistry"

address="10.20.141.150:9090?subscribe=false"

/>

¾²Ì¬·þÎñ

ÓÐʱºòÏ£ÍûÈ˹¤¹ÜÀí·þÎñÌṩÕßµÄÉÏÏߺÍÏÂÏߣ¬´ËʱÐ轫ע²áÖÐÐıêʶΪ·Ç¶¯Ì¬¹ÜÀíģʽ¡£

<dubbo:registry

address="10.20.141.150:9090"

dynamic="false"

/>

»òÕߣº

<dubbo:registry

address="10.20.141.150:9090?dynamic=false"

/>

·þÎñÌṩÕß³õ´Î×¢²áʱΪ½ûÓÃ״̬£¬ÐèÈ˹¤ÆôÓ㬶ÏÏßʱ£¬½«²»»á±»×Ô¶¯É¾³ý£¬ÐèÈ˹¤½ûÓá£

Èç¹ûÊÇÒ»¸öµÚÈý·½¶ÀÁ¢ÌṩÕߣ¬±ÈÈçmemcachedµÈ£¬¿ÉÒÔÖ±½ÓÏò×¢²áÖÐÐÄдÈëÌṩÕßµØÖ·ÐÅÏ¢£¬Ïû·ÑÕßÕý³£Ê¹Óãº(ͨ³£Óɽű¾¼à¿ØÖÐÐÄÒ³ÃæµÈµ÷ÓÃ)

RegistryFactory
registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry
registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf

("memcached://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo"));

¶àЭÒé

(1) ²»Í¬·þÎñ²»Í¬Ð­Òé

±ÈÈ磺²»Í¬·þÎñÔÚÐÔÄÜÉÏÊÊÓò»Í¬Ð­Òé½øÐд«Ê䣬±ÈÈç´óÊý¾ÝÓöÌÁ¬½ÓЭÒ飬СÊý¾Ý´ó²¢·¢Óó¤Á¬½ÓЭÒé¡£

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name="world" />
<dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />

<!-- ¶àЭÒéÅäÖà -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="rmi" port="1099" />

<!-- ʹÓÃdubboЭÒ鱩¶·þÎñ -->
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protocol="dubbo" />
<!-- ʹÓÃrmiЭÒ鱩¶·þÎñ -->
<dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" protocol="rmi" />

</beans>

(2) ¶àЭÒ鱩¶·þÎñ

±ÈÈ磺ÐèÒªÓëhttp¿Í»§¶Ë»¥²Ù×÷

consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="world" />
<dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />

<!-- ¶àЭÒéÅäÖà -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="hessian" port="8080" />

<!-- ʹÓöà¸öЭÒ鱩¶·þÎñ -->
<dubbo:service id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" protocol="dubbo,hessian" />

</beans>

¶à×¢²áÖÐÐÄ

(1) ¶à×¢²áÖÐÐÄ×¢²á

±ÈÈ磺ÖÐÎÄÕ¾ÓÐЩ·þÎñÀ´²»¼°ÔÚÇൺ²¿Êð£¬Ö»ÔÚº¼Öݲ¿Ê𣬶øÇൺµÄÆäËüÓ¦ÓÃÐèÒªÒýÓô˷þÎñ£¬¾Í¿ÉÒÔ½«·þÎñͬʱע²áµ½Á½¸ö×¢²áÖÐÐÄ¡£

consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="world" />

<!-- ¶à×¢²áÖÐÐÄÅäÖà -->
<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" />
<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" default="false" />

<!-- Ïò¶à¸ö×¢²áÖÐÐÄ×¢²á -->
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" registry="hangzhouRegistry,qingdaoRegistry" />

</beans>

(2) ²»Í¬·þÎñʹÓò»Í¬×¢²áÖÐÐÄ

±ÈÈ磺CRMÓÐЩ·þÎñÊÇרÃÅΪ¹ú¼ÊÕ¾Éè¼ÆµÄ£¬ÓÐЩ·þÎñÊÇרÃÅΪÖÐÎÄÕ¾Éè¼ÆµÄ¡£

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="world" />

<!-- ¶à×¢²áÖÐÐÄÅäÖà -->
<dubbo:registry id="chinaRegistry" address="10.20.141.150:9090" />
<dubbo:registry id="intlRegistry" address="10.20.154.177:9010" default="false" />

<!-- ÏòÖÐÎÄÕ¾×¢²áÖÐÐÄ×¢²á -->
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" registry="chinaRegistry" />

<!-- Ïò¹ú¼ÊÕ¾×¢²áÖÐÐÄ×¢²á -->
<dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" registry="intlRegistry" />

</beans>

(3) ¶à×¢²áÖÐÐÄÒýÓÃ

±ÈÈ磺CRMÐèͬʱµ÷ÓÃÖÐÎÄÕ¾ºÍ¹ú¼ÊÕ¾µÄPC2·þÎñ£¬PC2ÔÚÖÐÎÄÕ¾ºÍ¹ú¼ÊÕ¾¾ùÓв¿Ê𣬽ӿڼ°°æ±¾ºÅ¶¼Ò»Ñù£¬µ«Á¬µÄÊý¾Ý¿â²»Ò»Ñù¡£

consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="world" />

<!-- ¶à×¢²áÖÐÐÄÅäÖà -->
<dubbo:registry id="chinaRegistry" address="10.20.141.150:9090" />
<dubbo:registry id="intlRegistry" address="10.20.154.177:9010" default="false" />

<!-- ÒýÓÃÖÐÎÄÕ¾·þÎñ -->
<dubbo:reference id="chinaHelloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" registry="chinaRegistry" />

<!-- ÒýÓùú¼ÊÕ¾Õ¾·þÎñ -->
<dubbo:reference id="intlHelloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" registry="intlRegistry" />

</beans>

Èç¹ûÖ»ÊDzâÊÔ»·¾³ÁÙʱÐèÒªÁ¬½ÓÁ½¸ö²»Í¬×¢²áÖÐÐÄ£¬Ê¹ÓÃÊúºÅ·Ö¸ô¶à¸ö²»Í¬×¢²áÖÐÐĵØÖ·£º

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name="world" />

<!-- ¶à×¢²áÖÐÐÄÅäÖã¬ÊúºÅ·Ö¸ô±íʾͬʱÁ¬½Ó¶à¸ö²»Í¬×¢²áÖÐÐÄ£¬ ͬһע²áÖÐÐĵĶà¸ö¼¯ÈºµØÖ·ÓöººÅ·Ö¸ô -->
<dubbo:registry address="10.20.141.150:9090|10.20.154.177:9010" />

<!-- ÒýÓ÷þÎñ -->
<dubbo:reference id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" />

</beans>

·þÎñ·Ö×é

µ±Ò»¸ö½Ó¿ÚÓжàÖÖʵÏÖʱ£¬¿ÉÒÔÓÃgroupÇø·Ö¡£

<dubbo:service

group="feedback"

interface="com.xxx.IndexService"

/>
<dubbo:service

group="member"

interface="com.xxx.IndexService"

/>

ÈÎÒâ×飺(2.2.0ÒÔÉϰ汾֧³Ö£¬×ÜÊÇÖ»µ÷Ò»¸ö¿ÉÓÃ×éµÄʵÏÖ)

<dubbo:reference

id="feedbackIndexService"

group="feedback"

interface="com.xxx.IndexService"

/>
<dubbo:reference

id="memberIndexService"

group="member"

interface="com.xxx.IndexService"

/>

 

¶à°æ±¾

µ±Ò»¸ö½Ó¿ÚʵÏÖ£¬³öÏÖ²»¼æÈÝÉý¼¶Ê±£¬¿ÉÒÔÓð汾ºÅ¹ý¶É£¬°æ±¾ºÅ²»Í¬µÄ·þÎñÏ໥¼ä²»ÒýÓá£

ÔÚµÍѹÁ¦Ê±¼ä¶Î£¬ÏÈÉý¼¶Ò»°ëÌṩÕßΪа汾

ÔÙ½«ËùÓÐÏû·ÑÕßÉý¼¶ÎªÐ°汾

È»ºó½«Ê£ÏµÄÒ»°ëÌṩÕßÉý¼¶ÎªÐ°汾

<dubbo:service

interface="com.foo.BarService"

version="1.0.0"

/>


<dubbo:service

interface="com.foo.BarService"

version="2.0.0"

/>


<dubbo:reference

id="barService"

interface="com.foo.BarService"

version="1.0.0"

/>


<dubbo:reference

id="barService"

interface="com.foo.BarService"

version="2.0.0"

/>

²»Çø·Ö°æ±¾£º(2.2.0ÒÔÉϰ汾֧³Ö)

<dubbo:reference

id="barService"

interface="com.foo.BarService"

version="*"

/>

·Ö×é¾ÛºÏ

°´×éºÏ²¢·µ»Ø½á¹û£¬±ÈÈç²Ëµ¥·þÎñ£¬½Ó¿ÚÒ»Ñù£¬µ«ÓжàÖÖʵÏÖ£¬ÓÃgroupÇø·Ö£¬ÏÖÔÚÏû·Ñ·½Ðè´ÓÿÖÖgroupÖе÷ÓÃÒ»´Î·µ»Ø½á¹û£¬ºÏ²¢½á¹û·µ»Ø£¬ÕâÑù¾Í¿ÉÒÔʵÏ־ۺϲ˵¥Ïî¡£

´Ó2.1.0°æ±¾¿ªÊ¼Ö§³Ö

´úÂë²Î¼û£ºhttps://github.com/alibaba/dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/merge

ÅäÖÃÈ磺(ËÑË÷ËùÓзÖ×é)

<dubbo:reference

interface="com.xxx.MenuService"

group="*"

merger="true"

/>

»ò£º(ºÏ²¢Ö¸¶¨·Ö×é)

<dubbo:reference

interface="com.xxx.MenuService"

group="aaa,bbb"

merger="true"

/>

»ò£º(Ö¸¶¨·½·¨ºÏ²¢½á¹û£¬ÆäËüδָ¶¨µÄ·½·¨£¬½«Ö»µ÷ÓÃÒ»¸öGroup)

<dubbo:reference

interface="com.xxx.MenuService"

group="*">
<dubbo:method

name="getMenuItems"

merger="true"

/>
</dubbo:service>

»ò£º(ij¸ö·½·¨²»ºÏ²¢½á¹û£¬ÆäËü¶¼ºÏ²¢½á¹û)

<dubbo:reference

interface="com.xxx.MenuService"

group="*"

merger="true">
<dubbo:method

name="getMenuItems"

merger="false"

/>
</dubbo:service>

»ò£º(Ö¸¶¨ºÏ²¢²ßÂÔ£¬È±Ê¡¸ù¾Ý·µ»ØÖµÀàÐÍ×Ô¶¯Æ¥Å䣬Èç¹ûͬһÀàÐÍÓÐÁ½¸öºÏ²¢Æ÷ʱ£¬ÐèÖ¸¶¨ºÏ²¢Æ÷µÄÃû³Æ)

²Î¼û£º[ºÏ²¢½á¹ûÀ©Õ¹]

<dubbo:reference

interface="com.xxx.MenuService"

group="*">
<dubbo:method

name="getMenuItems"

merger="mymerge"

/>
</dubbo:service>

»ò£º(Ö¸¶¨ºÏ²¢·½·¨£¬½«µ÷Ó÷µ»Ø½á¹ûµÄÖ¸¶¨·½·¨½øÐкϲ¢£¬ºÏ²¢·½·¨µÄ²ÎÊýÀàÐͱØÐëÊÇ·µ»Ø½á¹ûÀàÐͱ¾Éí)

<dubbo:reference

interface="com.xxx.MenuService"

group="*">
<dubbo:method

name="getMenuItems"

merger=".addAll"

/>
</dubbo:service>

²ÎÊýÑéÖ¤

²ÎÊýÑéÖ¤¹¦ÄÜÊÇ»ùÓÚJSR303ʵÏֵģ¬Óû§Ö»Ðè±êʶJSR303±ê×¼µÄÑéÖ¤Annotation£¬²¢Í¨¹ýÉùÃ÷filterÀ´ÊµÏÖÑéÖ¤¡£

2.1.0ÒÔÉϰ汾֧³Ö

ÍêÕûʾÀý´úÂë²Î¼û£ºhttps://github.com/alibaba/dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/validation

ÑéÖ¤·½Ê½¿ÉÀ©Õ¹£¬²Î¼û£ºValidationÀ©Õ¹µã

²ÎÊý±êעʾÀý£º

import

java.io.Serializable;
import

java.util.Date;
import

javax.validation.constraints.Future;
import

javax.validation.constraints.Max;
import

javax.validation.constraints.Min;
import

javax.validation.constraints.NotNull;
import

javax.validation.constraints.Past;
import

javax.validation.constraints.Pattern;
import

javax.validation.constraints.Size;
public

class
ValidationParameter implements

Serializable {
private

static
final
long
serialVersionUID = 7158911668568000392L;
@NotNull

// ²»ÔÊÐíΪ¿Õ
@Size(min
= 1,
max = 20)
//
³¤¶È»ò´óС·¶Î§
private

String name;
@NotNull(groups
= ValidationService.Save.class)
//
±£´æÊ±²»ÔÊÐíΪ¿Õ£¬¸üÐÂʱÔÊÐíΪ¿Õ £¬±íʾ²»¸üиÃ×Ö¶Î
@Pattern(regexp
= "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$")
private

String email;
@Min(18)
//
×îСֵ
@Max(100)
//
×î´óÖµ
private

int
age;
@Past

// ±ØÐëΪһ¸ö¹ýÈ¥µÄʱ¼ä
private

Date loginDate;
@Future

// ±ØÐëΪһ¸öδÀ´µÄʱ¼ä
private

Date expiryDate;
public

String getName() {
return

name;
}
public

void
setName(String name) {
this.name
= name;
}
public

String getEmail() {
return

email;
}
public

void
setEmail(String email) {
this.email
= email;


}
public

int
getAge() {
return

age;
}
public

void
setAge(int

age) {
this.age
= age;
}
public

Date getLoginDate() {
return

loginDate;
}
public

void
setLoginDate(Date loginDate) {
this.loginDate
= loginDate;
}
public

Date getExpiryDate() {
return

expiryDate;
}
public

void
setExpiryDate(Date expiryDate) {
this.expiryDate
= expiryDate;
}
}

·Ö×éÑé֤ʾÀý£º

public

interface
ValidationService { //
ȱʡ¿É°´·þÎñ½Ó¿ÚÇø·ÖÑéÖ¤³¡¾°£¬È磺@NotNull(groups = ValidationService.class)
@interface

Save{} //
Óë·½·¨Í¬Ãû½Ó¿Ú£¬Ê××Öĸ´óд£¬ÓÃÓÚÇø·ÖÑéÖ¤³¡¾°£¬È磺@NotNull(groups = ValidationService.Save.class)£¬¿ÉÑ¡
void

save(ValidationParameter parameter);
void

update(ValidationParameter parameter);
}

·Ö×éÑé֤ʾÀý£º

import

javax.validation.GroupSequence;

public

interface
ValidationService {

@GroupSequence(Update.class)
//
ͬʱÑéÖ¤Update×鹿Ôò

@interface

Save{}


void

save(ValidationParameter parameter);

@interface

Update{}


void

update(ValidationParameter parameter);

}

²ÎÊýÑé֤ʾÀý£º

import

javax.validation.constraints.Min;
import

javax.validation.constraints.NotNull;
public

interface
ValidationService {
void

save(@NotNull

ValidationParameter parameter); //
ÑéÖ¤²ÎÊý²»Îª¿Õ
void

delete(@Min(1)
int

id); //
Ö±½Ó¶Ô»ù±¾ÀàÐͲÎÊýÑéÖ¤
}

ÔÚ¿Í»§¶ËÑéÖ¤²ÎÊý£º

<dubbo:reference

id="validationService"

interface="com.alibaba.dubbo.examples.validation.api.ValidationService"

validation="true"

/>

ÔÚ·þÎñÆ÷¶ËÑéÖ¤²ÎÊý£º

<dubbo:service

interface="com.alibaba.dubbo.examples.validation.api.ValidationService"

ref="validationService"

validation="true"

/>

ÑéÖ¤Òì³£ÐÅÏ¢£º

import

javax.validation.ConstraintViolationException;
import

javax.validation.ConstraintViolationException;
import

org.springframework.context.support.ClassPathXmlApplicationContext;
import

com.alibaba.dubbo.examples.validation.api.ValidationParameter;
import

com.alibaba.dubbo.examples.validation.api.ValidationService;
import

com.alibaba.dubbo.rpc.RpcException;
public

class
ValidationConsumer {
public

static
void
main(String[] args) throws

Exception {
String
config = ValidationConsumer.class.getPackage().getName().replace('.',
'/')
+ "/validation-consumer.xml";


ClassPathXmlApplicationContext
context = new

ClassPathXmlApplicationContext(config);
context.start();
ValidationService
validationService = (ValidationService)context.getBean("validationService");


//
Error
try

{
parameter
= new

ValidationParameter();
validationService.save(parameter);
System.out.println("Validation
ERROR");
}
catch

(RpcException e) { //
Å׳öµÄÊÇRpcException
ConstraintViolationException
ve = (ConstraintViolationException) e.getCause(); //
ÀïÃæÇ¶ÁËÒ»¸öConstraintViolationException
Set<ConstraintViolation<?>>
violations = ve.getConstraintViolations(); //
¿ÉÒÔÄõ½Ò»¸öÑéÖ¤´íÎóÏêϸÐÅÏ¢µÄ¼¯ºÏ
System.out.println(violations);
}
}
}

ÐèÒª¼ÓÈëÒÀÀµ£º

<dependency>

<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>

 
   
16264 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þ
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS

ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù

Èñ°²¿Æ¼¼ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨
³É¶¼ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£Æû³µ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
±±¾© Èí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£ Èí¼þ¼Ü¹¹Éè¼Æ°¸ÀýÓëʵ¼ù
±±¾© ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ÉîÛÚ ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù