五分钟了解Consul
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也要做成集群,为了高可用
更多架构方面分享,可以关注我的公众号
最新文章
- ajax请求和aspx返回数据
- 轻量级OLAP(一):Cube计算
- Filp Game
- Android使用JNI实现Java与C之间传递数据(转)
- 公网访问COSBench controller页面实现方法
- ubuntu14.04安装wine以及国际版QQ
- cf E. George and Cards
- ASP.NET生成压缩文件(rar打包)
- 实践Scrum
- pureMVC java版搭建流程
- CI框架学习——基本的用法(一)
- DirBuster工具扫描敏感文件
- Avalon MM 总线
- linux 基础 用户操作
- LiveCharts文档-4基本绘图-1基本线条图
- js获取当前时间戳的三个方法
- MySQL crash-safe replication(3): MySQL的Crash Safe和Binlog的关系
- Android 面试知识集1
- MVVM模式的模式简介
- 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现