Consul服务注册与发现

目录

是什么?

能干啥?

Consul安装与配置

​编辑

创建consul支付模块

1.创建新module

2. pom依赖

3. 配置文件

4. 主启动类

5. controller

6. 启动服务 

 7. 查看状态

8. 调接口运行

创建consul订单模块

1. 创建订单module

2. pom 依赖

3. 配置文件

4. 主启动类

5. controller

 6. 启动服务

7. 查看状态

8. 调接口运行 


Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发

提供了微服务系统中的服务治理、配置中心、控制总线等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。

是什么?

官网

能干啥?

  • 基于Raft协议
  • 比较简洁:支持健康检查
  • 支持HTTP和DNS协议
  • 支持跨数据中心的WAN集群
  • 提供图形界面,跨平台
  • 支持Linux、Mac、Windows

Consul安装与配置

下载consul

输入consul --version 

consul agent -dev  启动命令

创建consul支付模块

1.创建新module

创建spring_cloud_consul_payment_8006 module

2. pom依赖

新增依赖

  <!--Springcloud consul-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
3. 配置文件
#Consul服务端口号
server:
  port: 8006
spring:
  application:
    name: cloud-provider-payment
    datasource:
      type: com.alibaba.druid.pool.DruidDataSource
  #consul注册中心地址
  cloud:
    consul:
      host: 127.0.0.1
      #      host: 47.105.184.98
      port: 8500
      discovery:
        service-name: ${spring.application.name} ###对外暴露的服务名称
4. 主启动类
package com.tudeen.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
/**
 * 是因为springboot启动时会自动注入数据源和配置jpa
 * @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
 */
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8006.class,args);
    }
}

@EnableDiscoveryClient注解是基于spring-cloud-commons依赖,并且在classpath中实现;
@EnableEurekaClient注解是基于spring-cloud-netflix依赖,只能为eureka作用 

5. controller
package com.tudeen.learn.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/consul")
    public String getConsul(){
        return "springcloud with consul: port: "+serverPort+","+ UUID.randomUUID().toString();
    }
}
6. 启动服务 

 7. 查看状态

consul有页面化,可以在页面中直接看到当前cloud_procider_payment已经加入到consul 

8. 调接口运行

http://127.0.0.1:8006/payment/consul

同理创建新的spring_cloud-consul-order-80模块

创建consul订单模块

1. 创建订单module

创建 spring_cloud-consul-order-80模块

2. pom 依赖

与 支付保存一致

   <!--Springcloud consul-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
3. 配置文件
server:
  port: 80
spring:
  application:
    name: cloud-order-service
    datasource:
      type: com.alibaba.druid.pool.DruidDataSource
  #consul注册中心地址
  cloud:
    consul:
      #      host: 47.105.184.98
      host: 127.0.0.1
      port: 8500
      discovery:
        service-name: ${spring.application.name}
4. 主启动类
package com.tudeen.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsul80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderConsul80.class, args);
    }
}
5. controller
package com.tudeen.learn.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@Slf4j
@RestController
public class OrderConsul80Controller {

    @Resource
    private RestTemplate restTemplate;

    private  static final  String INVOKE_URL="http://cloud-provider-payment";
    @GetMapping("/payment/consul")
    public String getConsul(){
        return restTemplate.getForObject(INVOKE_URL+"/payment/consul",String.class);
    }
}

 6. 启动服务

7. 查看状态

8. 调接口运行 

http://127.0.0.1/payment/consul

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值