SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子

Dubbo是什么?

具体点击:https://blog.csdn.net/houshaolin/article/details/76408399

例子:

首先先安装Zookeeper
在Zookeeper官网中下载Zookeeper发行包并解压:

SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第1张图片

复制Zookeeper配置文件

将Zookeeper安装目录的conf子文件夹中的zoo_sample.cfg复制一份并重命名为zoo.cfg

SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第2张图片

运行Zookeeper

执行Zookeeper安装(解压)目录中bin子文件夹的zkServer.cmd启动Zookeeper

SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第3张图片
打开后,这个cmd窗口不要关闭,。。。

代码块

首先创建springBoot项目
使用eclipse创建war项目,pom.xml可能出现说
web.xml is missing and 'failOnMissingWebXml' is set to true

解决方案

有两种:
第一种当然是创建一个web.xml了。
但是更推荐第二种,因为第一种会在项目里有一个无用文件。
第二种是告诉maven,我真的不需要web.xml了

  
      
          
            org.apache.maven.plugins  
            maven-war-plugin  
            2.6  
              
                false  
              
          
      
 

然后Maven>Update project这样就可以了,其中的version不是必需的。

服务端(提供者)

创建一个名为demo_provider的SpringBoot项目
需要引入的依赖


	io.dubbo.springboot
	spring-boot-starter-dubbo
	1.0.0
		 

	org.apache.zookeeper
	zookeeper
	3.4.6			 


	com.github.sgroschupf
	zkclient
	0.1


application.properties 配置:

#为了防止Tomcat端口冲突
server.port=8081
#提供者名字,任意取名
spring.dubbo.application.name=ppp-provider
#2181默认的zookeeper入口
spring.dubbo.registry.address=zookeeper://172.17.1.30:2181
spring.dubbo.protocol.name=dubbo
#提供者提供的端口,任意取
spring.dubbo.protocol.port=9999
#提供者提供的接口
spring.dubbo.scan=com.example.service

提供接口的实现类

@Service
public class StudentServiceImpl implements IStudentService {

	@Override
	public List getList() {
		List list = new ArrayList();
		list.add(new Student(1,"张三",11));
		list.add(new Student(2,"李四",22));
		list.add(new Student(3,"王五",33));
		return list;
	}

	@Override
	public Student getStudentById(Integer id) {
		
		return null;
	}

SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第4张图片然后在SpringBoot启动入口启动程序,出现红色框里的内容证明服务端启动成功:
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第5张图片

客户端(消费者)

创建一个名为demo_consumer的SpringBoot项目
需要引入的依赖


		
			io.dubbo.springboot
			spring-boot-starter-dubbo
			1.0.0
		
		
			org.apache.zookeeper
			zookeeper
			3.4.6
			pom
		
		
			com.github.sgroschupf
			zkclient
			0.1
		
		
			com.alibaba
			dubbo
			2.6.0
			
			
				
					org.springframework
					spring
				
			
		

在这里需要创建一个跟提供者路径相同、类名相同、方法名和返回值相同的接口,有涉及到提供者实体类的话,消费者必须也创建一个跟提供者实体类路径和对象一样的实体类。
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第6张图片

SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第7张图片
然后消费者application.properties

server.port=8082
spring.dubbo.application.name=c-consumer
spring.dubbo.registry.address=zookeeper://172.17.1.30:2181
spring.dubbo.scan=com.example.service

使用@Reference注解注入远程服务,使自己的服务层使用远程服务对象调用所需要的方法

package com.qhr.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.entity.Student;
import com.example.service.IStudentService;

@Service
public class StudentServiceImpl {
	//注入分布式的远程服务的对象
	@Reference
	IStudentService service;
	
	public List list(){
		return service.getList();
	}
}

控制层按平常调用自己的service层返回数据到页面

package com.qhr.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.entity.Student;
import com.qhr.service.StudentServiceImpl;

@RestController
public class StudentController {
	
	@Autowired
	StudentServiceImpl service;
	@RequestMapping("/studentList")
	public List list(){
		return service.list();
	}
}

消费者启动入口:

package com.qhr;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;

//把远程服务给扫描进来
@DubboComponentScan(basePackages="com.example.service")
@SpringBootApplication
//SpringMVC注解,直接返回给页面一个json数据
@RestController
public class DemoConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoConsumerApplication.class, args);
	}
	@RequestMapping("/")
	public String index(){
		return "客户端大爷你好。。。";
	}
}

浏览器访问消费者URL
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第8张图片
出现了远程服务实现类的数据证明消费者已经调用远程服务成功!

进入一个dubbo提供的war文件web程序可以看到我们创建提供者和消费者

资源war文件:https://pan.baidu.com/s/1OvgfUbYICUvBufggyQgzRg 提取码:z2c3

下载完放在Tomcat的webapps路径下即可,然后进入bin目录打开startup.bat文件启动Tomcat服务

启动完后Tomcat将多出一个dubboadmin文件

复制文件名通过访问localhost:8080/dubboadmin

访问时登录用户名:root 密码:root
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第9张图片

确认身份后将进入此页面,然后点击进去即可看到编写提供者和消费者
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第10张图片
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第11张图片
SpringBoot+分布式Dubbo-zookeeper(基于注解)微服务框架简单例子_第12张图片

SpringBoot和Dubbo-zookeeper(基于注解)微服务框架简单例子就简单做完了 。。。。

你可能感兴趣的:(Dubbo-zookeeper)