您现在的位置是: 首页 > 汽车技术 汽车技术

apollo 配置中心_apollo配置中心文档

tamoadmin 2024-09-14 人已围观

简介1.Disconf原理及分布式配置中心的一般实现思路2.消息传输推与拉的比较3.微服务注册中心Consul转Nacos实践4.微服务架构系列之–最全配置中心对比(面试随便装)k8s cronjob 启动顺序如下:在K8S部署中,有时候容器启动顺序因为我们业务需要是有要求的,比如业务服务可能需要在 配置中心、注册的中心 启动后才启动。通过 initContainer 来阻塞启动,如下以业务服务需要在

1.Disconf原理及分布式配置中心的一般实现思路

2.消息传输推与拉的比较

3.微服务注册中心Consul转Nacos实践

4.微服务架构系列之–最全配置中心对比(面试随便装)

apollo 配置中心_apollo配置中心文档

k8s cronjob 启动顺序如下:

在K8S部署中,有时候容器启动顺序因为我们业务需要是有要求的,比如业务服务可能需要在 配置中心、注册的中心 启动后才启动。

通过 initContainer 来阻塞启动,如下以业务服务需要在apollo配置中心启动后才启动需求为例:

my-namespace为配置中心所在命名空间的名称。svc.cluster.local为固定写法。6166为我的配置中心的端口号。

/info为配置中心启动后可以正常访问的一个URL地址,这个根据你自己实际需求填写,比如 /actuator/metrics 等等。

Disconf原理及分布式配置中心的一般实现思路

login 以一个用户名登录 logout 退出终端 mbranch 向树形下端分支跟踪多路由广播 mrbranch 向树形上... Cisco2620(config-line)#

login local:允许本地口令检查

以下路由器常用命令 :

1、Exec commands:

<1-99> 恢复一个会话

bfe 手工应急模式设置

clear 复位功能

clock 管理系统时钟

configure 进入设置模式

connect 打开一个终端

copy 从tftp服务器拷贝设置文件或把设置文件拷贝到tftp服务器上

debug 调试功能

disable 退出优先命令状态

disconnect 断开一个网络连接

enable 进入优先命令状态

erase 擦除快闪内存

exit 退出exce模式

help 交互帮助系统的描述

lat 打开一个本地传输连接

lock 锁定终端

login 以一个用户名登录

logout 退出终端

mbranch 向树形下端分支跟踪多路由广播

mrbranch 向树形上端分支跟踪反向多路由广播

name-connection 给一个存在的网络连接命名

no 关闭调试功能

pad 打开X.29 PAD连接

ping 发送回显信息

ppp 开始点到点的连接协议

reload 停机并执行冷启动

resume 恢复一个活动的网络连接

rlogin 打开远程注册连接

rsh 执行一个远端命令

send 发送信息到另外的终端行

setup 运行setup命令

show 显示正在运行系统信息

slip 开始SLIP协议

start-chat 在命令行上执行对话描述

systat 显示终端行的信息

telnet 远程登录

terminal 终端行参数

test 测试子系统内存和端口

tn3270 打开一个tin3270连接

trace 跟踪路由到目的地

undebug 退出调试功能

verify 验证检查闪烁文件的总数

where 显示活动的连接

which-route 执行OSI路由表查找并显示结果

write 把正在运行的设置写入内存、网络、或终端

x3 在PAD上设置X.3参数

xremote 进入xremote模式

2、#show ?

access-expression 显示访问控制表达式

access-lists 显示访问控制表

apollo Apollo 网络信息

letalk Apple Talk 信息

arap 显示Appletalk 远端通道统计

arp 地址解析协议表

async 访问路由接口的终端行上的信息

bridge 前向网络数据库

buffers 缓冲池统计

clns CLNS网络信息

clock 显示系统时钟

cmns 连接模式网络服务信息

compress 显示压缩状态

configuration 非易失性内存的内容

controllers 端口控制状态

debugging 调试选项状态

decnet DEC网络信息

dialer 拨号参数和统计

dnsix 显示Dnsix/DMPP信息

entry 排队终端入口

extended 扩展端口信息

flash 系统闪烁信息

flh-log 闪烁装载帮助日志缓冲区

frame-relay 帧中继信息

history 显示对话层历史命令

hosts IP域名,查找方式,名字服务,主机表

interfaces 端口状态和设置

ip IP信息

ipx Novell IPX信息

isis IS-IS路由信息

keymap 终端键盘映射

lat DEC LAT信息

line 终端行信息

llc2 IBM LLC2 环路信息

lnm IBM 局网管理

local-ack 本地认知虚环路

memory 内存统计

netbios-cache NetBios命名缓冲存贮器内存

node 显示已知LAT节点

ntp 网络时间协议

processes 活动进程统计

protocols 活动网络路由协议

queue 显示队列内容

queueing 显示队列设置

registry 功能注册信息

rhosts 远程主机文件

rif RIF存贮器入口

route-map 路由器信息

sdlle 显示sdlc-llc2转换信息

services 已知LAT服务

sessions 远程连接信息

smds SMDS信息

source-bridge 源网桥参数和统计

spanning-tree 跨越树形拓朴

stacks 进程堆栈应用

standby 热支持协议信息

stun STUN状态和设置

subsystem 显示子系统

tcp TCP连接状态

terminal 显示终端设置

tn3270 TN3270 设置

translate 协议转换信息

ttycap 终端容易表

users 显示终端行的信息

version 系统硬、软件状态

vines VINES信息

whoami 当前终端行信息

x25 X.25信息

xns XNS信息

xermote Xremote统计

3、#config ?

Memory 从非易失性内存设置

Network 从TFTP网络主机设置

Overwrite-network 从TFTP网络主机设置覆盖非易失性内存

Terminal 从终端设置

4、Configure commads:

Access-list 增加一个访问控制域

Apollo Apollo全局设置命令

letalk Appletalk 全局设置命令

arap Appletalk远程进出协议

arp 设置一个静态ARP入口

async-bootp 修改系统启动参数

autonomous-system 本地所拥有的特殊自治系统成员

banner 定义注册显示信息

boot 修改系统启动时参数

bridge 透明网桥

buffers 调整系统缓冲池参数

busy-message 定义当连接主机失败时显示信息

chat-script 定义一个调制解调器对话文本

clns 全局CLNS设置子命令

clock 设置时间时钟

config-register 定义设置寄存器

decnet 全局DEC网络设置子命令

default-value 缺省字符位值

dialer-list 创建一个拨号清单入口

dnsix-nat 为审计提供DMDM服务

enable 修改优先命令口令

end 从设置模式退出

exit 从设置模式退出

frame-relay 全局帧中继设置命令

help 交互帮助系统的描述

hostname 设置系统网络名

iterface 选择设置的端口

ip 全局地址设置子命令

ipx Novell/IPX全局设置命令

keymap 定义一个新的键盘映射

lat DEC本地传输协议

line 设置终端行

lnm IBM局网管理

locaddr-priority-list 在LU地址上建立优先队列

logging 修改注册(设备)信息

login-string 定义主机指定的注册字符串

map-class 设置静态表类

map-list 设置静态表清单

menu 定义用户接口菜单

mop 设置DEC MOP服务器

netbios NETBIOS通道控制过滤

no 否定一个命令或改为缺省设置

ntp 设置NTP

priority-list 建立特权列表

prompt 设置系统提示符

queue-list 建立常规队列列表

rcmd 远程命令设置命令

rcp-enable 打开Rep服务

rif 源路由进程

router-map 建立路由表或进入路由表命令模式

router 打开一个路由进程

rsh-enable 打开一个RSH服务

sap-priority-list 在SAP或MAC地址上建立一个优先队列

service 修改网络基本服务

snmp-server 修改SNMP参数

state-machine 定义一个TCP分配状态的机器

stun STUN全局设置命令

tacacs-server 修改TACACS队列参数

terminal-queue 终端队列命令

tftp-server 为网络装载请求提供TFTP服务

tn3270 tn3270设置命令

translate 解释全局设置命令

username 建立一个用户名及其权限

vines VINES全局设置命令

x25 X.25 的第

x29 X.29 命令

xns XNS 全局设置命令

xremote 设置Xremote

4、(config)#ip

Global IP configuration subcommands:

Accounting-list 选择保存IP记帐信息的主机

Accounting-threshold 设置记帐入口的最大数

accounting-transits 设置通过入口的最大数

alias TCP端口的IP地址取别名

as-path BGP自治系统路径过滤

cache-invalidate-delay 延迟IP路由存贮池的无效

classless 跟随无类前向路由规则

default-network 标志网络作为缺省网关候选

default-gateway 指定缺省网(如果没有路由IP)

domain-list 完成无资格主机的域名

domain-lookup 打开IP域名服务系统主机转换

domain-name 定义缺省域名

forward-protocol 控制前向的、物理的、直接的IP广播

host 为IP主机表增加一个入口

host-routing 打开基于主机的路由(代理ARP和再定向)

hp-host 打开HP代理探测服务

mobile-host 移动主机数据库

multicast-routing 打开前向IP

name-server 指定所用名字服务器的地址

ospf-name-lookup 把OSPF路由作为DNS名显示

pim PIM 全局命令

route 建立静态路由

routing 打开IP路由

security 指定系统安全信息

source-route 根据源路由头的选择处理包

subnet-zero 允许子网0子网

tcp 全局TCP参数

消息传输推与拉的比较

因为新公司没有用独立的配置中心,每次修改配置参数只能通过手动修改配置文件的方式,然后再重启重启重启,而且机器又是多台,这种方式无疑是非常低下的,而且极容易出错,所以才有了下面的配置中心选型。

其实自己开发一个简单的配置中心也是非常容易的,基于redis+DB就能简单实现。但是要设计一个合格的配置中心还需要考虑如下几点:

所以要自己开发一个独立的配置中心,还是要考虑得比较全面的。而且项目还是以业务为主,也没有足够人力来重新开发一套配置中心,所以就打算借助于开源的力量来满足目前的使用场景。

因为现在的配置中心还是有一些开源实现的。像百度的Disconf,阿里的Diamond,携程的Apollo,还有基于Github的pull模式来实现。我为什么选择Disconf,主要有下面几个点的考量:

Disconf是百度的一个分布式配置中心,目前已经开源。而且它是基于ja实现的,有简单的配置页面,而且官方还提供了一个相对完善的 文档 .开发者只需按照它上面的步骤来即可安装,但是的安装文档比较扯淡,总结起来就是如下几点:

然后启动Nginx.

Disconf主要是依靠zookeeper的Watch机制来做配置实时修改的,我们都知道ZK是通过目录挂载的方式来做服务的自动注册与发布。客户端启动时注册了一个回调接口,当zk目录发生变化时会回调所有客户端节点,从而做到"实时"更新配置的目的。

在配置中心添加的配置数据都被持久化到了DB中,每次客户端启动的时候会调用Disconf的Http接口获取最新的配置数据,如果网络不通,默认会重试三次,如果还不通,则抛出异常。如果第一次拉取配置就有问题,作为配置中心来讲是肯定是无解的,需要客户端去解决(一般这种情况是网络问题或者配置中心服务不可用导致)。

我们这里不需要考虑第一次加载配置就失败的情况.那么问题来了:

答案:不会,因为disconf会单独起一个线程做重连操作。

答案:没有做这方面的保证。因为客户端连接到配置中心上以后会将机器名挂载到zk目录下,可以通过界面查看配置使用的机器数。

所以要使用一个开源产品,还是要尽可能的掌握它,如果有太多未知因素在里面的话,出了问题很难被发现,对自己也是一个提升。

微服务注册中心Consul转Nacos实践

在服务器与客户端进行信息传输的时候,是客户端从服务器拉去消息,还是服务器往客户端推送消息,这是在设计一个需要网络通讯系统需要考虑的问题。

本文将介绍推与拉这两种交互方式的优缺点,和一些案例经典的框架是如何选择推和拉的形式的。

推和拉都有各自的优缺点,先说推、拉的实现。推一般情况下是服务端与客户端维护了长连接,服务端使用这个长连接进行的消息推送。而拉则是客户端用轮询的方式定期查看服务端是否有消息变更,如果有就拉去下来。

这就是简单的推和拉的实现,他们的优缺点也比较明显。推的优势在于实时性很高,当服务端发送信息变更之后由服务端主动推送这样的实时性是非常高的。而缺点在于消息都是由服务端主动推送,当服务端很频繁的推送消息的时候,由于客户端的处理速度是不同的,由服务端去推送消息目的是为了让信息及时发送给客户端提高客户端的消费速率,但是当客户端的处理速度低于服务端的推送速度,客户端往往会不堪重负。

而拉的优点在于,由客户端按照自身的处理情况按照一定的周期去服务器拉去信息,这样就不会出现服务端压死客户端的情况。但是拉的形式有一个问题是你拉去的周期是多少?周期太长,服务端与客户端的消息延迟最坏情况就是一个周期,周期太短,当服务端没有信息的时候会导致长期的空轮训。基于这个问题我们可以用长轮询去解决,客户端会一直阻塞直到服务端有数据才返回。

上面介绍了推和拉的实现和各自的优缺点,这里将列举一些经典框架,看它们是如何选择的,这样也会加深对推和拉的认识。

kafak作为消息队列,用的是生产者往broker推消息,消费者往broker拉消息。为什么消费者用的是拉的形式?上面分析过,如果用推的形式,各个消费者的消费速率是不同的很可能将客户端压垮。而且用推在消息系统中还有另外一个不好的点,因为kafak为了提高吞吐量,消息都是批量发送和批量消费,当服务端不知道下游的消费速率的时候,将系统调整为低延迟状态,这就会导致一次只发送一条消息,以至于传输的数据不再被缓冲,这种方式是极度浪费的。 因为 消费者 总是将所有可用的(或者达到配置的最大长度)消息 pull 到 log 当前位置的后面,从而使得数据能够得到最佳的处理而不会引入不必要的延迟。

apollo作为配置中心,当我们更改了配置之后,服务端能够及时的将变动通知给客户端,apollo用的就是拉的形式,下面是apollo客户端获取变更的步骤:

不同于传统的pull,apollo用的是 long pull,简单来说传统的pull当服务端没有消息的时候会立即返回,而long pull在服务端没有变动的时候会将请求挂起,直到有数据或者请求超时才返回请求。这有点类似于jdk中的阻塞队列 BlockingQueue 调用poll方法会一直阻塞当前线程直到有数据返回,只不过这个是跨进程的。

配置中心对于变更的实时性要求不是很高,所以apollo用了拉的形式,而且为了避免客户端的空轮训用长轮询的方式。

zookeeper作为分布式协调框架,提供丰富的功能,其中一个就是watcher机制。Watcher是zookeeper中很重要的功能。客户端通过对znode创建watcher当节点发生变化的时候(节点删除、数据更改、子节点变化等),ZooKeeper将会通知注册Watcher的客户端节点已经变更。

zookeeper实现watcher用的是推和拉结合的方式,节点的变化是需要实时通知的所以用推的模式,但是zookeeper这里推送的信息只是节点的变化事情,告诉客户端这个节点发生了变动,而非推送这次变动的信息。具体的变动信息是客户端按照自己的需要去从服务端拉去变动的信息。用这样方式每次变动只需要传输少量数据,减少变动通知的IO传输。

经过分析了kafka、apollo、zookeeper三个案例之后,发现推和拉并没有什么绝对的使用场景,还是需要在自己特定的创建选择合适的方法,必要时候两个也可以同时存在,适合自己才是最好的。

微服务架构系列之–最全配置中心对比(面试随便装)

先说下为什么要从Consul 换到Nacos?

当然最主要的原因是需要使用Nacos的配置和管理微服务的能力,配置中心之前用过携程开源的Apollo,个人感觉环境搭建起来比较复杂。

下面开始:

具体可以看下 s://nacos.io/zh-cn/docs/quick-start.html 这个是Nacos的官方文档网址,里面有Nacos功能的详细介绍和集成教程。

3.修改项目原来的配置文件 ,将原来的lication.yml 改成 bootstrap.yml配置内容大致如下

common.yaml 内容如下

到这里改造就基本完成了,如有问题可以在评论区讨论。

本文从社区活跃度、产品特点、成功案例、产品缺点等维度,全方位对比Spring Cloud Config、Apollo、Nacos、Disconf、Spring Cloud Consul、Spring Cloud Zookeeper等几款Spring Cloud生态的配置服务器,帮助你选择合适的配置服务器。

一、Spring Cloud Config

GitHub地址

s://github/spring-cloud/spring-cloud-config ,Star数1178,官方组件,社区较活跃

开源厂商

Pivotal(Spring官方团队)

产品特点

演示环境

暂无

成功案例

N多,目前用Spring Cloud的大多团队都是用的Spring Cloud Config

缺点

二、Apollo

GitHub地址

s://github/ctripcorp/apollo ,Star数11169,社区很活跃

开源厂商

携程

产品特点

成功案例

携程、网易蜂巢、中国平安等,更多公司详见s://github/ctripcorp/apollo

演示环境

://106.12.25.204:8070/

账号/密码:apollo/admin

缺点

暂未发现

三、Nacos

GitHub地址

s://github/alibaba/nacos ,Star数3820,社区非常活跃

开源厂商

阿里巴巴

产品特点

成功案例

阿里巴巴、虎牙直播、工商银行软件开发中心、爱奇艺等,更多公司详见s://github/alibaba/nacos/issues/273

演示环境

://console.nacos.io/nacos/index.html

缺点

暂未发现明显缺点

四、Disconf

GitHub地址

s://github/knightliao/disconf ,Start数4505,社区活跃度一般

开源厂商

原百度员工,现在蚂蚁金服

产品特点

成功案例

百度、滴滴出行、顺丰、网易等,更多公司详见s://github/knightliao/disconf

缺点

最新的版本发布于两年前,有点久了。

五、Spring Cloud Consul

GitHub地址

s://github/spring-cloud/spring-cloud-consul ,Star数493,官方组件,社区较活跃

开源厂商

Pivotal(Spring官方团队)

产品特点

成功案例

暂未发现

演示环境

暂无

缺点

六、Spring Cloud Zookeeper

GitHub地址

s://github/spring-cloud/spring-cloud-zookeeper ,Star数330,官方组件,社区较活跃

开源厂商

Pivotal(Spring官方团队)

产品特点

演示环境

暂无

成功案例

暂未发现

缺点

其他

如果使用的是Spring Cloud Kubernetes,或者将Spring Cloud应用部署在Kubernetes环境中,还可以选择ConfigMap,这种方式就笔者了解,业界这么玩的还不多,暂时不分析了。已经将Spring Cloud Kubernetes列入博客19年更新名单中了,敬请期待。

结论