dubbo是一个分布式服务框架,使用之前我们先要安装zookeeper
(dubbo结构 provider(服务生产者) + zookeeper (其中最重要的服务发现中心)+ customer(服务消费者))
第一步:zookeeper安装
下载路径以及安装命令
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
修改配置文件的信息
设置datadir和dataLogDir,之前创建文件的路径
在data_1下创建myid =touchmyid,并输入1
启动zookeeper服务
注意:如果启动出现Permission denied FAILED TO WRITE PID,获取root权限,输入命令su root,输入密码,再次启动
进入zookeeper-3.4.10/bin目录,输入./zkServer.shstart
开放端口号:firewall-cmd --permanent--zone=public --add-port=2181/tcp
查看端口号是否开启:firewall-cmd --query-prot=2181/tcp
关闭防火墙:systemctl stop firewall.service
重启防火墙:systemctl restart firewall.service
dubbo服务
下载我的资源 dubbo-admin.war,把他放在tomcat的webapps下,运行tomcat,进入dubbo-admin/webapps/WEB-INF/dubbo.properties修改zookeeper的Ip地址·
将tomcat原来的ROOT改为删除,把dubbo-admin改为ROOT
访问你的tomcat,配置完成,输入帐号密码
第二步:创建服务提供者,provider项目
application.properites文件的配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://linux_ip_address:2181##zookeeper的端口号
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.xxxx.service --dubbo扫描的包
server.port=8888
pom文件的配置
org.springframework.boot
spring-boot-starter-parent
1.5.1.RELEASE
1.0.0
io.dubbo.springboot
spring-boot-starter-dubbo
${dubbo-spring-boot}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
junit
junit
4.12
测试类中的代码
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
暴露的服务接口
public interface HiService {
void sayHello(String name);
}
实现
@Service(version="1.0.0")//通过注解暴露接口
public class HiServiceImpl implements HiService{
public void sayHello(String name) {
System.err.println("hello!"+name);
}
}
包结构
运行springboot项目
查看dubbo-admin ->provider
发布成功
创建consumer项目
consumer项目pom文件配置(从
org.springframework.boot
spring-boot-starter-parent
1.5.1.RELEASE
1.0.0
io.dubbo.springboot
spring-boot-starter-dubbo
${dubbo-spring-boot}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
application.properites文件
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://linux_ip_address:2181
spring.dubbo.scan=com.bdqn.serviceImpl --扫描的包
server.port=8889 --更改springboot内置tomcat的端口号
测试代码
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
service层接口与实现类的方法
public interface HiService {
void sayHello(String name);
}
实现类
@Component
public class HiServiceImpl implements HiService{
@Reference(version="1.0.0")
private HiService hiService;
public void sayHello(String name) {
hiService.sayHello("mmmm!");
}
}
运行consumer项目
消费成功
一个简单的分布式项目
总结:dubbo作为一个分布式服务框架,总体上感觉配置略显复杂,与springcloud相比,springcloud配置更简单,快捷,轻巧