首先本地下载一个zookeeper,https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
下载3.4的,3.5 的解压的时候回出现文件已存在的错误,解压完会多出来一个文件夹,然后启动的时候找不到jar包报错。
下载完解压,进入conf文件夹,把zoo_sample.cfg文件改名为zoo.cfg。然后改一下里面的dataDir=D:\zookeeper-3.4.14\data
临时文件存放位置,一个路径。进入bin文件夹,双击zkServer.cmd启动zookeeper服务。
下载zookeeper图形化客户端 ZooInspectorhttps://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解压后双击build文件夹中的那个jar包。点击左上角启动按钮连接zookeeper
新建一个maven项目,
pom文件
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <!-- <version>Finchley.RC2</version> --> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <!-- 与服务器安装的Zookeeper版本相同 --> <version>3.4.10</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>repository.springframework.maven.release</id> <name>Spring Framework Maven Release Repository</name> <url>http://maven.springframework.org/milestone/</url> </repository> <repository> <id>org.springframework</id> <url> http://maven.springframework.org/snapshot</url> </repository> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>http://repo.spring.io/libs-milestone</url> </repository> <repository> <id>spring-release</id> <name>Spring Maven RELEASE Repository</name> <url>http://repo.spring.io/libs-release</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
启动类
package com.vhukze.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController @EnableDiscoveryClient //如果服务使用consoul、zookeeper,便可以使用此注解开启服务 public class ZkMemberController { @Value("${server.port}") private String serverPort; @RequestMapping("getMember") public String getMember() { return "订单服务调用会员服务接口,端口号为:"+serverPort; } public static void main(String[] args) { SpringApplication.run(ZkMemberController.class, args); } }
配置文件
###订单服务的端口号
server:
port: 8002
###服务别名---服务注册到注册中心的名称
spring:
application:
name: zk-member
cloud:
zookeeper:
###注册到的zookeeper地址
connect-string: 127.0.0.1:2181
再新建一个maven项目
pom文件同上
启动类
package com.vhukze.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * Hello world! * */ @SpringBootApplication @EnableDiscoveryClient @RestController public class App { @Autowired private RestTemplate template; @RequestMapping("orderToMember") public String orderToMember() { String memberUrl = "http://zk-member/getMember"; return template.getForObject(memberUrl, String.class); } public static void main( String[] args ) { SpringApplication.run(App.class, args); } //默认rest方式开启负载均衡,如果以服务别名调用,必须注入此对象 @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } }
配置文件
###订单服务的端口号 server: port: 8004 ###服务别名---服务注册到注册中心的名称 spring: application: name: zk-order cloud: zookeeper: ###注册到的zookeeper地址 connect-string: 127.0.0.1:2181
启动第一个项目,然后改一个端口号再启动一遍,相当于一个集群,然后启动第二个项目。这时候
查看ZooInspector,便有三个服务了。
访问第二个项目的接口方法,刷新会变端口号,负载均衡的轮询机制