首先本地下载一个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,便有三个服务了。
访问第二个项目的接口方法,刷新会变端口号,负载均衡的轮询机制