服务注册与发现用mysql_Consul服务注册与发现

Consul服务注册与发现

简介

Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。

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

它具有很多有点。包括:基于 raft 协议,比较简洁;支持健康检查,同时支持HTTP 和 DNS 协议,支持跨数据中心的WAN集群 提供图形界面,跨平台,支持 linux mac windows

主要特点

服务发现:Consul 的客户端可以注册服务,例如 api 或者 mysql ,其他客户端可以使用 Consul 来发现给定服务的提供者。使用DNS 或者 HTTP ,应用程序可以轻松找到他们依赖的服务

健康检查:领事客户端可以提供任意数量的运行状况检查,这些检查可以与给定服务(“ Web服务器是否返回200 OK”)或本地节点(“内存利用率低于90%”)相关。操作员可以使用此信息来监视群集的运行状况,服务发现组件可以使用此信息将流量从不正常的主机发送出去。

KV存储:应用程序可以将Consul的分层键/值存储用于多种目的,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。

安全的服务通信:领事可以为服务生成并分发TLS证书,以简历相互TLS连接。意图 可用于定义允许那些服务进行通信,可以使用可以实时更改的意图轻松管理服务分段,而不必使用复杂的网络拓扑和静态防火墙规则。

多数据中心:Consul开箱即用地支持多个数据中心。这意味着Consul的用户不必担心会构建其他抽象层以扩展到多个区域。

在docker上安装启动consul

#拉取consul镜像

docker pull consul

#启动consul

docker run -d -p 8500:8500/tcp --name myConsul consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0

访问 : http://http:// xx.xx.xx.xx/:8500 (linux的IP地址加上冒号8500, xx代表服务器ip地址)

e7cfdc030cd4

在这里插入图片描述

服务提供者

pom文件

org.springframework.cloud

spring-cloud-starter-consul-discovery

yml文件

server:

port: 8006

spring:

application:

name: consul-provider-payment

cloud:

consul:

host: 10.211.55.17 #用linux的ip地址(consul在本机就填localhost)

port: 8500

discovery:

service-name: ${spring.application.name}

springboot 启动类增加注解

@EnableDiscoveryClient //该注解用于向使用consul或者Zookeeper作为注册中心时注册服务

编写测试Controller

@RestController

@Slf4j

public class PaymentController {

@Value("${server.port}") //获取端口号

private String serverPort;

@RequestMapping("/payment/consul")

public String paymentConsul(){

return "springcloud with zookeeper:" + serverPort + "\t" + UUID.randomUUID().toString();

}

}

启动项目

e7cfdc030cd4

在这里插入图片描述

服务消费者

和消费者相同除了端口

控制层 RestTemplate 远程调用

@RestController

@Slf4j

public class OrderConsulController {

public static final String INVOKE_URL = "http://consul-provider-payment";

@Resource

private RestTemplate restTemplate;

@RequestMapping("/consumer/payment/consul")

public String paymentInfo(){

String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);

return result;

}

}

启动

e7cfdc030cd4

在这里插入图片描述

e7cfdc030cd4

在这里插入图片描述

e7cfdc030cd4

在这里插入图片描述

e7cfdc030cd4

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值