您现在的位置是: 首页 > 汽车技术 汽车技术
apollo 配置中心_apollo配置中心文档
tamoadmin 2024-09-14 人已围观
简介1.Disconf原理及分布式配置中心的一般实现思路2.消息传输推与拉的比较3.微服务注册中心Consul转Nacos实践4.微服务架构系列之–最全配置中心对比(面试随便装)k8s cronjob 启动顺序如下:在K8S部署中,有时候容器启动顺序因为我们业务需要是有要求的,比如业务服务可能需要在 配置中心、注册的中心 启动后才启动。通过 initContainer 来阻塞启动,如下以业务服务需要在
1.Disconf原理及分布式配置中心的一般实现思路
2.消息传输推与拉的比较
3.微服务注册中心Consul转Nacos实践
4.微服务架构系列之–最全配置中心对比(面试随便装)
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年更新名单中了,敬请期待。
结论