在linux服务器中,基础的组件:节点发现(etcd)、负载均衡、数据编解码、压缩、主题订阅、数据持久化。其中数据编解码常用的有xml、json、yaml、protobuf、cbor。
常用的数据编解码格式:
- xml是以标签为中心的数据编码结构
- json是以弱标签为中心的数据编码结构
- yaml是以弱数据为中心的数据编码结构
- protobuf是以强数据为中心的数据编码结果
- cbor是超强数据为中心的数据编码结构
本文讲其中的yaml结构。
基本语法:
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- '#'标识注释,从这个字符一直到行尾,都会被解释器忽略
yaml 支持的数据结构
- 对象:键值对的集合,又称为映射(mapping)/哈希(hasher)/字典(directionary)
- 数组:一组按次序排列的值,又成为序列(sequence)/列表(list)
- 纯量(scalars): 单个的,不可再分的值
1、对象类型。是一组键值对,使用冒号结构表示:
name: jack
age: 18
2、对象嵌套:
格式1(在同一行):
hash: {name: jack, age: 18}
格式2 (在不同行):
hash:
name: jack
age: 18
3、数组类型。一组连词线(’-’)开头的行,构成一个数组:
格式1:
animal: [cat, dog]
格式2:
animal
- cat
- dog
4、复合结构:在一个配置文件中,对象、数组可以同时使用:
languages:
- ruby
- golang
- python
websites:
YAML: yaml.org
GOLANG: golang.org.x
Python: python.org
5、纯量:
纯量是最基本的,不可再分的值,纯量举例:
1 字符串
str1: 单行字符串
str2: '包含空格或特殊符号 的字符串:'
# 字符串可以写在多行内,从第二行开始,每一行的开头必须缩进一个空格,换行符会被转换为空格
str3: 字符串str3部分1
字符串str3部分2
字符串str3部分3
# 多行字符串,可以使用'|'保留换行符号,或使用'>'符号折叠换行符
language: |
Golang
c++
python
shell
language-1: >
java
nodejs
c
# '+'表示保留文字块末尾的换行符号,'-'表示删除字符末尾的换行符
lan1: |
Golang
lan2: |+
Golang
lan3: |-
Golang
2 布尔值
IfPull: true
3 整数
count: 100
4 浮点数
number: 100.01
5 NULL
parent: ~
6 时间
time_start: 2022.1.17-16t22:30:00.11-06:59
7 日期
date: 2022-01-17