终于要开始进入正题了,但是越接近内部,越接近代码的部分,往往问题越多!以此文警示后来者,坑多,慎踩!
1.搭建dubbo管理平台
首先,到官网去下载dubbo的包,但是管理平台只会用到其中的dubbo-admin的包。官网的现在最新版本并没有dubbo-admin这个包,你得去找找它的历史版本。最后一个有这个的是2.5版本。传送门:dubbo-admin
那么,现在拿到包了,将dubbo-admin的那个文件夹复制一份,比如我是放在E盘的根目录。然后win+R组合键打开运行,输入cmd,打开命令行。进入dubbo-admin目录, 输入:jar -cvf dubbo-admin.war . 打成war包。如果你打的war包没法用的话,可以试试我的:链接: https://pan.baidu.com/s/1b2DSNNqkZbCGNVerQc_eNQ 提取码: krnh
将war包放入Tomcat的webapps目录中
启动zookeeper,启动Tomcat。
我的Tomcat端口是9999,dubbo的文件名是dubbo-admin-2.5.4,所以在浏览器输入127.0.0.1:9999/dubbo-admin-2.5.4。回车之后会出现如下弹框,账号密码都是root
进入之后的效果如下:
这样,dubbo的平台就搭建好了。
2.服务者的搭建
我用idea搭建的springboot,前期建立工程的流程跟建普通springboot工程的流程一样。直接上图
点击finish,工程就建好了。接下来就是配置工程。
首先,为pom.xml文件添加jar包依赖
<!--分布式配置-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- Dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.5</version>
</dependency>
<!-- Spring Context Extras -->
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.24.Final</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
接下来是创建接口类
package com.htc;
public interface TestSayHello {
public String sayHello(String str);
}
然后是实现类
package com.htc;
import com.alibaba.dubbo.config.annotation.Service;
@Service(version = "1.0.0")
public class TestSayHelloImp implements TestSayHello {
public String sayHello(String str){
return str+"say: Hello World!";
}
}
接下来是application.properties 文件
#为项目配置的端口号,默认是8081
server.port=8088
##zookeeper公共配置
#这个项目的名称
dubbo.application.name=provider
#这个项目对应的zookeeper服务器
dubbo.registry.address=zookeeper://127.0.0.1:2181
#spring.dubbo.protocol.name=dubbo
#对外暴露的端口号
#spring.dubbo.protocol.port=20880
#扫描的包路径
dubbo.scan.basePackages=com.htc
dubbo.registry.id = my-registry
启动zookeeper,启动Tomcat
打开管理平台
至此,生产者已经搭建成功。
3.消费者搭建
和生产者类似,建立一个DubboConsumer
同样的,先把依赖导进去,和服务者的依赖是一样的,就不写了。然后在与服务者位置相同的地方创建一个相同的接口类
package com.htc;
public interface TestSayHello {
public String sayHello(String str);
}
消费者的启动项
package com.htc;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;
@SpringBootApplication
public class DubboconsumerApplication {
@Reference(version="1.0.0")
private TestSayHello testSayHello;
public static void main(String[] args) {
SpringApplication.run(DubboconsumerApplication.class, args);
}
@PostConstruct
public void init(){
System.out.println(testSayHello.sayHello("mark"));
}
}
最后就是配置文件了
#zookeeper公共配置
server.port=8083
# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.name= client
## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = zookeeper://127.0.0.1:2181
##thymeleaf配置是为了controller调用做管理的,如果像我一样写在启动项里就不用配置了
#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
#static 文件夹下的静态文件访问路径
spring.mvc.static-path-pattern=/static/**
#thymeleaf end
开启zookeeper,开启Tomcat,开启服务者,开启消费者,如果没问题的话,应该就是长这样了
------------------------------------------------------------------雷区警戒线----------------------------------------------------------------------------
坑1:dubbo根本挂载不上去?
填坑:网上有很多关于分布式搭建的教程,但基本上都是1.X版本的,现在的2.X版本用不上,是由于我使用的是springboot2.X的版本,所以那些教程都不适用,jar包依赖根本不行。我个人推荐一个到 dubbo的官网去逛逛,它上面有springboot 整合dubbo的资料还是挺受用的,另外它还可以在线生成分布式项目。
(由于个人也没怎么学精,所以一切都是根据官方的东西搭建的,没踩什么坑,如果后期有问题我会继续在这里补充的,如果大家有啥坑,请留言)
传送门:dubbo官网
--------------------------------------------------------------我不是系统的生产者,我只是bug的搬运工----------------------------------------
上一篇文章:SpringBoot学习笔记(第四天) zookeeper 伪分布式搭建
下一篇文章:activity MQ 做简单的即时聊天工具