From 576872aa1dc1f9fc012c467047ddc3a25717c0ea Mon Sep 17 00:00:00 2001 From: seanyinx Date: Mon, 27 Nov 2017 16:39:43 +0800 Subject: [PATCH 1/2] JAV-529 added guide on migration from dubbo to servicecomb --- _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 312 +++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 _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 + + com.alibaba + dubbo + ${dubbo.version} + +``` + +Java chassis +```xml + + + + io.servicecomb + java-chassis-dependencies + ${java.chassis.version} + pom + import + + + + + + + io.servicecomb + transport-highway + + + io.servicecomb + transport-rest-vertx + + + io.servicecomb + provider-pojo + + +``` + +### 替换服务接口注释 +以 `@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 + + + + + + + + + + + + + + + + + +``` + +Java chassis也同样提供了以XML文件暴露服务接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。 +```xml + + + + + + +``` + +```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 + + com.alibaba + dubbo + ${dubbo.version} + +``` + +```xml + + + + io.servicecomb + java-chassis-dependencies + ${java.chassis.version} + pom + import + + + + + + + io.servicecomb + transport-highway + + + io.servicecomb + transport-rest-vertx + + + io.servicecomb + provider-pojo + + +``` + +### 修改消费方启动入口 +```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 future = RpcContext.getContext().getFuture(); + return future.get(); +``` + +Java chassis +```java + ApplicationContext context = BeanUtils.getContext(); + SomeService someService = (SomeService) context.getBean("someServiceRef"); + + CompletableFuture future = CompletableFuture.supplyAsync(() -> someService.sayHello("world")); + return future.get(); +``` + +### 修改服务提供方配置 +Dubbo服务通过一个XML文件同时配置了远程服务提供方接口、服务注册中心地址、服务监听端口等所有内容。 +```xml + + + + + + + + + + + + +``` + +Java chassis也同样提供了以XML文件引用远程服务提供方接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。 +```xml + + + + + + + + +``` + +```yaml +APPLICATION_ID: my-application +service_description: + name: service-consumer + version: 0.0.1 +cse: + service: + registry: + address: http://127.0.0.1:30100 +``` From 373bd88bfbcb324f3a90733361e8742e7d5ed8e3 Mon Sep 17 00:00:00 2001 From: seanyinx Date: Mon, 27 Nov 2017 17:09:32 +0800 Subject: [PATCH 2/2] JAV-529 added github link with minor adjustment --- _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md index 108d2d2..2d93932 100644 --- a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md +++ b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md @@ -13,6 +13,8 @@ redirect_from: Dubbo和Java chassis底层都使用了Spring的依赖注入和bean管理系统,所以使用Dubbo的服务迁移到ServiceComb工作量较小, 主要改动在依赖和配置方面。 +本文示例代码可在[Java chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis/tree/master/samples)中获取。 + ## 服务提供方 ### 替换依赖 将对dubbo的依赖替换为对Java chassis的依赖 @@ -169,6 +171,8 @@ cse: ## 服务消费方 ### 替换依赖 将对Dubbo的依赖替换为对Java chassis的依赖 + +Dubbo ```xml com.alibaba @@ -177,6 +181,7 @@ cse: ``` +Java chassis ```xml @@ -207,6 +212,7 @@ cse: ``` ### 修改消费方启动入口 +Dubbo ```java public class ConsumerMain { @@ -223,6 +229,7 @@ public class ConsumerMain } ``` +Java chassis ```java public class ConsumerMain {