SpringCloud整合Consul作为注册中心

SpringCloud整合Consul作为注册中心

SpringBoot版本:2.0.3    SpringCloud版本:Finchley.SR2

官网下载consul

自行百度!
1、解压完后可看到只有一个consul.exe执行程序
解压完后可看到只有一个consul.exe程序
2、在存放consul的盘符地址那里输入cmd回车
在这里插入图片描述
3、之后会进入本路径下命令窗口,输入consul.exe agent -dev启动consul
-dev:启动为开发环境
4、在浏览器输入localhost:8500/进入consul管理界面
在这里插入图片描述
至此consul服务器启动成功! 我们开始代码编写~

1、创建父项目(POM)

引入所需依赖

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-discovery</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/libs-milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

2、创建服务提供者Provider_6001

编辑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界面
在这里插入图片描述
可以看到我们刚刚的提供者已经成功注册

3、创建服务消费者Consumer_7000

引入feign和ribbon依赖

	<dependencies>
			<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
	</dependencies>

编辑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_6000搭建集群

不再罗列具体代码,只需要复制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作为配置中心哦~ 谢谢关注!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值