springcloud(3)consul

consul也是一种注册中心,但它比较于其它的应用,界面显示更加清楚,CAP也是cp机制,对外暴露HTTP和dns接口同时集成了springcloud。

1.下载。

https://www.consul.io/downloads

官网自行选择对应版本。

2.安装运行。

本体下载之后只有一个exe文件,可以使用cmd打开当前文件夹输入指令启动。

consul --version查看对应版本  consul agent -dev 以开发者的模式启动。

 默认端口是8500访问的时候输入localhost:8500即可。

3.服务提供者

比较于之前的服务提供者,consul注册的服务提供者需要加入额外对应的pom文件

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

yml文件中的注册地址也要做出相应的改变。

server:
  port: 8006
spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

剩下的就是controller进行一些测试,在consul的界面上可以看出活动。

4.消费者

pom导入consul依赖和上述一样。

yml格式也和上述差不多,需要改动端口和名称。

加入配置类文件appconfig

@Configuration
public class AppConfig {

    /**
     * 注入restTemplate,请用请求rest接口
     * @return
     */
    @Bean
    // 标注此注解后,RestTemplate就具有了客户端负载均衡能力
    // 负载均衡技术依赖于的是Ribbon组件~
    // RestTemplate都塞入一个loadBalancerInterceptor 让其具备有负载均衡的能力
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

负载均衡后续后提到。

controller文件示例

RestController
@Slf4j
public class ConsumerController {
    private static  final String INVOKE_URL = "http://consul-provider-payment";
    @Resource
    private RestTemplate restTemplate;
    @GetMapping(value = "/consumer/payment/consul")
    public String paymentInfo() {
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul",String.class);
        return result;
    }
}

在consul页面可以查看对应信息。

5.三种注册中心的差异性

 本篇所有代码均在GitHub:

原文地址:https://www.cnblogs.com/lin530/p/13891897.html