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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
°¢Àï°Í°ÍDubboʵÏÖµÄÔ´Âë·ÖÎö
 
×÷Õߣºnetcomm À´Ô´£ºITEYE   ·¢²¼ÓÚ 2015-3-26
  4778  次浏览      27
 

1. Dubbo¸ÅÊö

DubboÊǰ¢Àï°Í°Í¿ªÔ´³öÀ´µÄÒ»¸ö·Ö²¼Ê½·þÎñ¿ò¼Ü£¬ÖÂÁ¦ÓÚÌṩ¸ßÐÔÄܺÍ͸Ã÷»¯µÄRPCÔ¶³Ì·þÎñµ÷Ó÷½°¸£¬ÒÔ¼°×÷ΪSOA·þÎñÖÎÀíµÄ·½°¸¡£ËüµÄºËÐŦÄܰüÀ¨£º

#remoting:Ô¶³ÌͨѶ»ù´¡£¬Ìṩ¶Ô¶àÖÖNIO¿ò¼Ü³éÏó·â×°£¬°üÀ¨¡°Í¬²½×ªÒì²½¡±ºÍ¡°ÇëÇó-ÏìÓ¦¡±Ä£Ê½µÄÐÅÏ¢½»»»·½Ê½¡£
#Cluster: ·þÎñ¿ò¼ÜºËÐÄ£¬Ìṩ»ùÓÚ½Ó¿Ú·½·¨µÄÔ¶³Ì¹ý³Ìµ÷Ó㬰üÀ¨¶àЭÒéÖ§³Ö£¬²¢ÌṩÈí¸ºÔØ¾ùºâºÍÈÝ´í»úÖÆµÄ¼¯ÈºÖ§³Ö¡£
#registry: ·þÎñ×¢²áÖÐÐÄ£¬Ê¹·þÎñÏû·Ñ·½Äܶ¯Ì¬µÄ²éÕÒ·þÎñÌṩ·½£¬Ê¹µØÖ·Í¸Ã÷£¬Ê¹·þÎñÌṩ·½¿ÉÒÔÆ½»¬Ôö¼Ó»ò¼õÉÙ»úÆ÷¡£

ÓÉÓÚDubboÍŶӵÄÎĵµºÍ´úÂë¶¼·Ç³£ÓÅÐ㣬ËùÒÔ¸ü¶à¹ØÓÚdubboµÄ·½·½ÃæÃæÇë²Î¿¼ÍøÕ¾http://code.alibabatech.com/wiki/display/dubbo/Home-zh¡£

ÕâÀïÎÒÃÇÖ»ÊDz¹³äһϴÓÔ´Âë¾ßÌåʵÏֽǶÈÀ´¿´µÄijЩϸ½Ú·½Ã棬°üÀ¨Invoker¡¢ExtensionLoaderµÈ·½Ãæ¡£Èκιٷ½ÒѾ­½éÉܹýµÄϸ½Ú£¬ÎÒÃDz»×ö»­ÉßÌí×㣬¹Ù·½ÎĵµÒѾ­×ã¹»ÏêʵÁË£¬ÕâÆªÎĵµµÄ¶¨Î»ÊDz¹³äʵÏÖµÄÏà¹ØÏ¸½Ú£¬ÊÇ»ùÓÚÎÒÔÚÍùDubboÌí¼Óweb serviceЭÒé¹ý³ÌÖУ¬ËùÅöµ½¹ýµÄһЩÀ§ÄÑ¡£

2. ·þÎñÌṩÕß±©Â¶Ò»¸ö·þÎñµÄÏêϸ¹ý³Ì

ÉÏͼÊÇ·þÎñÌṩÕß±©Â¶·þÎñµÄÖ÷¹ý³Ì£º

Ê×ÏÈServiceConfigÀàÄõ½¶ÔÍâÌṩ·þÎñµÄʵ¼ÊÀàref(È磺HelloWorldImpl),È»ºóͨ¹ýProxyFactoryÀàµÄgetInvoker·½·¨Ê¹ÓÃrefÉú³ÉÒ»¸öAbstractProxyInvokerʵÀý£¬µ½ÕâÒ»²½¾ÍÍê³É¾ßÌå·þÎñµ½InvokerµÄת»¯¡£½ÓÏÂÀ´¾ÍÊÇInvokerת»»µ½ExporterµÄ¹ý³Ì¡£

Dubbo´¦Àí·þÎñ±©Â¶µÄ¹Ø¼ü¾ÍÔÚInvokerת»»µ½ExporterµÄ¹ý³Ì(ÈçÉÏͼÖеĺìÉ«²¿·Ö)£¬ÏÂÃæÎÒÃÇÒÔDubboºÍRMIÕâÁ½ÖÖµäÐÍЭÒéµÄʵÏÖÀ´½øÐÐ˵Ã÷£º

££DubboµÄʵÏÖ

DubboЭÒéµÄInvokerתΪExporter·¢ÉúÔÚDubboProtocolÀàµÄexport·½·¨£¬ËüÖ÷ÒªÊÇ´ò¿ªsocketÕìÌý·þÎñ£¬²¢½ÓÊÕ¿Í»§¶Ë·¢À´µÄ¸÷ÖÖÇëÇó£¬Í¨Ñ¶Ï¸½ÚÓÉDubbo×Ô¼ºÊµÏÖ¡£

££RMIµÄʵÏÖ

RMIЭÒéµÄInvokerתΪExporter·¢ÉúÔÚRmiProtocolÀàµÄexport·½·¨£¬Ëüͨ¹ýSpring»òDubbo»òJDKÀ´ÊµÏÖRMI·þÎñ£¬Í¨Ñ¶Ï¸½ÚÕâÒ»¿éÓÉJDKµ×²ãÀ´ÊµÏÖ£¬Õâ¾ÍÊ¡Á˲»ÉÙ¹¤×÷Á¿¡£

3. ·þÎñÏû·ÑÕßÏû·ÑÒ»¸ö·þÎñµÄÏêϸ¹ý³Ì

ÉÏͼÊÇ·þÎñÏû·ÑµÄÖ÷¹ý³Ì£º

Ê×ÏÈReferenceConfigÀàµÄinit·½·¨µ÷ÓÃProtocolµÄrefer·½·¨Éú³ÉInvokerʵÀý(ÈçÉÏͼÖеĺìÉ«²¿·Ö)£¬ÕâÊÇ·þÎñÏû·ÑµÄ¹Ø¼ü¡£½ÓÏÂÀ´°ÑInvokerת»»Îª¿Í»§¶ËÐèÒªµÄ½Ó¿Ú(È磺HelloWorld)¡£

¹ØÓÚÿÖÖЭÒéÈçRMI/Dubbo/Web serviceµÈËüÃÇÔÚµ÷ÓÃrefer·½·¨Éú³ÉInvokerʵÀýµÄϸ½ÚºÍÉÏÒ»Õ½ÚËùÃèÊöµÄÀàËÆ¡£

4. ÂúÑÛ¶¼ÊÇInvoker

ÓÉÓÚInvokerÊÇDubboÁìÓòÄ£ÐÍÖзdz£ÖØÒªµÄÒ»¸ö¸ÅÄºÜ¶àÉè¼ÆË¼Â·¶¼ÊÇÏòËü¿¿Â£¡£Õâ¾ÍʹµÃInvokerÉøÍ¸ÔÚÕû¸öʵÏÖ´úÂëÀ¶ÔÓÚ¸Õ¿ªÊ¼½Ó´¥DubboµÄÈË£¬È·ÊµÈÝÒ׸ø¸ã»ìÁË¡£

ÏÂÃæÎÒÃÇÓÃÒ»¸ö¾«¼òµÄͼÀ´ËµÃ÷×îÖØÒªµÄÁ½ÖÖInvoker£º·þÎñÌṩInvokerºÍ·þÎñÏû·ÑInvoker£º

ΪÁ˸üºÃµÄ½âÊÍÉÏÃæÕâÕÅͼ£¬ÎÒÃǽáºÏ·þÎñÏû·ÑºÍÌṩÕߵĴúÂëʾÀýÀ´½øÐÐ˵Ã÷£º

££·þÎñÏû·ÑÕß´úÂë

££·þÎñÏû·ÑÕß´úÂë
public class DemoClientAction {
private DemoService demoService;
public void setDemoService(DemoService demoService) {
this.demoService = demoService;
}
public void start() {
String hello = demoService.sayHello("world" + i);
}
}

ÉÏÃæ´úÂëÖеġ¯DemoService¡¯¾ÍÊÇÉÏͼÖзþÎñÏû·Ñ¶ËµÄproxy£¬Óû§´úÂëͨ¹ýÕâ¸öproxyµ÷ÓÃÆä¶ÔÓ¦µÄInvoker(DubboInvoker¡¢ HessianRpcInvoker¡¢ InjvmInvoker¡¢ RmiInvoker¡¢ WebServiceInvokerÖеÄÈκÎÒ»¸ö)£¬¶ø¸ÃInvokerʵÏÖÁËÕæÕýµÄÔ¶³Ì·þÎñµ÷Óá£

££·þÎñÌṩÕß´úÂë
public class DemoServiceImpl
implements DemoService
{
public String sayHello(String name) throws RemoteException
{
return "Hello " + name;
}
}

ÉÏÃæÕâ¸öÀà»á±»·â×°³ÉΪһ¸öAbstractProxyInvokerʵÀý£¬²¢ÐÂÉú³ÉÒ»¸öExporterʵÀý¡£ÕâÑùµ±ÍøÂçͨѶ²ãÊÕµ½Ò»¸öÇëÇóºó£¬»áÕÒµ½¶ÔÓ¦µÄExporterʵÀý£¬²¢µ÷ÓÃËüËù¶ÔÓ¦µÄAbstractProxyInvokerʵÀý£¬´Ó¶øÕæÕýµ÷ÓÃÁË·þÎñÌṩÕߵĴúÂë¡£
DubboÀﻹÓÐһЩÆäËûµÄInvokerÀ࣬µ«ÉÏÃæÁ½ÖÖÊÇ×îÖØÒªµÄ¡£

5. ExtensionLoaderµÄÍêÕû·ÖÎö

ExtensionLoaderÊÇDubboÖÐÒ»¸ö·Ç³£ÖØÒªµÄÀ࣬¸Õ½Ó´¥DubboÔ´ÂëµÄÈË¿´Õâ¸öÀàµÄʱºòÒ²¶àÉÙ»áÓеãÀ§»ó£¬Õâ¸öÀà·Ç³£ÖØÒª£¬Ëü¾ÍÏñÊdzø·¿ÀïµÄ¡°´ó³ø¡±£¬°´ÕÕÓû§µÄËæÊ±ÐèÒª°Ñ¸÷ÖÖ¡°Ê³²Ä¡±Åëµ÷³öÀ´¡£

ÎÒÃǽáºÏ¾ßÌå´úÂëÏêϸ˵һÏÂExtensionLoaderµÄʵÏÖ£¬ÏÂÃæÊÇServiceConfigÀàÀïµÄÒ»ÐдúÂ룺

private static final Protocol protocol  = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

ÉÏÃæ´úÂëµÄ³ÌÐòÁ÷³ÌͼÈçÏÂËùʾ(¼Ù¶¨ÊǵÚÒ»´ÎÖ´ÐÐÕâÐдúÂë)£º

ÔÚÕâ¸ö¹ý³ÌÖÐ×îÖØÒªµÄÁ½¸ö·½·¨ÊÇgetExtensionClassesºÍcreateAdaptiveExtensionClass(ͼÖкìÉ«²¿·Ö)£¬ÏÂÃæÏêϸ¶ÔÕâÁ½¸ö·½·¨½øÐзÖÎö£º

££getExtensionClasses

Õâ¸ö·½·¨Ö÷Òª¶ÁÈ¡META-INF/services/Ŀ¼Ï¶ÔÓ¦ÎļþÄÚÈÝ£¬ÔÚ±¾Ê¾Àý´úÂëÖУ¬ÊǶÁÈ¡META-INF/services/com.alibaba.dubbo.rpc.ProtocolÎļþÖеÄÄÚÈÝ£¬¾ßÌåÄÚÈÝÈçÏ£º

com.alibaba.dubbo.registry.support.RegistryProtocol
com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper
com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper
com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol
com.alibaba.dubbo.rpc.protocol.injvm.InjvmProtocol
com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol
com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol
com.alibaba.dubbo.rpc.protocol.webservice.WebServiceProtocol

Ëü·ÖÎö¸ÃÎļþÖеÄÿһÐÐ(ÿһÐжÔÓ¦Ò»¸öÀà)£¬·ÖÎöÕâЩÀ࣬Èç¹û·¢ÏÖÓÐÄĸöÀàµÄAnnotationÊÇ@Adaptive£¬ÔòÕÒµ½¶ÔÓ¦µÄAdaptiveClassÁË£¬µ«ÓÉÓÚProtocolÎļþÀïûÓÐÄĸöÀàµÄAnnotationÊÇ@Adaptive£¬ËùÒÔÔÚÕâ¸öÀý×ÓÖи÷½·¨Ã»ÕÒµ½¶ÔÓ¦µÄAdaptiveClass¡£

££createAdaptiveExtensionClass

¸Ã·½·¨ÊÇÔÚgetExtensionClasses·½·¨ÕÒ²»µ½AdaptiveClassµÄÇé¿öϱ»µ÷Ó㬸÷½·¨Ö÷ÒªÊÇͨ¹ý×Ö½ÚÂëµÄ·½Ê½ÔÚÄÚ´æÖÐÐÂÉú³ÉÒ»¸öÀ࣬Ëü¾ßÓÐAdaptiveClassµÄ¹¦ÄÜ£¬Protocol¾ÍÊÇͨ¹ýÕâÖÖ·½Ê½»ñµÃAdaptiveClassÀàµÄ¡£

AdaptiveClassÀàµÄ×÷ÓÃÊÇÄÜÔÚÔËÐÐʱ¶¯Ì¬ÅжϾßÌåÊÇÒªµ÷ÓÃÄĸöÀàµÄ·½·¨£¬¸ü¶à¹ØÓÚAdaptiveClassµÄÄÚÈÝÇë²Î¿¼Dubbo¹Ù·½Îĵµ¡£

   
4778 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

¶àά·½·¨À´¿ª·¢ÓлúµÄÒµÎñÁ÷³Ì¼Ü¹¹
SCA Ó¦ÓóÌÐò¿ª·¢
BPM ºÍ SOA ÐÔÄÜ×î¼Ñʵ¼ù
ʵÏÖÆóÒµ·þÎñ×ÜÏßģʽ
Ïà¹ØÎĵµ

SCA½éÉܼ°Ó¦ÓÃʵÀý
»ùÓÚSOA¼Ü¹¹µÄESBƽ̨£ºInfomagic
SCA¼Ü¹¹
SOAµÄ»ù±¾¸ÅÄî
Ïà¹Ø¿Î³Ì

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

»ùÓÚSOAµÄ¹¤×÷Á÷£¨WF£©ÕûºÏ
SOA 100ÎÊ - ÎÊÓë´ð
SOAP Ó¦ÓÃģʽ:´¦ÀíÓëÐÔÄÜ
ESB¼Ü¹¹Ö®Æóҵʵʩ°¸Àý
»ùÓÚSOA¼Ü¹¹µÄÆóÒµ¼¯³Éϵͳ
»ùÓÚSOAµÄÌåϵ¼Ü¹¹Éè¼Æ


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


ijµÚÈý·½µç×ÓÖ§¸¶ÆóÒµ SOA¼Ü¹¹Éè¼Æ
ijµç×ÓÆóÒµ SOAÓ¦ÓÃ
ÖйúÒÆ¶¯ SOAÅàѵ
±±¾©´óѧ SOA¼Ü¹¹Éè¼ÆÊµ¼ù
ÓѰÏÕ SOA¼Ü¹¹Éè¼Æ
ÉϺ£ SOA¼Ü¹¹Êµ¼ù
ɽ¶«Òƶ¯Í¨ÐÅ SOAÌåϵ½á¹¹Êµ¼ù