Hi,大家好,我叫consul,翻译成中文叫做“领事”,其实我更喜欢叫自己为中介,因为我觉得自己做的事情和房产中介非常像。比如说想要卖房的房东到我这边登记,我将房屋信息登录到我的表格中(服务注册),有买家来咨询时,我再查询表格将符合条件的房子返回给买家(服务发现),平时我也要做点房源的维护工作,比如每隔一天就打电话问下房东:“你的房子还卖么?(服务健康检查)”。

我的诞生也和现在互联网项目的开发模式有关,从之前的三层架构衍化成现在有微服务架构,把原来BLL和DAL层做事按业务拆成独立的分布式服务(其实很多人就是把CURD放到单独的服务中而已),为了高可用&高扩展,又把这些服务(进程)集群化,就出现一堆的地址和端口。客户端由原来的进程内调用变成跨进程或跨网络调用服务,把这些一堆地址和端口放到配置文件中。这样做其实没什么问题,但维护起来比较麻烦,比如说增加一个服务,就要修改配置文件并重启客户端,同理,删掉一个服务也要同样的操作。

我的作用主要是管理这些集群服务的配置,整体流程是这样子的:服务(进程)启动的时候把服务名和自己的IP、端口通过HTTP告诉我,我将这些信息记到自己的内存表格中,客户端调用时带上要查询的服务名通过HTTP发送给我,我再自己的内存表中找到叫这服务名的所有配置发送给客户端。

平时我还要做一些服务健康检查的事儿,在上面服务启动的时候,服务还要给我配置一个检查接口和检查频率等一些参数,我会按这些参数每隔一段时间,比如10秒钟去请求一下这个接口,如果不通,我就隔5秒再重试下,如果重试3次还不通,我就认定这个服务挂掉了,就从内存表格中删掉这个服务配置,不然客户端要请求到这个不通服务,我就罪过了。

说了这么多,还是看下我的整个流程图吧,一图胜千言:

最后,再用代码实现下吧,语言是C#,其实语言类似,反正都有现成的sdk。

2、注册几个服务

 

打开127.0.0.1:8500,服务注册成功

3、服务发现

总结:

你可以把Consul理解成DNS,Consul是用服务名去换取IP和端口,DNS是用域名去换取IP

Consul也要做成集群,为了高可用

更多架构方面分享,可以关注我的公众号

最新文章

  1. ajax请求和aspx返回数据
  2. 轻量级OLAP(一):Cube计算
  3. Filp Game
  4. Android使用JNI实现Java与C之间传递数据(转)
  5. 公网访问COSBench controller页面实现方法
  6. ubuntu14.04安装wine以及国际版QQ
  7. cf E. George and Cards
  8. ASP.NET生成压缩文件(rar打包)
  9. 实践Scrum
  10. pureMVC java版搭建流程
  11. CI框架学习——基本的用法(一)
  12. DirBuster工具扫描敏感文件
  13. Avalon MM 总线
  14. linux 基础 用户操作
  15. LiveCharts文档-4基本绘图-1基本线条图
  16. js获取当前时间戳的三个方法
  17. MySQL crash-safe replication(3): MySQL的Crash Safe和Binlog的关系
  18. Android 面试知识集1
  19. MVVM模式的模式简介
  20. 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现

热门文章

  1. Archives: 2013/6
  2. 用artifactory搭建maven2内部服务器
  3. php捕获致命错误
  4. java使用jackson生成和解析JSON
  5. javascript中this的四种用法
  6. Mac 下配置 adb 环境
  7. python常用魔术方法概览
  8. java内存区域----运行时数据区
  9. 网络地址转换NAT与端口地址转换PAT
  10. nginx 命令行参数 启动 重启 重载 停止