SpringBoot版本的Dubbo入门(配合zookeeper):
---------------------------------------------dubbo 简单入门代码----------------------------------------------------------------
1.首先展示下项目结构:
①provider,充当服务
pom.xml:(此处充当服务者时,不需要url访问,即可以不需要tomcat,可以剔除)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sess</groupId> <artifactId>dubbo_consumer_two</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <dubbo-spring-boot>1.0.0</dubbo-spring-boot> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>${dubbo-spring-boot}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
SpringBootDubboServiceApplication:
package com.sess; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDubboServiceApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDubboServiceApplication.class, args); } }
User:
package com.sess.bean; import java.io.Serializable; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 7842017780313253729L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } }
IDubboService:
package com.sess.service; import com.sess.bean.User; public interface IDubboService { public User helloDubbo(User user); }
DubboServiceImpl:(此处的service调用的是dubbo的@service)
package com.sess.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.sess.bean.User; import com.sess.service.IDubboService; @Service public class DubboServiceImpl implements IDubboService{ public User helloDubbo(User user) { System.out.println("hello dubbo,I'm server;传来的消息是:"+user); return user ; } }
application.properties:
#Dubbo 服务提供者配置 spring.dubbo.application.name=springboot-dubbo-provider spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181 spring.dubbo.protocol.name=dubbo spring.dubbo.protocal.port=20880 spring.dubbo.scan=com.sess.service
②Consumer,充当消费者
pom.xml:(这里要注意的是,如果通过URL访问的话,tomcat还是需要的,不能够剔除)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sess</groupId> <artifactId>dubbo_provider_two</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <dubbo-spring-boot>1.0.0</dubbo-spring-boot> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>${dubbo-spring-boot}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
SpringBootDubboConsumerApplication:
package com.sess; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDubboConsumerApplication.class, args); } }
User:
package com.sess.bean; import java.io.Serializable; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 7842017780313253729L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } }
ServiceDemo:
package com.sess.service; import com.sess.bean.User; public interface ServiceDemo { public User test(); }
ServiceDemoImpl:(这里的@Reference是dubbo提供的注解,用来注入远程接口)
package com.sess.service; import org.springframework.stereotype.Service; import com.alibaba.dubbo.config.annotation.Reference; import com.sess.bean.User; @Service public class ServiceDemoImpl implements ServiceDemo { @Reference IDubboService iDubboService; public User test() { User user = new User(); user.setName("jack"); user.setAge(22); return iDubboService.helloDubbo(user); } }
IDubboService:(与service提供的接口一样)
package com.sess.service; import com.sess.bean.User; public interface IDubboService { public User helloDubbo(User user); }
ConsumerController:
package com.sess.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.sess.bean.User; import com.sess.service.ServiceDemo; @RestController public class ConsumerController { @Autowired ServiceDemo serviceDemo; @RequestMapping("testhello") public User testController() { return serviceDemo.test(); } }
application.properties:
# Dubbo消费者配置 spring.dubbo.application.name=spring-boot-consumer spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181 spring.dubbo.scan=com.sess.service server.port=8082
以上代码编辑完成后,首先启动provider,然后启动consumer.
浏览器输入http://localhost:8082/testhello即可访问
-------------------------------------------------zookeeper 配置------------------------------------------------------------------
我的zookeeper是安装在阿里云Centos7上: zookeeper-3.4.14版本
①首先下载zookeeper(可直接通过wget+downloadurl下载)
②解压缩 tar -zxvf zookeeper-3.4.14.tar.gz
③cd zookeeper查看里面内容
④cd conf,查看里面文件如下
⑤cp zoo_sample.cfg zoo.cfg,复制一份zoo_sample.cfg,并重新命名为zoo.cfg
⑥使用vi 命令打开zoo.cfg 并修改配置:
这里主要是修改dataDir的路径,如果路径原先不存在,需要事先创建好对应的文件夹,比如data文件夹
⑦启动zookeeper
进入到bin文件夹:
启动:
./zkServer.sh start
⑧使用命令查看zookeeper状态
./zkServer.sh status
⑨也可以通过进程来判断是否成功
ps -ef | grep zookeeper
进程已启动,说明是成功的。
--------------------------------------------------dubbo-admin-2.6.0的使用----------------------------------------------
作用:主要是对dubbo的管理
下载链接:dubbo-admin-2.6.0.war(百度网盘,永久有效)
提取码:11bm
①下载完了后,将其放入tomcat中
②需要修改dubbo.properties(修改完了需要重启tomcat)
比如我的配置:
dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181 dubbo.admin.root.password=xxxx dubbo.admin.guest.password=xxxx
(提醒,root的密码默认情况下就是root,guest的密码默认情况下就是guest)
以上内容配置完了后,浏览器打开url:http://localhost:8081/dubbo-admin-2.6.0/ (tomcat默认端口为8080,而我这边因为端口冲突,修改为了8081)
以上,就是dubbo远程调用+zookeeper服务注册的详细内容。