Consul的特点服务发现(Service Discovery)
Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务 。一些外部的服务通过Consul很容易的找到它所依赖的服务 。
健康检查(Health Checking)
Consul的Client可以提供任意数量的健康检查,既可以与给定的服务相关联(“webserver是否返回200 OK”),也可以与本地节点相关联(“内存利用率是否低于90%”) 。操作员可以使用这些信息来监视集群的健康状况,服务发现组件可以使用这些信息将流量从不健康的主机路由出去 。
Key/Value存储
应用程序可以根据自己的需要使用Consul提供的Key/Value存储 。Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能 。
安全服务通信
Consul可以为服务生成和分发TLS证书,以建立相互的TLS连接 。意图可用于定义允许哪些服务通信 。服务分割可以很容易地进行管理,其目的是可以实时更改的,而不是使用复杂的网络拓扑和静态防火墙规则 。
多数据中心
Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域 。

文章插图
Consul支持多数据中心,在上图中有两个DataCenter,他们通过Internet互联,同时请注意为了提高通信效率,只有Server节点才加入跨数据中心的通信 。
在单个数据中心中,Consul分为Client和Server两种节点(所有的节点也被称为Agent),Server节点保存数据,Client负责健康检查及转发数据请求到Server;Server节点有一个Leader和多个Follower,Leader节点会将数据同步到Follower,Server的数量推荐是3个或者5个,在Leader挂掉的时候会启动选举机制产生一个新的Leader 。
集群内的Consul节点通过gossip协议(流言协议)维护成员关系,也就是说某个节点了解集群内现在还有哪些节点,这些节点是Client还是Server 。单个数据中心的流言协议同时使用TCP和UDP通信,并且都使用8301端口 。跨数据中心的流言协议也同时使用TCP和UDP通信,端口使用8302 。
集群内数据的读写请求既可以直接发到Server,也可以通过Client使用RPC转发到Server,请求最终会到达Leader节点,在允许数据延时的情况下,读请求也可以在普通的Server节点完成,集群内数据的读写和复制都是通过TCP的8300端口完成 。
Consul其实也可以在应用内进行注册,后续采用Spring Cloud全家桶这套做负载
我们这里聊聊关于Consul的应用外的注册:

文章插图
上图主要多出来两个组件,分别是Registrator和Consul Template,接下来我们介绍下这两个组件如何结合可以实现在应用发进行服务发现和注册 。
Registrator:一个开源的第三方服务管理器项目,它通过监听服务部署的 Docker 实例是否存活,来负责服务提供者的注册和销毁 。
Consul Template:定时从注册中心服务端获取最新的服务提供者节点列表并刷新 LB 配置(比如 Nginx 的 upstream),这样服务消费者就通过访问 Nginx 就可以获取最新的服务提供者信息,达到动态调节负载均衡的目的 。
整体架构图可能是这样:

文章插图
我们用Registrator来监控每个Server的状态 。当有新的Server启动的时候,Registrator会把它注册到Consul这个注册中心上 。
由于Consul Template已经订阅了该注册中心上的服务消息,此时Consul注册中心会将新的Server信息推送给Consul Template,Consul Template则会去修改nginx.conf的配置文件,然后让Nginx重新载入配置以达到自动修改负载均衡的目的 。
5、KubernetesKubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务 。通过Kubernetes能够进行应用的自动化部署和扩缩容 。
在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现 。Kubernetes积累了作为google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践 。
Kubernetes经过这几年的快速发展,形成了一个大的生态环境,Google在2014年将Kubernetes作为开源项目 。Kubernetes的关键特性包括:
- 自动化装箱:在不牺牲可用性的条件下,基于容器对资源的要求和约束自动部署容器 。同时,为了提高利用率和节省更多资源,将关键和最佳工作量结合在一起 。
推荐阅读
- 聊聊【软件架构模式】—微内核架构
- 国家网信办发布深度合成服务算法备案清单:百度阿里腾讯字节等在列
- 微信红包怎么发200以上的
- 如何好友克隆好友微信
- 微星bios怎么设置风扇转速
- 中文域名可以自己注册吗
- 滴滴注册专车还是快车
- 滴滴注册司机车辆流程
- 如何删除系统服务管理员
- 怎么删除服务卡片
