springcloud --consul
Posted CKben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud --consul相关的知识,希望对你有一定的参考价值。
Spring Cloud 支持的服务发现软件以及特性对比
Feature | euerka | Consul | zookeeper | etcd |
---|---|---|---|---|
服务健康检查 | 可配支持 | 服务状态,内存,硬盘等 | (弱)长连接,keepalive | 连接心跳 |
多数据中心 | — | 支持 | — | — |
kv 存储服务 | — | 支持 | 支持 | 支持 |
一致性 | — | raft | paxos | raft |
cap | ap | ca | cp | cp |
使用接口(多语言能力) | http(sidecar) | 支持 http 和 dns | 客户端 | http/grpc |
watch 支持 | 支持 long polling/大部分增量 | 全量/支持long polling | 支持 | 支持 long polling |
自身监控 | metrics | metrics | — | metrics |
安全 | — | acl /https | acl | https 支持(弱) |
spring cloud 集成 | 已支持 | 已支持 | 已支持 | 已支持 |
Consul是什么
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,
主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
Consul 的优势:
- 使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft。
- 支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟, 分片等情况等。 zookeeper 和 etcd 均不提供多数据中心功能的支持。
- 支持健康检查。 etcd 不提供此功能。
- 支持 http 和 dns 协议接口。 zookeeper 的集成较为复杂, etcd 只支持 http 协议。
- 官方提供 web 管理界面, etcd 无此功能。
- 综合比较, Consul 作为服务注册和配置管理的新星, 比较值得关注和研究。
安装Consul
下载地址:
https://www.consul.io/downloads
运行Agent
安装完成后找到路径
使用cmd打开黑窗口,使用agent 的开发模式启动
注意有一个是udp短连接,管理地址 选择是HTTP 127.0.0.1:8500
管理界面打开展示:
consul 放在项目中(单机版):
pom:
引入consul
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
健康检查依赖于此包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
yml
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/2pc?useSSL=false username: root password: 123 type: com.alibaba.druid.pool.DruidDataSource application: name: study-edu-order cloud: consul: host: localhost port: 8500 discovery: hostname: eureka9001.com service-name: consul-1 mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
启动类:
@SpringBootApplication public class OrderAppApplication { public static void main(String[] args) { SpringApplication.run(OrderAppApplication.class, args); } }
直接启动项目就会注册到consul上
以上是关于springcloud --consul的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud系列SpringCloud概述及微服务技术栈的使用