springcloud——consul服务注册中心的介绍安装与使用(代码片段)

*^O^*—*^O^* *^O^*—*^O^*     2022-11-22     333

关键词:

Consul介绍

用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架,分布一致性协议实现,健康检查,Key/Value存储,多数据中心方案,不再需要依赖其它工具,使用起来比较简单

Consul 特性

Raft 算法
服务发现
健康检查
key/Value 存储
多数据中心
支持http和dns 协议接口
官方提供web管理界面

Consul角色

client:客户端,无状态,将HTTP和DNS接口请求转发给局域网内的服务端集群。
server:服务端,保存配置信息,高可用集群,每个数据中心的server数量推荐3个或者5个

Consul 工作原理

Consul 安装

先去到官网下载
https://www.consul.io/
我下载的是Windows下的64文件,完了之后解压缩,在同级目录下打开cmd窗口,输入consul agent -dev -client=0.0.0.0
如下图所示就跑起来了

在浏览器输入http://localhost:8500/
就会进入这样的界面

Consul 入门案例

service-provider
build.gradle.kts

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins 
    id("org.springframework.boot") version "2.3.7.RELEASE"
    id("io.spring.dependency-management") version "1.0.10.RELEASE"
    kotlin("jvm") version "1.3.72"
    kotlin("plugin.spring") version "1.3.72"


group = "com"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories 
    mavenCentral()


dependencies 
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test") 
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    
    // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
    implementation("org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR12")
    // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery
    implementation("org.springframework.cloud:spring-cloud-starter-consul-discovery:2.2.8.RELEASE")
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator
    implementation("org.springframework.boot:spring-boot-starter-actuator:2.6.6")



tasks.withType<Test> 
    useJUnitPlatform()


tasks.withType<KotlinCompile> 
    kotlinOptions 
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "1.8"
    

appliaction.yml

server:
  port: 7070

spring:
  application:
    name: service-provider

  cloud:
    consul:
      # 注册中心地址
      host: localhost
      port: 8500
      # 服务提供者信息
      discovery:
        register: true      #是否注册
        instance-id: $spring.application.name-01   #注册实例id(必须唯一)
        service-name: $spring.application.name     #服务名称
        port: $server.port            #服务端口
        prefer-ip-address: true         #是否使用ip 地址注册
        ip-address: $spring.cloud.client.ip-address      # 服务请求IP
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/product")
class TestController 

    @GetMapping("/test")
    fun getTest():String
        return "hello"
    

service-consumer
两个的依赖文件一样

appliaction.yml 因为使用的单节点的dev模式,consumer就不进行注册

server:
  port: 9091

spring:
  application:
    name: service-consumer

  cloud:
    consul:
      # 注册中心地址
      host: localhost
      port: 8500
      # 服务提供者信息
      discovery:
        register: false      #是否注册
        instance-id: $spring.application.name-01   #注册实例id(必须唯一)
        service-name: $spring.application.name     #服务名称
        port: $server.port            #服务端口
        prefer-ip-address: true         #是否使用ip 地址注册
        ip-address: $spring.cloud.client.ip-address      # 服务请求IP

RestTemplate的配置注入

import org.springframework.cloud.client.loadbalancer.LoadBalanced
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.client.RestTemplate

@Configuration
class RestTemplateConfig 
    @Bean
    @LoadBalanced //负载均衡注解
    fun restTemplate(): RestTemplate 
        return RestTemplate()
    

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.core.ParameterizedTypeReference
import org.springframework.http.HttpMethod
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.client.RestTemplate

@RestController
@RequestMapping("/consumer")
class TestController 

    @Autowired
    lateinit var restTemplate: RestTemplate

    @GetMapping
    fun test(id:String):String
        return "$selectProductListByLoadBalancerAnnotation()  id$id"
    
    fun selectProductListByLoadBalancerAnnotation(): String? 
        class ListOfPeople : ParameterizedTypeReference<String>()
        var respeonse: ResponseEntity<String> = restTemplate.exchange(
                "http://service-provider/product/test",
                HttpMethod.GET,
                null,
                ListOfPeople()
        )
        return respeonse.body
    

Consul 集群

启动三个Linux服务器作为服务端,需要下载文件,并进行解压

每个节点的启动命令

客户端的启动命令

关联集群,将所有的附属节点关联到主节点上,在附属节点执行如下命令

服务只需要通过client注册进去,所以需要配的地址是client的地址
host: localhost
port: 8500

springcloud——consul服务注册中心的介绍安装与使用(代码片段)

Consul介绍用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架,分布一致性协议实现,健康检查,Key/Value存储,多数据中心方案,不再需要依赖其它工具,使用起来比较简单Consul特性Raft... 查看详情

springcloud笔记eureka服务注册中心zookeeper服务注册中心consul服务注册中心案例详解(代码片段)

一、简介技术版本SpringCloud版本Hoxton.SR1SpringBoot版本2.2.2RELEASECloudAlibaba版本2.1.0.RELEASE官方地址git地址:https://github.com/spring-projects/spring-boot/releases/SpringBoot官网:https://spring.io/projects/spring-bootgit地址:https://github.com/spring-projects/spring-cloud... 查看详情

springcloud服务注册之consul的简介和原理

Consul何为Consul?Consul是由HashiCorp公司推出的开源软件,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检... 查看详情

springcloud学习笔记总结(代码片段)

文章目录1.zookeeper之支付服务注册(服务提供者注册)2.zookeeper之临时节点和持久节点3.zookeeper之服务消费者注册4.Consul之简介5.Consul之安装运行Consul6.Consul之服务提供者注册进consul7.Consul之服务消费者注册进Consul8.三个注册中心的异同... 查看详情

使用consul作为istio的注册中心

...dpoint对应于服务、实例。针对一些还未接入到服务网格的SpringCloud服务,其使用的注册中心可能是consul,如何让服务网格上的consumer服务能访问到非服务网格的Provider,是应用在服务网格迁移过程中所面临的问题。istio本身提供了... 查看详情

史上最简单的springcloud教程|第十四篇:服务注册(consul)

这篇文章主要介绍springcloudconsul组件,它是一个提供服务发现和配置的工具。consul具有分布式、高可用、高扩展性。consul具有以下性质:服务发现:consul通过http方式注册服务,并且服务与服务之间相互感应。服务健康监测key/value... 查看详情

springcloud整合consul(代码片段)

Springcloud整合ConsulConsul是什么Consul能干嘛Consul操作指南Consul官网下载Consul运行服务提供者注册进Consul服务消费者注册进ConsulConsul是什么Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发.提供了微... 查看详情

springcloud——consul服务注册中心的介绍安装与使用(代码片段)

Consul介绍用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架,分布一致性协议实现,健康检查,Key/Value存储,多数据中心方案,不再需要依赖其它工具,使用起来比较简单Consul特性Raft... 查看详情

springcloud框架之zookeeperconsul服务注册与发现(代码片段)

本笔记内容为尚硅谷SpringCloud框架开发Zookeeper、Consul部分目录SpringCloud整合Zookeeper一、注册中心Zookeeper二、服务提供者1、新建Module2、POM3、YML4、主启动类5、Controller6、启动8004注册进zookeeper三、服务消费者1、新建Module2、POM3、YML4... 查看详情

springcloud-2.0(7.服务注册发现-consul)(代码片段)

上一篇:6.服务注册发现-ZooKeeper下一篇:8.负载均衡-Ribbon文章目录1.简介1.1什么是[Consul](https://so.csdn.net/so/search?q=Consul&spm=1001.2101.3001.7020)1.2作用1.3下载地址1.4中文文档1.5启动Consul2.服务提供者Provider3.服务消费者Con... 查看详情

2.springcloud--服务注册中心eurekazookeeperconsulnacos(代码片段)

2.SpringCloud--服务注册中心Eureka、Zookeeper、Consul、Nacos一、从零开始搭建、优化微服务1.1项目说明1.2基本项目创建(1)项目简介(2)采用maven聚合SpringBoot子模块的方式创建项目1.3使用RestTemplate进行远程调用(1&#x... 查看详情

springcloud-consul

 最近在使用springcloud搭建公司云平台,首先确定了服务注册中心为consul,至于像eureka,nacos这些也都可以,咱们今天要说的consul,consul环境搭建今天这里不讲述。有兴趣自行尝试。这里假定已有基本consul服务,如何使用springcloud-co... 查看详情

consule作为注册中心配置实例

...<<<Nacos的服务手动注册与发现<<<Nacos整合到SpringCloud中<<<Eureca作为注册中心配置实例<<<Eureka的自我保护机制<<<Zookeeper作为注册中心配置实例<<<@EnableDiscoveryClient与@EnableEurekaClient区别<<<N... 查看详情

服务注册发现配置中心集一体的springcloudconsul

前面讲了Eureka和SpringCloudConfig,今天介绍一个全能选手「Consul」。它是HashiCorp公司推出,用于提供服务发现和服务配置的工具。用go语言开发,具有很好的可移植性。被SpringCloud纳入其中,Eureka停止新版本开发,更多的想让开发者... 查看详情

springcloud第二季之zookeeper,consul和ribbon等学习笔记(代码片段)

目录 28.支付服务注册进zookeeper29.临时还是持久节点30.订单服务注册进zookeeper31.Consul简介32.安装并运行Consul33.服务提供者注册进Consul34.服务消费者注册进Consul35.三个注册中心异同点36.Ribbon入门介绍37.Ribbon的负载均衡和Rest调用38.Rib... 查看详情

springcloud整合grpc-注册中心(eureka/consul)

参考技术A    SpringCloud分布式微服务应用,通常在微服务之间采用的Feign进行通信,实现简单快捷的调用,底层采用的HTTP形式;相对于gRPC或RPC协议调用来说,性能相对低下,因此我们可以采用开源技术框架gRPC来实... 查看详情

istio控制面对接consul注册中心(代码片段)

...逐渐由传统的侵入式微服务解决方案(典型的技术方案为SpringCloud)转变为ServiceMesh微服务解决方案。作为ServiceMesh领域的热门开源项目,Istio为微服务提供无侵入的流量管理、安全通信、服务可见性等服务治 查看详情

springcloud(13)——服务注册与发现工具consul(代码片段)

服务注册与发现工具-ConsulSpringCloud也可以使用Consul作为服务注册与发现工具。Consul和Eureka一样,也有服务端和客户端的概念,它们都需要基于ConsulAgent运行,即Agent有Server模式和Client模式,开发环境可以直接通过consulagent-dev启动... 查看详情