一、下载zookeeper3.4
连接:[https://pan.baidu.com/s/1SaY54tOBj69RAZ-eASf4xw]
提取码:o4od
二、进入\zookeeper\conf目录下,将zoo_sample文件名称改为修改zoo,
三、修改zoo内容,修改内容以下html
# The number of milliseconds of each tick tickTime=5000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\install\\zookeeper-3.4.14\\data dataLogDir=D:\\install\\zookeeper-3.4.14\\log # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients # maxClientCnxns=60 # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # The number of snapshots to retain in dataDir # autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature # autopurge.purgeInterval=1
四、启动zookeeper(bin目录下点击zkServer的window版本文件),(port:2181是zookeeper的专用监听端口)java
一、下载dubbo-admin-2.6.0插件包
连接:https://pan.baidu.com/s/1aSJ6c_fNhVCU1iHJenS13w
提取码:jw8k
二、 j将包复制到另外一个tomcat的webapps下,启动tomcat(tomcat的bin目录下点击startup的window版本文件)
三、 http://localhost:8080/dubbo-admin-2.6.0访问,帐号密码都是root
四、由于尚未启动项目提供者服务,因此监控平台未暴露项目接口, 此图已启动服务提供者
mysql
建立服务提供者项目,模块名称springboot-dubbo(maven项目)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <properties> <dubbo-spring-boot>2.0.0</dubbo-spring-boot> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--dubbo-springBoot依赖 --> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- zookeeper --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>
server.port=8081 server.context-path=/provider #mybatis的xml文件映射路径 mybatis.mapper-locations=classpath*:mybatis #数据源datasources,结合本身mysql数据库 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url= spring.datasource.username= spring.datasource.password= #注册中心的协议和地址 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.server=true #通讯规则(通讯协议和接口) spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 #当前服务/应用名称 spring.dubbo.application.id=provider-id spring.dubbo.application.name=provider #扫描包 spring.dubbo.scan=com.li.dubbo.dubbo.bizc.impl
package com.li.dubbo.dubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; @SpringBootApplication @EnableDubboConfiguration public class DubboApplication { public static void main(String[] args) { try { SpringApplication.run(DubboApplication.class, args); Thread.sleep(1*1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.li.dubbo.dubbo.model; import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = 1L; private String name; private String addr; private String time; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } }
package com.li.dubbo.dubbo.bizc; import com.li.dubbo.dubbo.model.User; public interface IUserService { public User getUserMsg(String userName); }
package com.li.dubbo.dubbo.bizc.impl; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Service; import com.li.dubbo.dubbo.bizc.IUserService; import com.li.dubbo.dubbo.model.User; @Component @Service(version="2.0.0",interfaceClass = IUserService.class) public class UserServiceImpl implements IUserService{ private static Logger logger=Logger.getLogger(UserServiceImpl.class); @Override public User getUserMsg(String userName) { logger.info("----------进入生产者service getUserMsg方法----------userName:"+userName); User user=new User(); user.setName("provider"); user.setAddr("杭州余杭文一西路双龙街"); user.setTime("2019-06-25"); return user; } }
建立一个服务消费者maven项目
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--dubbo-springBoot依赖 --> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <!-- 引入服务端包 --> <dependency> <groupId>com.li.project</groupId> <artifactId>springboot-dubbo</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
server.port=8082 server.context-path=/consumer #mybatis映射文件路径 mybatis.mapper-locations=classpath*:mybatis #数据源datasource配置,结合本身mysql数据库 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url= spring.datasource.username= spring.datasource.password= #注册中心的协议和地址 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.server=true #通讯规则(通讯协议和接口) spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 #当前服务/应用名称 spring.dubbo.application.name=consumer #扫描包 spring.dubbo.scan=com.li.dubbo.consumer.biz.impl
package com.li.dubbo.consumer; import java.io.IOException; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; @SpringBootApplication @EnableDubboConfiguration public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); try { System.in.read(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.li.dubbo.consumer.biz; import com.li.dubbo.dubbo.model.User; public interface IUserConsumerService { /** * 获取生产者返回数据 * @param privateName * @return */ public User getPrivateMsg(String privateName); }
package com.li.dubbo.consumer.biz.impl; import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Reference; import com.li.dubbo.consumer.biz.IUserConsumerService; import com.li.dubbo.dubbo.bizc.IUserService; import com.li.dubbo.dubbo.model.User; @Component public class UserConsumerService implements IUserConsumerService{ @Reference(version="2.0.0") IUserService iUserService; public IUserService getiUserService() { return iUserService; } public void setiUserService(IUserService iUserService) { this.iUserService = iUserService; } @Override public User getPrivateMsg(String privateName) { // TODO Auto-generated method stub return iUserService.getUserMsg(privateName); } }
将IUserConsumerService接口注入controller层便可
@Autowired
private IUserConsumerService iUserConsumerService;web
package com.li.dubbo.consumer.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.li.dubbo.consumer.biz.IUserConsumerService; import com.li.dubbo.dubbo.model.User; @RestController @RequestMapping("/client") public class DubboTestController { @Autowired private IUserConsumerService iUserConsumerService; @RequestMapping("/f02") public User getServerResponseResult(){ return iUserConsumerService.getPrivateMsg("client"); } }