创建MAVEN项目
项目结构:
主要分三大模块:
dubbo-api : 存放定义的服务接口;
dubbo-consumer : 服务消费者;
dubbo-provider : 服务提供者(也是服务接口实现者)
公共依赖pom.xml
4.0.0
dubbo
dubbo
1.0.0
pom
this is fist dubbo demo
dubbo-consumer
dubbo-provider
dubbo-api
1.8
1.8
UTF-8
UTF-8
4.2.5.RELEASE
3.2.8
5.1.29
1.7.18
1.2.17
junit
junit
3.8.1
test
jstl
jstl
1.2
javax
javaee-api
7.0
junit
junit
4.11
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-test
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.2
mysql
mysql-connector-java
${mysql-driver.version}
commons-dbcp
commons-dbcp
1.2.2
com.alibaba
fastjson
1.2.22
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.13
;
com.fasterxml.jackson.core
jackson-core
2.8.0
;
com.fasterxml.jackson.core
jackson-databind
2.8.0
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
org.quartz-scheduler
quartz
2.2.1
org.apache.shiro
shiro-core
1.3.2
org.apache.shiro
shiro-web
1.3.2
org.apache.shiro
shiro-spring
1.3.2
org.apache.shiro
shiro-ehcache
1.3.2
org.apache.zookeeper
zookeeper
3.4.9
com.alibaba
dubbo
2.5.3
org.springframework
spring
com.101tec
zkclient
0.10
dubbo
下面,我为大家具体讲解三个子项目。
1、服务接口dubbo-api
pom.xml
4.0.0
dubbo
dubbo
1.0.0
dubbo
dubbo-api
1.0.0
dubbo-api
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
DemoService.java
package com.dubbo.api.demo;
/**
*
* @ClassName: DemoService
* @Description: 定义服务接口
* @author chenqi
* @date 2018年10月4日
*
*/
public interface DemoService {
String helloDubbo(String str);
}
2、 服务提供者(也是服务接口实现者)dubbo-provider
pom依赖
4.0.0
dubbo
dubbo
1.0.0
dubbo-provider
dubbo-provider
服务提供者
http://maven.apache.org
UTF-8
dubbo
dubbo-api
${project.version}
junit
junit
3.8.1
test
配置文件provider.xml
服务接口实现类(用于提供服务)
实现服务接口,此实现对消费者隐藏
package com.dubbo.provider.demo;
import com.dubbo.api.demo.DemoService;
/**
*
* @ClassName: DemoServiceImpl
* @Description: 服务接口实现类(用于提供服务)
* @author chenqi
* @date 2018年10月4日
*
*/
public class DemoServiceImpl implements DemoService {
/**
* 实现 DemoService 中的 helloDubbo 接口
*/
public String helloDubbo(String str) {
return "hello " + str;
}
}
服务启动类
package com.dubbo.provider.demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
*
* @ClassName: Provider
* @Description: 服务启动类
* @author chenqi
* @date 2018年10月4日
*
*/
public class ProviderApplication {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
System.out.println(context.getDisplayName() + ": here");
context.start();
System.out.println("服务已经启动...");
System.in.read();
}
}
3、服务消费者dubbo-consumer
pom依赖
4.0.0
dubbo
dubbo
1.0.0
dubbo-consumer
dubbo-consumer
服务消费者
http://maven.apache.org
UTF-8
dubbo
dubbo-api
${project.version}
junit
junit
3.8.1
test
配置文件consumer.xml
通过Spring配置引用远程服务:
测试服务消费者获取服务接口
package com.dubbo.consumer.demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dubbo.api.demo.DemoService;
/**
*
* @ClassName: ConsumerTest
* @Description: 测试服务消费者获取服务接口
* @author chenqi
* @date 2018年10月7日
*
*/
public class ConsumerTest {
public static void main(String[] args) {
//测试常规服务
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("consumer.xml");
context.start();
System.out.println("consumer start");
DemoService demoService = context.getBean(DemoService.class);
System.out.println("consumer");
System.out.println(demoService.helloDubbo("dubbo"));
}
}
OK,下面我们依次启动服务提供者和服务消费者,注意确保provider已被运行后再启动consumer
启动服务提供者:
启动报了点错误,暂时忽略。
运行消费者进行测试:
可以看到,消费者成功调用提供者所提供的远程服务。当然,这只是一个模拟的项目,实际中有多提供者多消费者情况,比这要复杂的多,当然只有这样才能体现dubbo的特性。
管理控制台功能
路由规则,动态配置,服务降级
访问控制,权重调整
负载均衡
网上自行下载dubbo-admin,下载后是一个war包,直接放到tomcat安装目录的webapps目录下,然后启动tomcat即可
浏览器访问:http://localhost:28080/dubbo-admin/
输入用户名密码 root
查看服务提供者
查看服务消费者