SpringBoot版本:2.0.3 SpringCloud版本:Finchley.SR2
自行百度!
1、解压完后可看到只有一个consul.exe执行程序
2、在存放consul的盘符地址那里输入cmd回车
3、之后会进入本路径下命令窗口,输入consul.exe agent -dev启动consul
-dev:启动为开发环境
4、在浏览器输入localhost:8500/进入consul管理界面
至此consul服务器启动成功! 我们开始代码编写~
引入所需依赖
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR2
pom
import
spring-milestones
Spring Milestones
https://repo.spring.io/libs-milestone
false
编辑bootstrap.yml文件
server:
port: 6001
spring:
application:
name: consul-provider #指定服务名称
cloud:
host: localhost #consul地址
port: 8500 #端口号,默认为8500
discovery:
serviceName: provider-6001 #指定服务实例名称
创建启动类
@SpringBootApplication
@EnableDiscoveryClient //Consul注册注解
public class Provider_6001 {
public static void main(String[] args) {
SpringApplication.run(Provider_6001.class, args);
}
}
新建controller
@RestController
public class PortController {
@RequestMapping("/getPort")
public String port() {
return "我是:provider-6001";
}
}
运行Provider_6001,启动成功后刷新consul界面
可以看到我们刚刚的提供者已经成功注册
引入feign和ribbon依赖
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
org.springframework.cloud
spring-cloud-starter-openfeign
编辑bootstrap.yml文件
server:
port: 7000
spring:
application:
name: consul-consumer
cloud:
host: localhost
port: 8500
discovery:
serviceName: consumer-7000
创建启动类
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class Consumer_7000 {
public static void main(String[] args) {
SpringApplication.run(Consumer_7000.class, args);
}
}
编写FeignService接口
@FeignClient("consul-provider")
public interface FeignService {
@RequestMapping("/getPort")
public String getPort();
}
编写controller
@RestController
public class PortController {
@Autowired
private FeignService feignService;
@RequestMapping("/getPort")
public String port() {
return feignService.getPort();
}
}
浏览器调用消费者接口
输入localhost:7000/getPort后可以看到服务器返回数据成功,至此consul作为注册中心完成!
不再罗列具体代码,只需要复制provider_6001项目在把配置文件中的端口改为6000,controller里的6001换为6000即可!
启动provider_6000
可以看到consul-provider服务名称的Health Checks的值为4,点击consul-provider服务进入详细查看
可以看到我们刚刚启动的两个提供者服务都已经成功注册,至此集群搭建成功!
之后打开浏览器多次访问localhost:7000/getPort,会发现返回的数据中端口在变,这就实现了轮询效果!
1、同一个服务集群spring-application-name名字必须一致,serviceName必须不一致!!!
2、上述实现只是一个简单实现,还有很多consul配置如指定实例id,时间等等信息童鞋们都可以去 官方文档查看,这里就不举例了~~
3、童鞋们学会后可以试着搭建consul注册中心的高可用集群
4、consul除作为注册中心外还可以当作配置中心使用,consul界面中导航栏有一个Key/Value
这个功能就是配置中心要使用的,下次讲解consul作为配置中心哦~ 谢谢关注!!!