首先springboot框架就不用多说了,想来大家都已经了解了。主要说下dubbo和zookeeper的概念,以及在基于springboot框架搭建dubbo+zookeeper分布式服务架构。
来一个比较官方的解释dubbo框架:dubbo是阿里巴巴soa服务化治理方案的核心框架,是一个分布式服务的框架,致力于提高性能和透明化rpc远程服务调用方案,已经soa服务治理方案。看到这里会有点懵,什么是soa呢,什么是rpc呢???
soa:面向服务的架构,将应用程序的不同功能单元(也叫作服务)通过服务之间的定义良好的接口和契约联系起来。
rpc:远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
在dubbo+zookeeper中有三个重要的角色:
1.provider(服务提供者):在我们项目中可以粗糙地理解成实现类
2.Consumer(服务消费者):可以理解为调用服务(调用实现类)的类,类似于controller,当然如果集成rabbitmq也有可能是消息队列的类,也有可能是实现类调用实现类,所以实现类可以身兼数职,既可以是服务提供者也可以是服务调用者。
3.registry(zookeeper):也就是我们的注册中心,zookeeper是Apache下的产品。
没有用dubbo之前我们一般是controller调用service,service调用mapper(dao),但是现在加上了dubbo以后就是controller(当然不止controller,所有服务消费者都可以)通过向zookeeper订阅服务,service向zookeeper注册服务,通过zookeeper这个中介,把服务提供方的服务注入到服务消费者中。
网上找了一张图(调用逻辑如图,不理解也无妨):
现在我们创建springboot项目,先创建父项目boot-dubbo(楼主用的是eclipse)
pom.xml内容如下:
4.0.0
com.boot
boot-dubbo
1.0-SNAPSHOT
boot-dubbo-api
boot-dubbo-provider
boot-dubbo-consumer
pom
org.springframework.boot
spring-boot-starter-parent
1.5.7.RELEASE
UTF-8
1.8
2.5.5
0.10
1.16.18
1.5.7.RELEASE
1.0.0
org.springframework.boot
spring-boot-starter
${spring-boot.version}
org.projectlombok
lombok
${lombok.version}
provided
com.alibaba
dubbo
${dubbo.version}
com.101tec
zkclient
${zkclient.version}
io.dubbo.springboot
spring-boot-starter-dubbo
${spring-boot-starter-dubbo.version}
再创建boot-dubbo-api(定义暴露给dubbo的接口)
建成以后我们在api项目中建一个实体类User,和一个接口interface UserService 都是用来测试的
pom.xml为 api项目不需要依赖其他项目 所以不需要加dependencies:
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-api
有了接口以后肯定是要建实现类(服务提供方)的项目了,建项目的步骤和api项目相同,也是new maven Module
写一个实现类重写getUser(),如下图
服务提供者的pom.xml文件:
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-provider
com.boot
boot-dubbo-api
1.0-SNAPSHOT
io.dubbo.springboot
spring-boot-starter-dubbo
org.springframework.boot
spring-boot-maven-plugin
最后我们还差一个服务的消费者,在这个demo里边我们用的是controller,命名boot-dubbo-consumer。在里头创建一个userController类,如下图所示:
服务消费者的pom.xml
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-consumer
com.boot
boot-dubbo-api
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
io.dubbo.springboot
spring-boot-starter-dubbo
org.springframework.boot
spring-boot-maven-plugin
接下来要干的是在linux上边安装zookeeper:
并装上dubbo-admin的监控平台。这个步骤暂时不演示,具体可以参考url: linux部署zookeeper
当我们在linux上把zookeeper注册中心启动起来以后 并把dubbo-admin的监控平台用Tomcat跑起来以后再先后运行
boot-dubbo-provider项目中的启动类providerApplication中的main方法和boot-dubbo-consumer中的consumerApplication中的main方法:分别如下图
服务提供者启动后日志输出,192.168.1.121是我linux系统的ip地址,zookeeper的端口号是2181
服务消费者启动后看看日志输出:8080是本地tomcat启动的端口号
打开dubbo-admin的控制台就可以看到了已经有一个服务了,状态正常就说明,兼备服务提供者和服务消费者了:
最后我们访问一下这个getUser这个接口:
献上的github项目地址,如果不想自己手动搭建的可以点击链接直接下 点击打开链接