Service discovery and configuration made easy. Distributed, highly available, and datacenter-aware.

服务发现和配置,分布式,高可用性,数据中心。

  • 服务注册 - 服务端注册相应的的主机、端口号及其它身份验证信息,协议,版本号,以及运行环境等详细资料。

  • 服务发现 - 客户端应用通过向注册中心查询,获取可用服务列表,相应服务详细信息。

  • 基本服务格式:

     {
    "service":{
    "id": "myservice",
    "name": "myservice",
    "address": "servicehost",
    "port": serviceport,
    "tags": ["tag"],
    "checks": [
    {
    "http": "http://host.port/health",
    "interval": "5s"
    }
    ]
    }
    }
  • 健康检查(checks):
    script check:consul主动去检查服务的健康状况

     {
    "check": {
    "id": "scheck",
    "name": "scheck",
    "script": "/*.py", //必须
    "interval": "10s", //必须
    "timeout": "1s"
    }
    }

    ttl check:服务主动向consul报告自己的健康状况

     {
    "check": {
    "id": "scheck",
    "name": "scheck",
    "notes": "scheck",
    "ttl": "30s"
    }
    }

    http check:

     {
    "check": {
    "id": "scheck",
    "name": "scheck",
    "http": "http://host:port/health",
    "interval": "10s",
    "timeout": "1s"
    }
    }

    tcp check:

     {
    "check": {
    "id": "scheck",
    "name": "scheck",
    "tcp": "host:22",
    "interval": "10s",
    "timeout": "1s"
    }
    }
  • 服务注册:

    • 配置文件静态注册:/etc/consul.d/myserver.json,

      添加如上服务配置,重启consul,并将配置文件的路径给consul(指定参数:-config-dir /etc/consul.d)

    • HTTP API接口来动态注册:/v1/agent/service/register http put方法注册。

      curl -X PUT -d '{"id": "myserver","name": "myserver","address": "serverhost","port": serverport,"tags": ["tag"],"checks": [{"http": "http://healthhost:port/health","interval": "5s"}]}' http://host:8500/v1/agent/service/register

  • maven dependency:

     <dependency>
    <groupId>com.orbitz.consul</groupId>
    <artifactId>consul-client</artifactId>
    <version>xxx</version>
    </dependency>
     <dependency>
    <groupId>com.ecwid.consul</groupId>
    <artifactId>consul-api</artifactId>
    <version>xxx</version>
    </dependency>

项目地址:https://github.com/windwant/windwant-service/tree/master/consul-service

Consul 服务发现和配置的更多相关文章

  1. consul服务发现和配置共享的软件,

    Consul 是什么 consul是一个支持多数据中心分布式高可用服务发现和配置共享的服务软件,由HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2. ...

  2. Consul 服务发现与配置

    Consule 是什么 Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性: 服务发现 Consul 的客户端可用提供一个服务,比如 api 或 ...

  3. Redola.Rpc 集成 Consul 服务发现

    Redola.Rpc 解决了什么问题? Redola.Rpc 是一个使用 C# 开发的 RPC 框架,代码开源在 GitHub 上.目前版本仅支持 .NET Framework 4.6 以上版本,未来 ...

  4. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  5. .NET Core微服务实施之Consul服务发现与治理

    .NET Core微服务实施之Consul服务发现与治理   Consul官网:https://www.consul.io Consul下载地址:https://www.consul.io/downl ...

  6. .NetCore Cap 注册 Consul 服务发现

    注册服务发现 需要使用Cap中的UseDiscovery方法 具体用法如下 var capConsulConfig = Configuration.GetSection("CapConsul ...

  7. 基于Docker的Consul服务发现集群搭建

    在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架 ...

  8. 扩展gRPC支持consul服务发现和Polly策略

    gRPC由于需要用工具生成代码实现,可开发性不是很高,在扩展这方面不是很友好 最近研究了下,进行了扩展,不需要额外的工具生成,直接使用默认Grpc.Tools生成的代理类即可 相关源码在文章底部 客户 ...

  9. 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片

    目录 第一部分:Consul 基础 1,Consul 介绍 2,安装 Consul Ubuntu/Debian 系统 Centos/RHEL 系统 检查安装 3,运行 Consul Agent 启动 ...

随机推荐

  1. 不可或缺 Windows Native 系列文章索引

    [源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...

  2. 去除utf8文件的bom标记

    http://stackoverflow.com/questions/1068650/using-awk-to-remove-the-byte-order-mark http://thegreyblo ...

  3. redis-desktop-manager

    介绍一款Redis图形管理工具:redis-desktop-manager 下载地址:点击打开链接 我们打开redis-cl.exe 客户端,在里面添加了key= name ,value=heyang ...

  4. 点我吧工作总结(技术篇) Velocity

    1. 什么是velocity Velocity[vəˈlɑ:səti],名称字面翻译为:速度.速率.迅速.该项目的开源地址:http://velocity.apache.org/,它是一个基于Java ...

  5. 烦人的win10的输入法

    这段时间在使用win10,被win10的输入法折腾的要死要死的... 通过度娘把它设置得跟win7使用习惯差不多了, (见:http://jingyan.baidu.com/article/b2c18 ...

  6. 跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布

    Log-Cutter 是JessMA开源组织开发的一个简单实用的日志切割清理工具.对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方 ...

  7. GJM :Sql 各种语句 以及函数 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...

  8. [AngularJS] 使用AngularAMD动态加载Service

    [AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...

  9. Photoshop如何实现UI自动切图?

    切图严格来说并不是UI设计师的工作, 而是前端工程师的工作,指的是将UI设计师的设计(大部分为photoshop创建的PSD文件)转化为界面(网页或窗体等)所需要资源的过程.切图是衔接UI设计和应用程 ...

  10. JavaScript学习笔记-实现枚举类型,扑克牌应用

    //实现枚举类型,扑克牌应用 function creatEnum(p){     //构造函数     var Enumeration = function(){throw 'can not Ins ...