Springcloud_H版-alibaba学习笔记(八) 服务注册中心-Consul

Consul是一个一站式服务网格解决方案,提供服务发现、健康检查、Key/Value存储等功能。通过在服务提供者和消费者工程中集成SpringCloudConsul,实现了基于Consul的微服务注册与发现,以及通过RESTfulAPI进行服务调用。服务消费者通过RestTemplate从服务提供者获取信息,验证了系统的正确性。

八、服务注册中心-Consul

1.Consul简介

Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。

与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具。Consul 本身使用 go 语言开发,具有跨平台、运行高效等特点,也非常方便和 Docker 配合使用。

2.能干嘛

服务发现: 提供HTTP/DNS两种发现方式
健康检测: 支持多种方式,HTTP、TCP、Docker、shell脚本定制化
KV存储: Key、Value的存储方式
多数据中心: Consul支持多数据中心
可视化界面

3.下载地址

https://www.consul.io/downloads.html

4.文档

https://www.springcloud.cc/spring-cloud-consul.html

5.使用开发模式启动

consul agent -dev

6.访问可视化页面

通过以下地址可以访问Consul的首页: http://localhost:8500

7.服务提供者构建

1.创建工程cloud-provider-payment8006-consul

2.改pom

<dependencies>  
    <!--集成Consul-->  
    <dependency>  
        <groupId>org.springframework.cloud</groupId>  
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>  
    </dependency>  
    <!--引入自定义的cloud-api-common包,可以使用其中的实体-->  
    <dependency>  
        <groupId>com.dt.springcloud</groupId>  
        <artifactId>cloud-api-common</artifactId>  
        <version>1.0.0-SNAPSHOT</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-actuator</artifactId>  
    </dependency>  
    <!--热部署用到 -->  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-devtools</artifactId>  
        <scope>runtime</scope>  
        <optional>true</optional>  
    </dependency>  
    <!-- 省去Get/Set方法 -->  
    <dependency>  
        <groupId>org.projectlombok</groupId>  
        <artifactId>lombok</artifactId>  
        <optional>true</optional>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-test</artifactId>  
        <scope>test</scope>  
    </dependency>  
</dependencies>

3.建yml

server:  
  port: 8006  
  
spring:  
  application:  
    name: cloud-provider-payment8006-consul
  
  cloud:  
    consul:  
      host: 127.0.0.1  
      port: 8500  
      discovery:  
        service-name: ${spring.application.name} #默认就是服务名

4.启动类

同上述模块

5.业务类

同上述模块

6.访问页面测试

http://localhost:8500/ui/dc1/services
在这里插入图片描述

8.服务消费者构建

1.新建工程cloud-consumer-order80-consul

2.改pom

同cloud-provider-payment8006-consul

3.建YML

server:  
  port: 80  
  
spring:  
  application:  
    name: cloud-consumer-order80-consul  
  
  cloud:  
    consul:  
      host: 127.0.0.1  
      port: 8500  
      discovery:  
        service-name: ${spring.application.name} #默认就是服务名

4.主启动类

5.配置Bean

6.业务类

package com.dt.springcloud.controller;  
  
import lombok.extern.slf4j.Slf4j;  
import org.springframework.beans.factory.annotation.Value;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  
import org.springframework.web.client.RestTemplate;  
  
import javax.annotation.Resource;  
  
@RestController  
@Slf4j  
public class OrderController {  
    @Value("${server.port}")  
    private String serverPort;  
    public static final String PAYMENT_URL = "http://cloud-provider-payment8006-consul";//Consul中注册的服务名称  
  
    @Resource  
    private RestTemplate restTemplate;  
  
    @RequestMapping("/consumer/consul/payment")  
    public String paymentInfo() {  
        String result = this.restTemplate.getForObject(PAYMENT_URL + "/consul/payment", String.class);  
        return result;  
    }  
}

7.验证测试

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值