前言
自学多时,写一个demo做个总结。
从建项目开始,比较简单的实现springboot+dubbo+zookeeper,供初学者参考,更快的理解dubbo分布式。
环境
win10
Idea2018.1.2x64
jdk1.8.0_131
zookeeper-3.4.13
apache-tomcat-8.0.36
dubbo-admin-2.6.0.war(管理控制台,用来监控服务消费和注册情况的)
第一步:安装zookeeper和dubbo-admin
zookeeper
zookeeper自行安装,运行bin/zkServer.cmd,启动zookeeper注册中心

dubbo-admin
自行下载dubbo-admin-x.x.x.war放在tomcat/webapps下启动tomcat
http://localhost:8888/dubbo-admin-2.6.0/ 对应本机的tomcat端口号和aubbo-admin版本号,访问可以显示管理界面(默认账号密码都是root)

zookeeper,dubbo-admin的安装引用Honey_Badger大哥的帖子
https://www.cnblogs.com/tk55/p/10914326.html
第二步:创建项目
创建项目

Next > 给项目起名 > Finish
依次点击 Module > 绿色加号 > New Module > 新建一个springboot项目 > Next

起名

Next > 关联Web

Next > Finish
同理,新建api和consumer模块

OK,完成项目创建

导入依赖
api,consumer,provider都导入
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>com.sunc</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
此处注意,第三个依赖是编译api用的,如果只写生产者和消费者不写api就不需要这个
项目结构
分别在consumer,api,provider中新建controller,service,serviceImpl

service
标准的service类
package com.sunc.api.service;
public interface HelloService {
public String sayHello(String name);
}
controller
这里注意,没有使用自动注入注解
package com.sunc.consumer.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.sunc.api.service.HelloService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class HelloController {
@Reference
private HelloService helloService;
@RequestMapping("/seyHello")
public String sayHello(){
String name = "sunc";
return helloService.sayHello(name);
}
}
service实现类
这里注意新增Component注解,Service注解用alibaba的
package com.sunc.provider.serviceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import com.sunc.api.service.HelloService;
import org.springframework.stereotype.Component;
@Component
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello!"+name;
}
}
provider启动类
DubboComponentScan注解扫描serviceImpl包
package com.sunc.provider;
import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@DubboComponentScan("com.sunc.provider.serviceImpl")
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
可以右键包,复制全路径

application.properties配置
consumer
server.port=8898
dubbo.application.name=consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
provider
server.port=8897
dubbo.application.name=provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
启动项目
先启动provider

再启动consumer

访问controller
http://localhost:8898/hello/seyHello

返回hello,成功
查看dubbo-admin
可以看到一条提供者,一条消费者

成功
就这样简单的,在本地实现了分布式
如有偏颇敬请斧正,本厮邮箱:suncch@163.com
本文详细介绍如何在本地环境中快速搭建并实现SpringBoot与Dubbo的整合,通过具体示例展示了从项目创建到配置,再到服务提供与消费的全过程。文章涵盖了环境准备、项目结构、依赖引入、代码实现及配置等关键步骤。
1727





