当前位置: 首页 > news >正文

中国网站优化网页设计定制代理

中国网站优化,网页设计定制代理,上传到网站去的文档乱码,电商沙盘seo优化简介 Consul#xff0c;HashiCorp公司推出的开源工具#xff0c;用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案#xff0c;Consul的方案更一站式#xff0c;内置服务注册与发现框架、分布一致性协议实现、健康检查、K/V存储、多数据中心方案HashiCorp公司推出的开源工具用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案Consul的方案更一站式内置服务注册与发现框架、分布一致性协议实现、健康检查、K/V存储、多数据中心方案不再需要依赖其他工具如ZooKeeper等。使用Go语言编写具有天然可移植性安装包仅包含一个可执行文件方便部署与Docker等轻量级容器可无缝配合。 GitHub开源地址。 概念 Agentagent是长期运行在每个Consul集群成员节点上的守护进程。通过consul agent命令启动agent有client和server两种模式。由于每个节点都必须运行agent所以节点要么是client要么是server。所有的agent都可以调用DNS或HTTP API并负责检查和维护服务同步Client运行client模式的agent将所有的RPC转发到server。client是相对无状态的。client唯一所做的是在后台参与LAN gossip pool。只消耗少量的资源和少量的网络带宽Server运行server模式的agent参与Raft quorum维护集群状态响应RPC查询与其他数据中心交互WAN gossip转发查询到Leader或远程数据中心DataCenter定义数据中心在同一个网络环境中私有的、低延迟、高带宽。这不包括基于公共互联网的环境在同一个EC2中的多个可用性区域会被认为是在同一个数据中心中Consensus意味着Leader election机制以及事务的顺序。由于这些事务基于一个有限状态机consensus的定义意味着复制状态机的一致性GossipConsul建立在Serf之上提供完整的Gossip协议用于成员维护故障检测、事件广播Gossip的节点到节点之间的通信使用UDP协议LAN GossipLAN gossip pool指在同一局域网或数据中心的节点上的LAN Gossip池WAN GossipWAN gossip pool只包含server节点这些server主要分布在不同的数据中心通过网络进行通信RPC远程过程调用允许client请求server的请求/响应机制 功能 服务发现Consul客户端可向Consul注册服务其他客户端可以使用Consul来发现服务的提供者。支持使用DNS或HTTP两种方式健康检查Consul客户端可以提供任意数量的运行状况检查机制这些检查机制可以与给定服务Web服务器返回200 OK或本地节点内存利用率低于90%相关联。这些信息可以用来监控群集的运行状况服务发现组件可以使用监控信息来路由流量使流量远离不健康的服务KV存储应用程序可以将Consul的键/值存储起来用于任何需求包括动态配置、功能标记、协调、领导者选举等。KV存储采用HTTP API易于使用安全服务通信Consul可以为服务生成和分发TLS证书以建立相互的TLS连接多数据中心Consul支持多个数据中心这意味着Consul用户不必担心构建额外的抽象层来扩展到多个区域 适用场景 至少包括如下场景 健康检查节点实例的注册与配置共享如Docker、CoreOS等系统vitess集群与confd服务集成动态生成Nginx和HaProxy配置文件 架构 官网给出的架构示意图 大概分析下Consul高可用集群由一个个DC(DataCenter)组成DC之间的通信采用Gossip协议。 一个DC下有若干个Server节点节点间通过集群选举算法选出一个Leader和若干个FollowerLeader负责处理所有查询和事务当Follower收到RPC请求时它会将其转发给集群Leader。Leader和Follower基于TCP协议和8300端口进行集群状态数据同步。 不同的Consul数据中心之间不会复制数据。 安装 具体的安装步骤因操作系统和部署模式不同而有所不同。 系统 Linux 以CentOS系统为例 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consulMac OS 通过brew来安装 brew tap hashicorp/tapbrew install hashicorp/tap/consul安装成功 # 查看版本号 consul --version # 前台启动 consul agent -dev # 后台启动示例 consul agent -server -ui -bootstrap-expect1 -client0.0.0.0 -bind ip地址 -data-dir/状态数据存储文件夹/data /日志记录文件夹/logs/consul.log # 准备目录 mkdir -p /usr/local/var/logs/consul/ touch consul.log consul agent -server -ui -bootstrap-expect1 -client0.0.0.0 -bind 127.0.0.1 -data-dir/usr/local/var/consul/data /usr/local/var/logs/consul/consul.log # 查看服务 ps aux | grep -v grep | grep consul正常来说命令执行成功浏览器打开http://localhost:8500即可访问。如果浏览器打不开此地址说明启动失败查看启动日志cat /usr/local/var/logs/consul/consul.log 模式 单机 上面几种安装方式就是单机安装。 集群 待补充。 基础 端口 Consul中默认的端口 服务器RPC默认8300由服务器用来处理来自其他代理的传入请求仅限TCPSerf LAN默认8301用来处理局域网中的八卦。所有代理都需要TCP和UDPSerf WAN默认8302被服务器用来在WAN上闲聊到其他服务器TCP和UDP。通过端口8302在LAN接口上为TCP和UDP启用服务器之间的连接以及WAN加入泛滥功能HTTP API默认8500被客户用来与HTTP API交谈仅限TCPDNS接口默认8600用于解析DNS查询TCP和UDP。 命令 执行Consul命令后的输出 Available commands are:agent Runs a Consul agentcatalog Interact with the catalogevent Fire a new eventexec Executes a command on Consul nodesforce-leave Forces a member of the cluster to enter the left stateinfo Provides debugging information for operators.join Tell Consul agent to join clusterkeygen Generates a new encryption keykeyring Manages gossip layer encryption keyskv Interact with the key-value storeleave Gracefully leaves the Consul cluster and shuts downlock Execute a command holding a lockmaint Controls node or service maintenance modemembers Lists the members of a Consul clustermonitor Stream logs from a Consul agentoperator Provides cluster-level tools for Consul operatorsreload Triggers the agent to reload configuration filesrtt Estimates network round trip time between nodessnapshot Saves, restores and inspects snapshots of Consul server statevalidate Validate config files/directoriesversion Prints the Consul versionwatch Watch for changes in Consulconsul agent Consul的Agent是Consul的核心。Agent维护成员的信息注册服务运行检测响应查询。Agent必须作为Consul集群的一部分的每个节点上运行。任何代理可以以两种模式之一运行客户端或服务器。服务器节点承担协商一致性的功能。这些节点参与Raft并在故障下提供强大的一致性和可用性。服务器节点负担越来越大意味着需要在专用的实例上运行——他们比客户端节点更为资源密集。客户端节点构成了大多数的集群并且它们很轻量因为它们大多数操作的是服务器节点接口维护自己状态的时间很少。 consul agent --help -data-dir 作用指定agent储存状态的数据目录 这是所有agent都必须的 对于server尤其重要因为他们必须持久化集群的状态 -config-dir 作用指定service的配置文件和检查定义所在的位置 通常会指定为”某一个路径/consul.d”.d表示一系列配置文件存放的目录 -config-file 作用指定一个要装载的配置文件 该选项可以配置多次进而配置多个配置文件后边的会合并前边的相同的值覆盖 -dev 作用创建一个开发环境下的server节点 该参数配置下不会有任何持久化操作即不会有任何数据写入到磁盘 这种模式不能用于生产环境 -bootstrap-expect 该命令通知consul server我们现在准备加入的server节点个数该参数是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后启动。 -node 作用指定节点在集群中的名称 该名称在集群中必须是唯一的默认采用机器的host 推荐直接采用机器的IP -bind 作用指明节点的IP地址 有时候不指定绑定IP会报Failed to get advertise address: Multiple private IPs found. Please configure one.的异常 -server 作用指定节点为server 每个数据中心DC的server数推荐至少为1至多为5 所有的server都采用raft一致性算法来确保事务的一致性和线性化事务修改了集群的状态且集群的状态保存在每一台server上保证可用性 server也是与其他DC交互的门面gateway -client 作用指定节点为client指定客户端接口的绑定地址包括HTTP、DNS、RPC。默认127.0.0.1只允许回环接口访问若不指定为-server其实就是-client -join将节点加入到集群 -datacenter老版本叫-dc-dc已经失效指定机器加入到哪一个数据中心中 consul catalog 用来接Consul目录进行交互 列出数据中心consul catalog datacenters列出节点consul catalog nodes列出所有提供服务的节点consul catalog nodes -serviceredis列出所有服务器consul catalog services consul event event提供一种将自定义用户事件触发到整个数据中心的机制,这些事件对Consul是不透明的但它们可用于构建脚本基础架构以进行自动部署重新启动服务或执行任何其他编排操作。Event可以通过使用watch来处理。event的传播是通过流言传播协议的。 consul info info命令提供对运算符有用的各种调试信息。根据代理是客户端还是服务器将返回不同的子系统信息。目前有几个顶级的键 agent提供有关agent的信息consul有关Consul的信息包括客户端、服务端raft提供有关Raft公共信息serf_lan提供有关LAN流言池的信息serf_wandf提供有关WAN流言池的信息 consul join join命令让Consul代理加入一个现有集群新的Consul代理必须与集群的至少一个现有成员共同参与现有的集群。加入该成员后流言层接管跨集群传播更新成员的资格状态。如果没有加入现有的集群则代理是自己的孤立集群的一部分其他节点可以加入。代理可以加入其它的代理。如果已经是集群的一部分的节点加入另一个节点则两个节点的集群将加入成为一个集群。 consul member menber命令输出Consul代理人知道的当前成员名单及其状态。节点的状态只能是aliveleft或failed。 consul lock lock命令提供简单分布式锁定的机制。在KV存储中的给定前缀创建锁或信号量只有当被保持时才会调用子进程。如果锁丢失或通信中断则子进程终止。锁定器的数量可以使用-n标志进行配置。默认情况下允许单个持有人并且使用锁来进行互斥。这使用leader选举算法。 consul keygen 用于生成Consul代理流量加密的加密秘钥。 consul keyring 用于检查和修改Consul的流言池中使用的加密密钥。 consul monitor monitor命令用于连接和跟踪正在运行的Consul代理的日志。Monitor将显示最近的日志然后继续遵循日志不会退出直到中断或直到远程代理退出。 consul reload reload命令触发代理程序重新加载配置文件。 consul snapshot snapshot命令具有用于保存恢复和检查Consul服务器的状态用于容灾恢复的子命令。这些是原子的时间点快照其中包括键值条目服务目录准备好的查询会话和ACL。 实战 Java Client 前面已经在Mac/Linux系统下采用单机模式成功安装Consul Server也能通过命令行与Server通信并介绍Consul提供的若干个命令。 但是在Java开发中需要使用代码的方式来实现。参考官网libraries-and-sdks对于Java开发来说可供选择的客户端有两个 rickfast开源的consul-clientGitHub仓库显示已经是archived只读状态仅242个Fork572个Star对应的Maven依赖如下最后发布时间为2021.07.04 dependencygroupIdcom.orbitz.consul/groupIdartifactIdconsul-client/artifactIdversion1.5.3/version /dependencyEcwid开源的consul-api仅177个Fork416个Star对应的Maven依赖如下最后发布时间为2020.04.09 dependencygroupIdcom.ecwid.consul/groupIdartifactIdconsul-api/artifactIdversion1.4.5/version /dependencySpring Cloud封装提供的spring-cloud-starter-consul-discovery使用的是后者。 简单实例 ConsulRawClient client new ConsulRawClient(localhost, 8500); ConsulClient consul new ConsulClient(client); // 获取所有服务 Map map consul.getAgentServices().getValue();一个疑问Consul Server一直在持续迭代和发布新版本官网推荐的两个Java Client都已经处于停止开发状态后续该选择什么Client 注册中心 引入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-consul-discovery/artifactId /dependency自动配置类ConsulAutoConfiguration配置类文件ConsulDiscoveryProperties配置文件 server:port: 8023 spring:application:name: order-providercloud:consul:host: 127.0.0.1port: 8500discovery:register: trueserviceName: ${spring.application.name}preferIpAddress: trueregister-health-check: truehealth-check-path: /actuator/healthhealth-check-interval: 10shealth-check-timeout: 10shealth-check-critical-timeout: 30s #健康检查失败多长时间后取消注册health-check-tls-skip-verify: trueinstance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}spring.cloud.client.ip-address是系统自带的变量。 问题 使用Consul作为注册中心遇到的问题 oauth-dx-provider | [http-nio-8848-exec-9] | | ERROR | o.s.c.client.discovery.health.DiscoveryClientHealthIndicator | health | 73 | - Error com.ecwid.consul.v1.OperationException: OperationException(statusCode500, statusMessageInternal Server Error, statusContentrpc error making call: No cluster leader) at com.ecwid.consul.v1.catalog.CatalogConsulClient.getCatalogServices(CatalogConsulClient.java:128) at com.ecwid.consul.v1.catalog.CatalogConsulClient.getCatalogServices(CatalogConsulClient.java:114) at com.ecwid.consul.v1.ConsulClient.getCatalogServices(ConsulClient.java:367)参考stackoverflow问题的根源在于运维操作不当后来自动恢复。深层次原因限于能力有限没能进一步深入分析挖掘。 配置中心 Consul支持键值对的存储可以用来做分布式配置中心。Spring Cloud Consul Config依赖去和Consul相集成。 进阶 能力和篇幅有限仅仅只是提及或列出Consul的一些高级概念和知识点作为后续深入学习的一个引子。 持久化 Consul支持的KV存储的value值不能超过512KB在dev模式启动下所有数据都存储在内存中Consul重启后会导致所有数据丢失使用非dev模式启动时Consul的数据会持久化数据不会丢失。 ACL 加密 高可用 Anti-Entropy 反熵熵是系统变得越来越无序的趋势。Consul的反熵机制旨在对抗这种趋势即使在组件发生故障的情况下也能保持集群的有序状态。 Gossip协议 Consul使用Gossip协议来管理成员和集群广播消息这些都是通过使用Serf库的。Serf所使用的Gossip协议基于SWIM可伸缩的弱一致的感染模式的过程组成员协议并加以细微的修改。 Consul使用两个不同的Gossip池称为LAN池和WAN池。每个数据中心都有一个LAN池其中包含数据中心的所有成员包括服务器端和客户端。LAN的成员客户端可以自动发现服务器减少所需配置的数量。分布式故障检测可以让故障检测的工具被整个集群共享Gossip池可以快速可靠的将事件广播比如选择Leader。 WAN池是全局唯一的所有的服务器都应该在WAN池中而不关系数据中心在哪里。WAN池提供的成员信息允许服务器执行跨数据中心请求。集成的故障检测功能使Consul能够优雅地处理整个数据中心或者远程数据中心的一个服务器失连。 Lifeguard Enhancement 在分组软实时处理可能的情况下SWIN假设本地节点是健康的。但在本地节点遇到CPU或者网络节点资源匮乏的时候可能不会认为节点不健康。结果是安全检测状态可能会偶尔瘫痪导致虚假报警。Lifeguard解决这个问题。 Consensus协议 Consul通过Consensus协议来提供一致性(由CAP定义)。Consensus协议是基于Raft一致性算法。 Raft是一种基于Paxos的一致性算法。与Paxos相比Raft被设计成更少的状态和更简单、更易于理解的算法。 Raft节点有三种状态FollowerCandidateLeader。所有的节点初始被置于Follower在这个状态下的节点都可以收到来自Leader的Log并反馈。如果在一段时间没有收到任何信息则会变成Candidate状态。在Candidate状态下一个节点向其他节点发送请求这个节点就成为Leader。Leader必须接收新Log并复制其到其他Follower那里。只有Leader才能进行读取Log。 集群一旦产生Leader就可接受新的Log条目客户端可请求Leader附加新的Log条目。这个Leader随后将Log条目写入持久存储并复制到Follower。一旦Log条目被认为已经提交它就会被用于有限状态机。有限状态机是相对于特定应用的对于Consul而言使用MenDB来维护集群状态。 显然不需要无限制的复制日志。Raft提供一种机制通过这种机制让状态被记录时这个Log就会被压缩。 MenDB Japsen测试 Serf Spring Cloud封装的SerfStatusEnum枚举类有四个状态 StatusAliveStatusLeavingStatusLeftStatusFailed 服务网格Connect 对比 Consul与Eureka比较 Eureka是Netflix公司开源的服务注册中心组件。 在Eureka的架构体系中分为Eureka服务端和Eureka客户端。Eureka服务端可以支持多数据中心每个数据中心有一组Eureka服务端。通常Eureka客户端使用嵌入式SDK来注册和发现服务。 Eureka使用注册列表复制的方式提供弱一致的服务视图。当Eureka客户端向Eureka服务端注册时该Eureka服务端将尝试复制到其他Eureka服务端但不提供强一致性保证。服务注册成功后要求Eureka客户端对Eureka服务端进行心跳健康检测。不健康的服务或节点将停止心跳从而导致它们的监控检查超时并从注册表中删除。服务注册的请求可以路由到任何Eureka服务端Eureka服务端可以提供过时或丢失的数据。这种简化的模型能够轻松地搭建Eureka服务端集群的高可用和强扩展性。 相比EurekaConsul提供更多高级功能包括更丰富的运行时健康检查、键值存储和多数据中心的相互感知。Consul提供强一致性的保证因为Consul服务端使用Raft协议进行状态的复制。Consul支持丰富的运行时健康检查包括TCP、HTTP、Nagios、Sensu兼容脚本等。Consul客户端基于Gossip的健康检查。服务注册请求会被路由到Consul领导者的节点。 Consul的强一致性意味着它需要用领导者选举和集群协调来锁定服务。Eureka采用的是P2P的复制模式不保证复制操作一定能成功Eureka不提供强制性的保证而是提供一个最终一致性的服务实例视图。Eureka客户端在Eureka服务端的注册信息有一个带期限的服务续约一旦Eureka服务端在指定时间内没有收到Eureka客户端发送的心跳则Eureka服务端会认定Eureka客户端注册的服务是不健康的将会其从注册表中删除定时任务。Consul与Eureka不同的是Consul采用Raft算法可以提供强一致性的保证Consul的代理Agent相当于Netflix Ribbon Netflix Eureka客户端而且对应用来说相对透明。同时相比Eureka这种集中式的心跳检测机制Consul的代理可以参与到基于Goosip协议的健康检查中分散服务端的心跳检测压力。Consul为多数据中心提供开箱即用的原生支持。 Consul与Nacos对比 参考
http://www.zqtcl.cn/news/120426/

相关文章:

  • 新乡市做网站的公司百度推广开户费用多少
  • 免费建网站哪个平台好php 未定义函数wordpress
  • 个人网站 域名选择郑州那家做网站便宜
  • 网站建设技术合伙人的技术股份全国免费发布信息网站大全
  • 兼职网站平台有哪些新手怎么学做网站
  • 有没有直接做网站的软件iis一个文件夹配置多个网站
  • 网站怎么屏蔽ip访问信息发布网站建设
  • 陕西省住房城乡建设厅网站管理中心电信服务器
  • 外国优秀网站设计程序员做任务的网站
  • 购物网站项目经验开发一个游戏软件需要多少钱
  • 专业的大连网站建设电商网站支付方案
  • 手机如何建设网站首页株洲搜索引擎优化
  • 辉县市建设局网站制作网站站用的软件下载
  • 什么网站广告做多有没有不花钱建设网站的方法
  • 网站开发技术总监面试题五大门户网站分别是
  • 福州自助建设网站网站开发工具蜡笔小新
  • 扬州市住房和城乡建设网站html5 后台网站模板
  • 网站建设与设计意义宜兴做宠物的网站
  • 苏州建设工程人才招聘网信息网站wordpress前端库加速
  • 浙江手机版建站系统信息应用商店下载app
  • 广告投放网站动画设计模板
  • 网站发外链的好处页面跳转 英文
  • 黑链 对网站的影响网页小游戏网站有哪些
  • wordpress 网站卡做百度移动网站排名
  • 金融企业网站整站源码网站需要写哪些内容
  • 重庆做网站的网络公司河北建设厅官方网站八大员考试
  • 网站域名缴费服装企业网站建设现状
  • 南阳建设网站哪家好做金融网站
  • 挖矿网站怎么做域名注册需要多少钱?
  • 哈尔滨制作网站企业各位给推荐个网站