过程很曲折
本地windows安装zookeeper,要下载带“bin”的包,不然是未进行编译的,不能运行 “ZooKeeper audit is disabled” 是版本问题。用:apache-zookeeper-3.5.8-bin tar在windows上解压不能成功 防火墙也关了的,端口也开启了的(不确定是否影响) 管理员权限启动zk netstat –ano|findstr "2181"端口占用taskkill /f /pid 5555 黑窗启动dubbo-admin很不稳定,连接成功了也经常需要敲回车 每一小步都进行调试,不然pom.xml错了都不自知 服务注册不成功(在页面上显示不出来,需要切换版本解决!!)
注解一定不要用错!!!
环境准备
zk官网下载(将zoo_sample.cfg文件复制一份修改为zoo.cfg(其中有个路径要写实) 编辑zkServer.cmd尾部加pause)
dubbo-admin下载地址:
https://github.com/apache/dubbo-admin/tree/master
编译/打包
mvn clean package -Dmaven.test.skip=true
运行dubbo-admin
访问
http://localhost:7001/
root/root
进不了页面需要在黑窗里敲一下回车
zk和服务管理页面(dubbo-admin)已经好了,然后:服务发布不了,在服务管理页面看球不到
整了半天,把版本从2.3.2降到2.2.1就得行了,
再重新换成2.3.2又得行了,真是气死人丶这东西真是没法解释又超级浪费时间丶
还一定需要那个过时的@Service注解
消费者又消费不到,恶心丶
@Reference这个注解要导dubbo下的!!!!!!
示例代码
<version>2.3.2.RELEASE</version>
依赖
<!-- dubbo + zookeeper --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>5.1.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency> <!--可能会引起日志冲突,需要排除一些东西--> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.1</version> <!-- 排除slf4j-log4j12 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
消费者与生产者路径一致
生产者
接口
public interface TicketService { public String getTicket(); }
实现类(Service注解已过期,新的用法不了解)
import com.example.service.TicketService; import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; @Service @Component//用了dubbo尽量不要使用@Service注解,容易误解 Component万能注解 public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "yeeee"; } }
配置
server.port=8081 #服务应用名称 dubbo.application.name=provider #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #哪些服务要被注册 dubbo.scan.base-packages=com.example.service
消费者
接口
public interface TicketService { public String getTicket(); }
获取到接口(注解已过期,新用法待了解)
import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service public class UserService { //去注册中心拿到服务 @Reference//法一 定义路径相同的接口名 法二 pom坐标 TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("在注册中心拿到==>"+ticket); } }
配置
server.port=8083 dubbo.application.name=consumer dubbo.registry.address=zookeeper://127.0.0.1:2181
测试
@SpringBootTest class ConsumerApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.buyTicket(); } }
Linux部署
首先jdk要1.8
zk/bin/zkServer.sh中添加环境变量
export JAVA_HOME=/usr/local/java8 export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar >temp.out &
http://xxx.xxx.xxx.xxx:7001/
消费者和服务者配置文件都添加:
dubbo.registry.timeout=23000 dubbo.provider.timeout=23000 dubbo.consumer.timeout=23000 dubbo.config-center.timeout=23000 dubbo.metadata-report.timeout=23000
https://github.com/ChenCurry/springboot-collection