springcloud --consul

Spring Cloud 支持的服务发现软件以及特性对比

FeatureeuerkaConsulzookeeperetcd
服务健康检查 可配支持 服务状态,内存,硬盘等 (弱)长连接,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上

 

posted @ 2020-07-07 14:40  AlexZS  Views(155)  Comments(0Edit  收藏  举报