学习记录-consul

    技术2022-07-13  74

    学习记录–Consul

    参考链接:https://www.imooc.com/article/296209/

    1.什么是consulconsul

    提供一套分布式服务发现和配置管理系统,是XX公司使用GO语言开发提供了微服务系统中的服务治理,配置中心,控制总线等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用构建去全方位的服务网络,总之consul提供了一种完整的服务网络解决方法

    2 consul可以干什么?

    服务发现 健康检查 K-V键值对的存储 安全加固 多数据中心

    3 consul的安装与运行

    1)官网上下载consul,下载后是一个conul.exe文件 2)打开当前目录的cmd窗口 3)查看版本

    consul --version 启动运行 consul agent -dev

    5)访问http://localhost:8500 成功的页面

    服务提供者注册到consul

    1)建一个springBoot项目 2)导入依赖 3)配置yml

    server: port: 8006 spring: application: name: consul-provider-payment #consule注册中心地址 cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}

    4)主启动类上加上@EnableDiscoveryClient注解 5)在controller层写一个测试方法

    package com.zpark.consul.controller; @RestController public class PaymentController { @Value("${server.port}") private String serverPort; @RequestMapping("/payment/consul") public String paymentConsul(){ return "springCloud with consul:"+serverPort+"\t"+ UUID.randomUUID().toString(); } }

    6)启动程序 访问http://localhost:8500 就可以看到刚刚的服务注册到consul 成功的图: 7)测试controller里面的方法是否可以访问:

    服务消费者注册到consul

    1)建一个springBoot项目cloud-consul-consumer-order 2)导入依赖 3)配置yml

    server: port: 80 spring: application: name: cloud-consumer-order #consul注册中心地址 cloud: consul: discovery: service-name: ${spring.application.name} host: localhost port: 8500

    4)主启动类上加上@EnableDiscoveryClient注解 5)配置RestTemplate建一个配置类ApplicationContextConfig

    package com.zpark.consul.config; Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }

    6)controller层写方法调用其他的服务(上面的那个服务)

    package com.zpark.consul.controller; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @RestController public class OrderConsulController { public static final String INCOKE_URL="http://consul-provider-payment"; // public static final String INCOKE_URL="http://localhost:8006"; //http://localhost:8006/payment/consul @Resource private RestTemplate restTemplate; @GetMapping("consumer/payment/consul") public String paymentInfo(){ String result=restTemplate.getForObject(INCOKE_URL+"/payment/consul",String.class); System.out.println(result); if(StringUtils.isEmpty(result)){ return "hello"; } return result; } }

    不理解的点是请求的地址,通过服务名称就可以知道它的ip,port了吗? 7)启动程序进行测试访问: http://localhost/consumer/payment/consul 因为是80端口,所以可省略端口

    Processed: 0.011, SQL: 9