JAV-529 added guide on migration from dubbo to servicecomb
Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/3e97a883 Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/3e97a883 Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/3e97a883 Branch: refs/heads/asf-site Commit: 3e97a883dd5a15c82929326e5fbca60dec8356f8 Parents: 4e37fb8 Author: seanyinx <[email protected]> Authored: Mon Nov 27 16:39:43 2017 +0800 Committer: seanyinx <[email protected]> Committed: Tue Nov 28 16:12:05 2017 +0800 ---------------------------------------------------------------------- _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 312 ++++++++++++++++++++++ 1 file changed, 312 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/3e97a883/_posts/cn/2017-11-27-dubbo-to-servicecomb.md ---------------------------------------------------------------------- diff --git a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md new file mode 100644 index 0000000..108d2d2 --- /dev/null +++ b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md @@ -0,0 +1,312 @@ +--- +title: "Dubbo to ServiceComb è¿ç§»æå" +lang: cn +ref: dubbo_to_servicecomb +permalink: /cn/docs/dubbo_to_servicecomb/ +excerpt: "Dubbo to ServiceComb è¿ç§»æå" +last_modified_at: 2017-11-27T11:08:00+08:00 +author: Sean Yin +redirect_from: + - /theme-setup/ +--- + +DubboåJava chassisåºå±é½ä½¿ç¨äºSpringçä¾èµæ³¨å ¥åbean管çç³»ç»ï¼æä»¥ä½¿ç¨Dubboçæå¡è¿ç§»å°ServiceCombå·¥ä½éè¾å°ï¼ +ä¸»è¦æ¹å¨å¨ä¾èµåé ç½®æ¹é¢ã + +## æå¡æä¾æ¹ +### æ¿æ¢ä¾èµ +å°å¯¹dubboçä¾èµæ¿æ¢ä¸ºå¯¹Java chassisçä¾èµ + +Dubbo +```xml + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>dubbo</artifactId> + <version>${dubbo.version}</version> + </dependency> +``` + +Java chassis +```xml + <dependencyManagement> + <dependencies> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>java-chassis-dependencies</artifactId> + <version>${java.chassis.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>transport-highway</artifactId> + </dependency> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>transport-rest-vertx</artifactId> + </dependency> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>provider-pojo</artifactId> + </dependency> + </dependencies> +``` + +### æ¿æ¢æå¡æ¥å£æ³¨é +以 `@Service` æ³¨éæ¹å¼æ´é²çæå¡æ¥å£ï¼ç¨ `@RpcSchema` æ¿ä»£ + +Dubbo +```java +import com.alibaba.dubbo.config.annotation.Service; + +@Service +public class SomeServiceImpl implements SomeService { + // ... +} +``` + +Java chassis +```java +@RpcSchema(schemaId = "someServiceEndpoint") +public class SomeServiceImpl implements SomeService { + // ... +} +``` + +### ä¿®æ¹æä¾æ¹å¯å¨å ¥å£ + +Dubbo +```java +public class ProviderMain +{ + + public static void main(String[] args) throws Exception + { + @SuppressWarnings( + { "resource", "unused" }) + ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml"); + System.out.println("Dubbo provider started successfully..."); + + System.in.read(); + } +} +``` + +Java chassis +```java +public class ProviderMain +{ + + public static void main(String[] args) throws Exception + { + Log4jUtils.init(); + BeanUtils.init(); + + System.out.println("ServiceComb provider started successfully..."); + } +} +``` + +### ä¿®æ¹æå¡æä¾æ¹é ç½® +Dubboæå¡éè¿ä¸ä¸ªXMLæä»¶åæ¶é ç½®äºæå¡æ¥å£ãæå¡æ³¨åä¸å¿å°åãæå¡çå¬ç«¯å£çææå 容ã +```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/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> + + <dubbo:application name="provider-service" /> + + <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> + + <dubbo:protocol name="dubbo" port="20880" /> + + <dubbo:annotation package="io.servicecomb.demo" /> + + <!-- 以XMLé ç½®æ¹å¼æ´é²çæå¡ --> + <dubbo:service interface="io.servicecomb.demo.api.AnotherService" ref="anotherServiceImpl" /> + <bean id="anotherServiceImpl" class="io.servicecomb.demo.provider.AnotherServiceImpl" /> + +</beans> +``` + +Java chassisä¹åæ ·æä¾äºä»¥XMLæä»¶æ´é²æå¡æ¥å£çæ¹å¼ï¼ä½å ¶ä»æå¡é ç½®åéè¿ `microservice.yaml` æä»¶æä¾ã +```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:p="http://www.springframework.org/schema/p" + xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd"> + + <!-- 以XMLé ç½®æ¹å¼æ´é²çæå¡ --> + <cse:rpc-schema schema-id="anotherServiceEndpoint" implementation="io.servicecomb.demo.provider.AnotherServiceImpl"/> +</beans> +``` + +```yaml +APPLICATION_ID: my-application +service_description: + name: service-provider + version: 0.0.1 +cse: + service: + registry: + address: http://127.0.0.1:30100 # æå¡æ³¨åä¸å¿å°å + rest: + address: 0.0.0.0:8080 # æå¡RESTç«¯å£ +``` + +## æå¡æ¶è´¹æ¹ +### æ¿æ¢ä¾èµ +å°å¯¹Dubboçä¾èµæ¿æ¢ä¸ºå¯¹Java chassisçä¾èµ +```xml + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>dubbo</artifactId> + <version>${dubbo.version}</version> + </dependency> +``` + +```xml + <dependencyManagement> + <dependencies> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>java-chassis-dependencies</artifactId> + <version>${java.chassis.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>transport-highway</artifactId> + </dependency> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>transport-rest-vertx</artifactId> + </dependency> + <dependency> + <groupId>io.servicecomb</groupId> + <artifactId>provider-pojo</artifactId> + </dependency> + </dependencies> +``` + +### ä¿®æ¹æ¶è´¹æ¹å¯å¨å ¥å£ +```java +public class ConsumerMain +{ + + public static void main(String[] args) throws Exception + { + @SuppressWarnings( + { "resource", "unused" }) + ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml"); + System.out.println("Dubbo Consumer started successfully..."); + + System.in.read(); + } +} +``` + +```java +public class ConsumerMain +{ + + public static void main(String[] args) throws Exception + { + Log4jUtils.init(); + BeanUtils.init(); + + System.out.println("ServiceComb Consumer started successfully..."); + } +} +``` + +### æå¡å¼æ¥è°ç¨ +Dubbo +```java + SomeService someService = (SomeService) context.getBean("someServiceRef"); + String hello = someService.sayHello("world"); + Future<String> future = RpcContext.getContext().getFuture(); + return future.get(); +``` + +Java chassis +```java + ApplicationContext context = BeanUtils.getContext(); + SomeService someService = (SomeService) context.getBean("someServiceRef"); + + CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> someService.sayHello("world")); + return future.get(); +``` + +### ä¿®æ¹æå¡æä¾æ¹é ç½® +Dubboæå¡éè¿ä¸ä¸ªXMLæä»¶åæ¶é ç½®äºè¿ç¨æå¡æä¾æ¹æ¥å£ãæå¡æ³¨åä¸å¿å°åãæå¡çå¬ç«¯å£çææå 容ã +```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/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> + + <dubbo:application name="consumer-service" /> + + <dubbo:protocol name="dubbo" port="20880"/> + <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> + + <dubbo:reference id="someServiceRef" + interface="io.servicecomb.demo.api.SomeService" + async="true" timeout="30000" /> + + <dubbo:reference id="anotherServiceRef" + interface="io.servicecomb.demo.api.AnotherService" + async="true" timeout="30000" /> +</beans> +``` + +Java chassisä¹åæ ·æä¾äºä»¥XMLæä»¶å¼ç¨è¿ç¨æå¡æä¾æ¹æ¥å£çæ¹å¼ï¼ä½å ¶ä»æå¡é ç½®åéè¿ `microservice.yaml` æä»¶æä¾ã +```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:p="http://www.springframework.org/schema/p" + xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd"> + + + <cse:rpc-reference id="someServiceRef" microservice-name="service-provider" + schema-id="someServiceEndpoint" interface="io.servicecomb.demo.api.SomeService"/> + + <cse:rpc-reference id="anotherServiceRef" microservice-name="service-provider" + schema-id="anotherServiceEndpoint" interface="io.servicecomb.demo.api.AnotherService"/> +</beans> +``` + +```yaml +APPLICATION_ID: my-application +service_description: + name: service-consumer + version: 0.0.1 +cse: + service: + registry: + address: http://127.0.0.1:30100 +```
