etcd作为最简单(轻量,精简)的kv服务。etcd可以应用很多方面,但是它有一个特点,etcd只是基础,需要你自己实现功能。它不像其其它组件开箱即用,也正是如此,它足够简单精巧。

回到主题,etcd里面并没有服务注册发现的功能,所以要自己开发。

推荐一篇介绍文章 https://blog.csdn.net/bbwangj/article/details/82584988

etcd的服务注册发现,主要就是用了etcd中KV存储接TTL

基本做法:存储Key(一般是系统唯一的)V(服务配置),存储时要设置一个TTL周期。

然后定时刷新该Key(etcd中是一个指令,发送租约的ID)。

etcd没有consul里面的功能,consul会主动调用服务接口查询,检测监控状态。

因此在etcd则采用上面租约的方式,类似心跳上报,超时就在etcd中取消了。

最后我封装了一个库etcd.Provider.Service。里面采用了上面的方式

一个服务存储

Key:/系统/Services/srvname/srvid

value:ServiceEntry实体的json序列化,包含了服务的信息

注意:srvid必须在你的服务中配置唯一,同时决定了整个key的唯一

gti地址:https://github.com/jinyuttt/etcd.Provider.Service.git

nuget:etcd.Provider.Service

最后提一句:etcd中订阅发布是利用watch功能;负载均衡就是利用租约存储功能;分布式通知与协调是利用watch功能;

分布式锁是利用lock功能;队列也是存储和watch功能。

etcd注册服务的更多相关文章

  1. 利用etcd实现服务注册和服务发现

    文章目录 服务注册 服务发现 协议编写 服务端实现 客户端实现 实验结果 参考文章 服务注册 主要逻辑在go func函数里面,先是去etcd获取一下服务,没有获取到的话就注册进去. package ...

  2. etcd实现服务发现

    前言 etcd环境安装与使用文章中介绍了etcd的安装及v3 API使用,本篇将介绍如何使用etcd实现服务发现功能. 服务发现介绍 服务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式 ...

  3. worker 启动时向 etcd 注册自己的信息,并设置一个带 TTL 的租约,每隔一段时间更新这个 TTL,如果该 worker 挂掉了,这个 TTL 就会 expire 并删除相应的 key。

    1.通过etcd中的选主机制,我们实现了服务的高可用.同时利用systemd对etcd本身进行了保活,只要etcd服务所在的机器没有宕机,进程就具备了容灾性. https://mp.weixin.qq ...

  4. etcd学习(3)-grpc使用etcd做服务发现

    grpc通过etcd实现服务发现 前言 服务注册 服务发现 负载均衡 集中式LB(Proxy Model) 进程内LB(Balancing-aware Client) 独立 LB 进程(Externa ...

  5. C#操作注册服务卸载服务启动服务停止服务.. .

    using Microsoft.Win32; using System; using System.Collections; using System.Collections.Generic; usi ...

  6. 一台服务器发布多个tomcat并注册服务名办法

    修改服务名称 打开Tomcat7.0.65_1/bin/service.bat  修改注册服务名称 当然这个名字自己改 比如Tomcat7_2 原始文件:   set SERVICE_NAME=Tom ...

  7. maven小项目注册服务(一)--email和persist模块

    跟着书里的讲解,跟着做了一遍该项目: 首先明白注册账户的需求: 账号的lD和Email地址都可以用来唯一地标识某个用户,而显示名称则用来显示在页面下,方便浏览.注册的时候用户还需要输入两次密码,以确保 ...

  8. mysql注册服务

    http://www.2cto.com/database/201301/185456.html ____________________________________________________ ...

  9. dubbo注册服务IP解析异常及IP解析源码分析

    在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...

随机推荐

  1. maven system path,加载本地jar

    当引用第三方包,且没有源代码时候,可以使用system path <dependency> <groupId>ctec</groupId> <artifact ...

  2. (ACM模板)队列queue

    #include<iostream> #include<cstdio> #include<queue> using namespace std; struct po ...

  3. (ACM模板)不定长数组vector

    #include<iostream> #include<cstdio> #include<vector> #include<algorithm> usi ...

  4. rabbitmq 从channal获得socket

    std::string queue_name = "hello100"; AmqpClient::Channel::ptr_t channel = AmqpClient::Chan ...

  5. Hibernate性能提升

    1.大数据量批量插入造成Exception in thread "main" java.lang.OutOfMemoryError 内存溢出异常 正常插入: session.sav ...

  6. Java数据类型转换题目

    题目一 public static void main(String[] args) { byte b1 = 1, b2 = 2, b3, b6, b8; final byte b4 = 4, b5 ...

  7. ServletContext对象初识

    什么是ServletContext? ServletContext代表一个web应用的环境(上下文)对象,ServletContext对象内部封装的是该web应用的信息.一个web应用只有一个Serv ...

  8. python爬虫:2.每天爬取数据量是多少?

    带宽 网站阈值 单机 分布式 几百万

  9. tmux使用——2019年11月20日16:40:15

    1.tmux 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令.用户与计算机的这种临时的交互,称为一次"会话& ...

  10. django 添加分页功能的包

    Django pagination based upon the core pagination module