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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Dubbo»ù±¾Ó÷¨-Dubbo ProviderÅäÖÃ
 
  11909  次浏览      28
 2018-10-8
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚÍøÂ磬±¾ÎÄÏêϸ½éÉÜÈçºÎÅäÖÃdubbo¡¢Provider ÅäÖÃÏê½âÒÔ¼°dubbo providerµÄÍêÕûʹÓà £¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÄÜÓÐËù°ïÖú¡£

Dubbo»ù±¾Ó÷¨

±¾Õ½ÚÖ÷Òª½²ÊöÈçºÎÅäÖÃdubbo£¬°´ÕÕÅäÖ÷½Ê½ÉÏ·Ö£¬¿ÉÒÔ·ÖΪ£ºXMLÅäÖã¬properties·½Ê½ÅäÖã¬×¢½â·½Ê½ÅäÖã¬APIµ÷Ó÷½Ê½ÅäÖá£

°´ÕÕ¹¦ÄܽǶȽøÐл®·Ö£¬¿ÉÒÔ·ÖΪDubbo ProviderºÍDubbo Consumer¡£½ÓÏÂÀ´Õ½ÚÖУ¬·Ö±ð¶Ôdubbo providerºÍDubbo consumer½øÐн²½â¡£

Dubbo ProviderÅäÖÃ

Provider ÅäÖÃÏê½â

ÅäÖÃDubbo ProviderÓÐ4ÖÖ·½Ê½£ºXMLÅäÖã¬properties·½Ê½ÅäÖã¬APIµ÷Ó÷½Ê½ÅäÖã¬×¢½â·½Ê½ÅäÖá£

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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org
/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="hello-world-app" />
<dubbo:registry address="multicast://224.5.6.7:1234" />
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:service interface="com.alibaba.dubbo.demo.
DemoService" ref="demoServiceLocal" />
<dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>

ÉÏÃæÑùÀýÖУ¬×¢ÒâÏÂdubbo schemaµÄд·¨£º

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org
/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

Ö§³ÖµÄÅäÖñêÇ©

ÅäÖÃÖ®¼ä¹ØÏµÍ¼

ÅäÖÃÏîÏê½â

<dubbo:application name=¡±hello-world-app¡± />

ÓÃÓÚÖ¸¶¨Ó¦ÓÃÃû£¬ÕâÀïÐèÒª±£Ö¤Ó¦ÓÃÃûΨһ£¬Õâ¸öÓ¦ÓÃÃûÔÚºóÐøµÄconsole adminÖпÉÒÔÔÚÁбíÖÐÏÔʾ£¬·½±ã¹ÜÀí¡£

<dubbo:registry address=¡±multicast://224.5.6.7:1234¡± />

×¢²áÖÐÐÄÅäÖ㬺ͷþÎñ·¢ÏֵľßÌå»úÖÆÓйØÏµ¡£¿ÉÒÔÊÇzookeeperµØÖÊ£¬Ò²¿ÉÒÔeurekaµØÖÊ¡£ÉÏÃæÕâ¸öÊǹ㲥µØÖ·£¬ÔÚ±¾µØ·þÎñµ÷ÓõIJâÊÔ¹ý³ÌÖзdz£·½±ã¡£

<dubbo:protocol name=¡±dubbo¡± port=¡±20880¡± />

ÕâÀïÊÇ´«ÊäµÄЭÒéºÍĬÈ϶˿ڣ¬Ò»°ã²»ÐèÒª¸ü¸Ä¡£

½ÓÏÂÀ´Öص㽲½âÏÂ<dubbo:service/>µÄÅäÖá£

<dubbo:service/>Ö§³ÖµÄÖ÷ÒªÊôÐÔÁÐ±í£º

| ÊôÐÔÃû | ˵Ã÷ |

| ¡ª¡ª¨C | ¡ª¨C |

| version | °æ±¾ºÅ |

| scope | ·þÎñ¿É¼ûÐÔ, ֵΪ£ºlocal »òÕß remote£¬Ä¬ÈÏΪremote |

| actives | ×î´óµÄ¼¤»îµÄÇëÇóÊý |

| async | ·½·¨µ÷ÓÃÊÇ·ñÒì²½£¬Ä¬ÈÏΪfalse |

| cache | ·þÎñ»º´æ£¬¿Éѡֵ£ºlru/threadlocal/jcache |

| callbacks | callbackʵÀýµÄÏÞÖÆ |

| generic | ·º»¯µ÷Ó㬿ÉÒÔÈÆ¹ý |

| class | ServiceµÄʵÏÖµÄÀàÃû |

| connections | Õâ¸ö·þÎñÀïµÄÁ¬½ÓÊý |

| delay | ·¢²¼·þÎñÑӳٵĺÁÃëÊý |

| executes | ·þÎñÖ´ÐеÄÇëÇóÉÏÏÞ |

| retries | ³¬Ê±ÖØÊÔ´ÎÊý |

| timeout | µ÷Óó¬Ê±Ê±¼ä |

ÆäËûÅäÖÃÊôÐÔÇë²Î¿¼xsd£ºhttp://dubbo.apache.org/schema/dubbo/dubbo.xsd

<dubbo:method/>×÷Ϊ<dubbo:service/>µÄ×ÓÔªËØ£¬Ëü¿ÉÒÔÕë¶Ô·½·¨½øÐÐÅäÖᣱȽϳ£ÓõÄÊôÐÔÓУº

ÆäËûÊôÐÔ£¬¿ÉÒԲο¼ÉÏÃæµÄxsd¡£

ÅäÖõĸ²¸Ç¹ØÏµ

ÅäÖõĸ²¸Ç¹ØÏµÍ¼

ÕâÀïµÄ¸²¸Ç¹ØÏµ°üº¬ÁËProviderºÍConsumerÁ½¶ËµÄÅäÖã¬Èç¹û¶ÔconsumerÓÐÒÉÎÊ£¬¿ÉÒԲο¼ºóÒ»Õ½ڵÄconsumerÕ½ÚÖ®ºóÔÙÀ´Àí½â¡£

dubbo.properties·½Ê½ÅäÖÃ

Èç¹û¹«¹²ÅäÖúܼòµ¥£¬Ã»Óжà×¢²áÖÐÐÄ£¬¶àЭÒéµÈÇé¿ö£¬»òÕßÏë¶à¸ö Spring ÈÝÆ÷Ïë¹²ÏíÅäÖ㬿ÉÒÔʹÓà dubbo.properties ×÷ΪȱʡÅäÖá£

Dubbo ½«×Ô¶¯¼ÓÔØ classpath ¸ùĿ¼Ï嵀 dubbo.properties£¬¿ÉÒÔͨ¹ýJVMÆô¶¯²ÎÊý -Ddubbo.properties.file=xxx.properties ¸Ä±äȱʡÅäÖÃλÖá£

dubbo.propertiesÅäÖÃÑùÀý

# Ó¦ÓÃÃû
dubbo.application.name=dubbodemo-provider
# ×¢²áÖÐÐĵØÖ·
dubbo.registry.address=zookeeper://localhost:2181
# ¹ã²¥µÄ×¢²áÖÐÐÄÑùÀý
#dubbo.registry.address=multicast://224.5.6.7:1234
# µ÷ÓÃЭÒ鵨ַ
dubbo.protocol.name=dubbo
dubbo.protocol.port=28080

Ó³É乿Ôò

½« XML ÅäÖõıêÇ©Ãû£¬¼ÓÊôÐÔÃû£¬Óõã·Ö¸ô£¬¶à¸öÊôÐÔ²ð³É¶àÐÐ

±ÈÈ磺dubbo.application.name=fooµÈ¼ÛÓÚ<dubbo:application name=¡±foo¡± />

±ÈÈ磺dubbo.registry.address=10.20.153.10:9090µÈ¼ÛÓÚ<dubbo:registry address=¡±10.20.153.10:9090¡± />

Èç¹û XML ÓжàÐÐͬÃû±êÇ©ÅäÖ㬿ÉÓà id ºÅÇø·Ö£¬Èç¹ûûÓÐ id ºÅ½«¶ÔËùÓÐͬÃû±êÇ©ÉúЧ

±ÈÈ磺dubbo.protocol.rmi.port=1234µÈ¼ÛÓÚ<dubbo:protocol id=¡±rmi¡± name=¡±rmi¡± port=¡±1099¡± /> 2

±ÈÈ磺dubbo.registry.china.address=10.20.153.10:9090µÈ¼ÛÓÚ<dubbo:registry id=¡±china¡± address=¡±10.20.153.10:9090¡± />

¸²¸Ç²ßÂÔ

JVM Æô¶¯ -D ²ÎÊýÓÅÏÈ£¬ÕâÑù¿ÉÒÔʹÓû§ÔÚ²¿ÊðºÍÆô¶¯Ê±½øÐвÎÊýÖØÐ´£¬±ÈÈçÔÚÆô¶¯Ê±Ðè¸Ä±äЭÒéµÄ¶Ë¿Ú¡£

XML ´ÎÖ®£¬Èç¹ûÔÚ XML ÖÐÓÐÅäÖã¬Ôò dubbo.properties ÖеÄÏàÓ¦ÅäÖÃÏîÎÞЧ¡£

Properties ×îºó£¬Ï൱ÓÚȱʡֵ£¬Ö»ÓÐ XML ûÓÐÅäÖÃʱ£¬dubbo.properties µÄÏàÓ¦ÅäÖÃÏî²Å»áÉúЧ£¬Í¨³£ÓÃÓÚ¹²Ïí¹«¹²ÅäÖ㬱ÈÈçÓ¦ÓÃÃû¡£

×¢Ò⣺

1.Èç¹û classpath ¸ùĿ¼Ï´æÔÚ¶à¸ö dubbo.properties£¬±ÈÈç¶à¸ö jar °üÖÐÓÐ dubbo.properties£¬Dubbo »áÈÎÒâ¼ÓÔØ£¬²¢´òÓ¡ Error ÈÕÖ¾£¬ºóÐø¿ÉÄܸÄΪÅ×Òì³£¡£ ?

2.ЭÒéµÄ id ûÅäʱ£¬È±Ê¡Ê¹ÓÃЭÒéÃû×÷Ϊ id

annotation

Service×¢½â±©Â¶·þÎñ

import com.alibaba.dubbo.config.annotation.Service;

@Service(timeout = 5000)
public class AnnotateServiceImpl implements AnnotateService {
// ...
}

javaconfigÐÎʽÅäÖù«¹²Ä£¿é

@Configuration
public class DubboConfiguration {
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("provider-test");
return applicationConfig;
}

@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181");
registryConfig.setClient("curator");
return registryConfig;
}
}

ÕâÖÖ·½Ê½µÄÅäÖúÍÇ°ÃæÓÃxmlÅäÖõķ½Ê½ÊÇÒ»ÑùµÄЧ¹û¡£

Ö¸¶¨dubboɨÃè·¾¶

@SpringBootApplication
@DubboComponentScan(basePackages = "com.alibaba.dubbo.test.service.impl")
public class ProviderTestApp {
// ...
}

»òÕßʹÓÃspring bean xmlÅäÖ÷½Ê½£º

<dubbo:annotation package="com.chanshuyi.service.impl" />

apiÖ±½Ó´¥·¢

import com.alibaba.dubbo.rpc.config.ApplicationConfig;
import com.alibaba.dubbo.rpc.config.RegistryConfig;
import com.alibaba.dubbo.rpc.config.ProviderConfig;
import com.alibaba.dubbo.rpc.config.ServiceConfig;
import com.xxx.XxxService;
import com.xxx.XxxServiceImpl;

// ·þÎñʵÏÖ
XxxService xxxService = new XxxServiceImpl();

// µ±Ç°Ó¦ÓÃÅäÖÃ
ApplicationConfig application = new ApplicationConfig();
application.setName("xxx");

// Á¬½Ó×¢²áÖÐÐÄÅäÖÃ
RegistryConfig registry = new RegistryConfig();
registry.setAddress("10.20.130.230:9090");
registry.setUsername("aaa");
registry.setPassword("bbb");

// ·þÎñÌṩÕßЭÒéÅäÖÃ
ProtocolConfig protocol = new ProtocolConfig();
protocol.setName("dubbo");
protocol.setPort(12345);
protocol.setThreads(200);

// ×¢Ò⣺ServiceConfigÎªÖØ¶ÔÏó£¬ÄÚ²¿·â×°ÁËÓë×¢²áÖÐÐĵÄÁ¬½Ó£¬ÒÔ¼°¿ªÆô·þÎñ¶Ë¿Ú

// ·þÎñÌṩÕß±©Â¶·þÎñÅäÖÃ
ServiceConfig<XxxService> service = new ServiceConfig<XxxService>(); // ´ËʵÀýºÜÖØ£¬·â×°ÁËÓë×¢²áÖÐÐĵÄÁ¬½Ó£¬Çë×ÔÐлº´æ£¬·ñÔò¿ÉÄÜÔì³ÉÄÚ´æºÍÁ¬½Óй©
service.setApplication(application);
service.setRegistry(registry); // ¶à¸ö×¢²áÖÐÐÄ¿ÉÒÔÓÃsetRegistries()
service.setProtocol(protocol); // ¶à¸öЭÒé¿ÉÒÔÓÃsetProtocols()
service.setInterface(XxxService.class);
service.setRef(xxxService);
service.setVersion("1.0.0");

// ±©Â¶¼°×¢²á·þÎñ
service.export();

Ò»°ãÔÚspringÓ¦ÓÃÖУ¬²»ÍƼöʹÓÃÕâÖÖ·½Ê½¡£ ¾ßÌåµÄº¬ÒåÕâÀï²»×ö½âÊÍ£¬¿ÉÒÔͨ¹ýgithub²é¿´Ô´Âë¡£

Provider ½Ó¿ÚºÍʵÏÖ

ÉÏÃæÕ½ڸü¶à´ÓÅäÖýǶȳö·¢£¬½ÓÏÂÀ´Í¨¹ýÒ»¸öÍêÕûµÄÀý×Ó£¬À´½²½âÏÂdubbo providerµÄÍêÕûʹÓá£

Õâ¸öÀý×ÓÖÐÖ»ÓÐÒ»¸ö·þÎñUserReadService£¬ÓÐÒ»¸ö·½·¨ getUserById¡£ ÐèÒª½«Õâ¸ö·þÎñͨ¹ýDubbo±©Â¶¸øÔ¶³ÌµÄ·þÎñ¡£¾ßÌåµÄ²½ÖèÈçÏ£º

1.´´½¨¹¤³Ì

Èç¹û±¾À´ÒѾ­Óй¤³Ì£¬¿ÉÒÔºöÂÔ¡£´´½¨Ò»¸öspring boot¹¤³Ì£¬¿ÉÒÔͨ¹ý https://start.spring.io/ ´´½¨¡£

2.¶¨Òå½Ó¿Ú

¶¨Òå½Ó¿Ú£ºUserReadService

public interface UserReadService{
public User getUserById(Long userId);
}

Õâ¸ö½Ó¿ÚÒ»°ãÀ´Ëµ»á·Åµ½¶ÀÁ¢µÄjar°üÀ×÷Ϊclient°ü¡£ ÆäËûÓ¦ÓÃÒªÏû·ÑÕâ¸ö·þÎñµÄʱºò£¬Ò»°ãÀ´ËµÐèÒªÓ¦ÓÃÒýÓÃÕâ¸öclient°ü¡£(³ýÁË·º»¯µ÷ÓÃ)

3.ʵÏÖ½Ó¿Ú

ʵÏÖUserReadService, µ±Ç°ÊµÏÖ²¿ÊðÔÚProviderµÄÓ¦ÓÃÖС£

public UserReadServiceImpl implements UserReadService{
public User getUserById(Long userId){
return xxx;
}
}

4.DubboÅäÖÃ

<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/
schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="hello-world-app" />
<dubbo:registry address="multicast://224.5.6.7:1234" />
<dubbo:protocol name="dubbo" port="20880" />
<bean id="userReadService" class="com.package.UserReadServiceImpl"/>
<dubbo:service interface="com.package.UserReadService" ref="userReadService" />
</beans>
   
11909 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö