Dubbo+zookeeper+springboot入门
下载zookeeper
官网下载zookeeper
我下载的是3.6.3
解压之后进到conf目录下复制一个zoo.cfg
在3.6.0以上要在zoo.cfg加入一行audit.enable=true 不然运行会显示ZooKeeper audit is disabled
运行zkServer.cmd
Dubbo下载
1、去官网下载Dubbo
2、2.5以上的没有dubbo-admin目录,所以我下载的2.5版本的进到dubbo-admin目录运行cmd然后运行mvn clean package也可以导入到idea里面然后打包,这里我的jdk是1.8,然后jdk版本是12的话会失败,因为我本来的jdk版本是12,如果是jdk版本是12,在pom文件中指定jdk版本,
**3、**打包成功后在target目录下会有.war的文件
4、可以在当前目录下运行cmd命令 java -jar xxxx.war,如果显示dubbo-admin-2.5.8.war中没有主清单属性
不用谎!!!
咱把.war文件复制到tomcat的webapps目录下,运行tomcat,会自己编译一个dubbo-admin-2.5.8文件夹,这里我自己把tomcat的默认端口改成了8088,因为会被占用,反正到时候也要改,看自己心情改端口。
运行tomcat,打开浏览器http://localhost:8088/dubbo-admin-2.5.8/
ok咱就进来了
账号密码都是root
创建项目
项目结构
先建一个空的项目,因为干净
然后在建一个Module
我把它叫做provide-server提供者
导入jar
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
创建TicketServer服务接口
public interface TicketServer {
public String getTicket();
}
TicketServerImpl
package com.lwj.server;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Service
@Component//使用了dubbo 尽量不要是要@server
public class TicketServerImpl implements TicketServer {
@Override
public String getTicket() {
return "lwj";
}
}
这里@Service是dubbo包下的
配置application.properties
server.port=8001
#当前应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
dubbo.scan.base-packages=com.lwj.server
先把zookeeper和Dubbo开起来
然后run去Dubbo可视化界面查看
然后发现没有,没关系在启动类下加上@EnableDubbo注解,因为我们使用了Dubbo包下的@Server注解,不加这个springboot会不认识它
重新运行
在新建一个Module做消费者
导入和上面一样的jar
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
写一个客户类
UserServer
package com.lwj.server;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
@Service
public class UserServer {
@Reference
TicketServer ticketServer;
public void buyticket(){
String ticket = ticketServer.getTicket();
System.out.println("买到票"+ticket);
}
}
这个@Service是springframework包下的不然就报错
配置application.properties
测试运行
结束,主要是自己踩了很多坑记录一下