关于spring-cloud的研究(consul)

搭建consul的基本框架
一、下载consul
根据环境的需求,选择对应的程序,目前系统为win10 64位操作系统,下载了consul_1.6.1_windows_amd64.zip;

二、启动服务端
解压之后,获取绝对路径,并在cmd中输入“consul agent -dev”启动服务端;按实际路径即可
启动成功:在这里插入图片描述
三、编写服务提供
① 配置pom.xml

<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>
    <version>1.3.0.RELEASE</version>
</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>

这边需要注意的是,version版本需要注意,否则会导致health检查失败

<version>1.5.3.RELEASE</version>

② 配置文件设置

spring.application.name=spring-cloud-consul-producer
server.port=8501
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
#注册到consul的服务名称
spring.cloud.consul.discovery.serviceName=service-producer1

"spring.cloud.consul.port"为默认端口,如自定义,则根据实际情况修改
“service-producer”为注册到consul的服务名称,如多个服务提供一个功能,则保持一致

③ 设置注解

@SpringBootApplication
@EnableDiscoveryClient
public class ServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServerApplication.class, args);
	}

}

增加“@EnableDiscoveryClient”注解,以让服务端找到提供服务的程序

④ 提供功能
创建一个controller层,并提供接口方法

@RestController
public class TestController {

	@RequestMapping("/success")
	public String success() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return "success 1 : " + sdf.format(new Date());
	}
	
}

这样就可以了,启动程序之后,访问“localhost:8500”在这里插入图片描述
这里看到“service-producer1”服务有两个服务提供者,我本地同时启动了两个程序。

⑤ 创建消费者
pom文件的配置和上述一致,配置文件以下为准

spring.application.name=spring-cloud-consul-consumer
server.port=8506
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
#设置不需要注册到 consul 中
spring.cloud.consul.discovery.register=false

注:消费者是否需要注册到consul,看实际需求

@RequestMapping("/call")
    public String call() {
    	ServiceInstance serviceInstance = loadBalancer.choose("service-producer1");
        String callServiceResult = new RestTemplate().getForObject(serviceInstance.getUri().toString() + "/success", String.class);
        System.out.println(callServiceResult);
        return callServiceResult;

    }

固定写法,我就不多描述了,这样就能调取服务程序中的“success”方法,并获取返回值
在这里插入图片描述
基本结束了,如有问题,再继续修改。
同时尝试负载均衡的具体效果,发现程序停止后服务发现服务提供者掉线的时间有点长,这块可以研究下是否能够加快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值