目標(biāo)
- 了解Hyperledger Fabric對(duì)Peer節(jié)點(diǎn)的核心配置信息
- 了解Hyperledger Fabric對(duì)orderer節(jié)點(diǎn)的核心配置信息
任務(wù)實(shí)現(xiàn)
在Hyperledger Fabric中凑队, 有兩個(gè)示例配置文件裤园,一個(gè)為Peer節(jié)點(diǎn)的示例配置文件帜乞,一個(gè)為Orderer節(jié)點(diǎn)的示例配置文件,理解這兩個(gè)配置文件的內(nèi)容對(duì)于我們而言抢野,會(huì)更進(jìn)一步的理解Hyperledger Fabric運(yùn)行狀況。
2.2.1 core.yaml詳解
core.yaml配置文件是Peer節(jié)點(diǎn)的示例配置文件,具體路徑在 fabric-samples/config 目錄下馍悟;該core.yaml示例配置文件中共指定了六大部分內(nèi)容柠衍,詳見(jiàn)解釋如下洋满。
在Fabirc源碼中的路徑為:
$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/core.yaml
2.2.1.1 日志部分:
日志記錄級(jí)別有六種:CRITICAL | ERROR | WARNING | NOTICE | INFO | DEBUG
使用 level 指定默認(rèn)所有模塊為 info
級(jí)別,然后單獨(dú)指定 cauthdsl珍坊、gossip牺勾、grpc、ledger阵漏、msp驻民、policies、peer 的 gossip 模塊的日志級(jí)別履怯,以覆蓋默認(rèn)的日志級(jí)別回还。
format屬性指定了日志的輸出格式。
logging:
level: info # 全局的日志級(jí)別
# 單獨(dú)模塊的日志級(jí)別叹洲,覆蓋全局日志級(jí)別
cauthdsl: warning
gossip: warning
grpc: error
ledger: info
msp: warning
policies: warning
peer:
gossip: warning
format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
2.2.1.2 peer部分:
peer部分是 Peer 服務(wù)的核心配置內(nèi)容柠硕,包括 Peer 的基礎(chǔ)服務(wù)部分、gossip 部分运提、event蝗柔、tls、BCCSP 等相關(guān)配置信息
peer:
id: jdoe # 指定節(jié)點(diǎn)ID
networkId: dev # 指定網(wǎng)絡(luò)ID
listenAddress: 0.0.0.0:7051 #偵聽(tīng)本地網(wǎng)絡(luò)接口上的地址民泵。默認(rèn)監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口
#偵聽(tīng)入站鏈碼連接的端點(diǎn)癣丧。如果被注釋?zhuān)瑒t選擇偵聽(tīng)地址端口7052的對(duì)等點(diǎn)地址
# chaincodeListenAddress: 0.0.0.0:7052
# 此peer的鏈碼端點(diǎn)用于連接到peer。如果沒(méi)有指定栈妆,則選擇chaincodeListenAddress地址胁编。
# 如果沒(méi)有指定chaincodeListenAddress,則從其中選擇address
# chaincodeAddress: 0.0.0.0:705
address: 0.0.0.0:7051 # 節(jié)點(diǎn)對(duì)外的服務(wù)地址
addressAutoDetect: false # 是否自動(dòng)探測(cè)對(duì)外服務(wù)地址
gomaxprocs: -1 # 進(jìn)程數(shù)限制签钩,-1代表無(wú)限制
# Peer服務(wù)與Client的設(shè)置
keepalive:
# 指定客戶(hù)機(jī)ping的最小間隔掏呼,如果客戶(hù)端頻繁發(fā)送ping,Peer服務(wù)器會(huì)自動(dòng)斷開(kāi)
minInterval: 60s
client: # 客戶(hù)端與Peer的通信設(shè)置
# 指定ping Peer節(jié)點(diǎn)的間隔時(shí)間铅檩,必須大于或等于 minInterval 的值
interval: 60s
timeout: 20s # 在斷開(kāi)peer節(jié)點(diǎn)連接之前等待的響應(yīng)時(shí)間
deliveryClient: # 客戶(hù)端與Orderer節(jié)點(diǎn)的通信設(shè)置
# 指定ping orderer節(jié)點(diǎn)的間隔時(shí)間憎夷,必須大于或等于 minInterval 的值
interval: 60s
timeout: 20s # 在斷開(kāi)Orderer節(jié)點(diǎn)連接之前等待的響應(yīng)時(shí)間
gossip: # gossip相關(guān)配置
bootstrap: 127.0.0.1:7051 # 啟動(dòng)后的初始節(jié)點(diǎn)
useLeaderElection: true # 是否指定使用選舉方式產(chǎn)式Leader
orgLeader: false # 是否指定當(dāng)前節(jié)點(diǎn)為L(zhǎng)eader
endpoint:
maxBlockCountToStore: 100 # 保存在內(nèi)存中的最大區(qū)塊
maxPropagationBurstLatency: 10ms #消息連續(xù)推送之間的最大時(shí)間(超過(guò)則觸發(fā),轉(zhuǎn)發(fā)給其它節(jié)點(diǎn))
maxPropagationBurstSize: 10 # 消息的最大存儲(chǔ)數(shù)量昧旨,直到推送被觸發(fā)
propagateIterations: 1 # 將消息推送到遠(yuǎn)程Peer節(jié)點(diǎn)的次數(shù)
propagatePeerNum: 3 # 選擇推送消息到Peer節(jié)點(diǎn)的數(shù)量
pullInterval: 4s # 拉取消息的時(shí)間間隔
pullPeerNum: 3 # 從指定數(shù)量的Peer節(jié)點(diǎn)拉取
requestStateInfoInterval: 4s # 確定從Peer節(jié)點(diǎn)提取狀態(tài)信息消息的頻率(單位:秒)
publishStateInfoInterval: 4s # 確定將狀態(tài)信息消息推送到Peer節(jié)點(diǎn)的頻率
stateInfoRetentionInterval: # 狀態(tài)信息的最長(zhǎng)保存時(shí)間
publishCertPeriod: 10s # 啟動(dòng)后包括證書(shū)的等待時(shí)間
skipBlockVerification: false # 是否應(yīng)該跳過(guò)區(qū)塊消息的驗(yàn)證
dialTimeout: 3s # 撥號(hào)的超時(shí)時(shí)間
connTimeout: 2s # 連接超時(shí)時(shí)間
recvBuffSize: 20 # 接收到消息的緩存區(qū)大小
sendBuffSize: 200 # 發(fā)送消息的緩沖區(qū)大小
digestWaitTime: 1s # 處理摘要數(shù)據(jù)的等待時(shí)間
requestWaitTime: 1500ms # 處理nonce之前等待的時(shí)間
responseWaitTime: 2s # 終止拉取數(shù)據(jù)處理的等待時(shí)間
aliveTimeInterval: 5s # 心跳檢查間隔時(shí)間
aliveExpirationTimeout: 25s # 心跳消息的超時(shí)時(shí)間
reconnectInterval: 25s # 重新連接的間隔時(shí)間
externalEndpoint: # 組織外的端點(diǎn)
election: # 選舉Leader配置
startupGracePeriod: 15s # 最長(zhǎng)等待時(shí)間
membershipSampleInterval: 1s # 檢查穩(wěn)定性的間隔時(shí)間
leaderAliveThreshold: 10s # 進(jìn)行選舉的間隔時(shí)間
leaderElectionDuration: 5s # 聲明自己為L(zhǎng)eader的等待時(shí)間
pvtData: # 私有數(shù)據(jù)配置
# 嘗試從peer節(jié)點(diǎn)中提取給定塊對(duì)應(yīng)的私有數(shù)據(jù)的最大持續(xù)時(shí)間
pullRetryThreshold: 60s
# 當(dāng)前分類(lèi)帳在提交時(shí)的高度之間的最大差異
transientstoreMaxBlockRetention: 1000
pushAckTimeout: 3s # 等待每個(gè)對(duì)等方確認(rèn)的最大時(shí)間
# 用作緩沖器拾给;防止peer試圖獲取私有數(shù)據(jù)來(lái)自即將在接下來(lái)的N個(gè)塊中被清除的對(duì)等節(jié)點(diǎn)
btlPullMargin: 10
events:
address: 0.0.0.0:7053 # 指定事件服務(wù)的地址
buffersize: 100 # 可以在不阻塞發(fā)送的情況下緩沖的事件總數(shù)
# 將事件添加到一個(gè)完整的緩沖區(qū)時(shí)要阻塞多長(zhǎng)時(shí)間
# 如果小于0祥得,直接丟棄
# 如果等于0,事件被添加至緩沖區(qū)并發(fā)出
# 如果大于0蒋得,超時(shí)還未發(fā)出則丟棄
timeout: 10ms
# 在注冊(cè)事件中指定的時(shí)間和客戶(hù)端時(shí)間之間的差異
timewindow: 15m
keepalive: # peer服務(wù)器與客戶(hù)端的實(shí)時(shí)設(shè)置
minInterval: 60s # 允許客戶(hù)端向peer服務(wù)器發(fā)送ping的最小間隔時(shí)間
sendTimeout: 60s # GRPC向客戶(hù)端發(fā)送事件的超時(shí)時(shí)間
tls: # TLS設(shè)置
enabled: false # 是否開(kāi)啟服務(wù)器端TLS
# 是否需要客戶(hù)端證書(shū)(沒(méi)有配置使用證書(shū)的客戶(hù)端不能連接到對(duì)等點(diǎn))
clientAuthRequired: false
cert: # TLS服務(wù)器的X.509證書(shū)
file: tls/server.crt
key: # TLS服務(wù)器(需啟用clientAuthEnabled的客戶(hù)端)的簽名私鑰
file: tls/server.key
rootcert: # 可信任的根CA證書(shū)
file: tls/ca.crt
clientRootCAs: # 用于驗(yàn)證客戶(hù)端證書(shū)的根證書(shū)
files:
- tls/ca.crt
clientKey: # 建立客戶(hù)端連接時(shí)用于TLS的私鑰级及。如果沒(méi)有設(shè)置將使用peer.tls.key
file:
clientCert: # 建立客戶(hù)端連接時(shí)用于TLS的證書(shū)。如果沒(méi)有設(shè)置將使用peer.tls.cert
file:
authentication: # 與身份驗(yàn)證相關(guān)的配置
timewindow: 15m # 當(dāng)前服務(wù)器時(shí)間與客戶(hù)端請(qǐng)求消息中指定的客戶(hù)端時(shí)間差異
fileSystemPath: /var/hyperledger/production # 文件存儲(chǔ)路徑
BCCSP: # 區(qū)塊鏈加密實(shí)現(xiàn)
Default: SW # 設(shè)置SW為默認(rèn)加密程序
SW: # SW加密配置(如果默認(rèn)為SW)
Hash: SHA2 # 默認(rèn)的哈希算法和安全級(jí)別
Security: 256 #
FileKeyStore: # 密鑰存儲(chǔ)位置
# 如果為空额衙,默認(rèn)為'mspConfigPath/keystore'
KeyStore:
PKCS11: # PKCS11加密配置(如果默認(rèn)為PKCS11)
Library: # PKCS11模塊庫(kù)位置
Label: # 令牌Label
Pin:
Hash:
Security:
FileKeyStore:
KeyStore:
# MSP配置路徑饮焦,peer根據(jù)此路徑找到MSP本地配置
mspConfigPath: msp
localMspId: SampleOrg #本地MSP的標(biāo)識(shí)符
client: # CLI客戶(hù)端配置選項(xiàng)
connTimeout: 3s # 連接超時(shí)
deliveryclient: # 訂購(gòu)服務(wù)相關(guān)的配置
reconnectTotalTimeThreshold: 3600s # 嘗試重新連接的總時(shí)間
connTimeout: 3s # 訂購(gòu)服務(wù)節(jié)點(diǎn)連接超時(shí)
reConnectBackoffThreshold: 3600s # 最大延遲時(shí)間
localMspType: bccsp # 本地MSP類(lèi)型(默認(rèn)情況下,是bccsp類(lèi)型)
# 僅在非生產(chǎn)環(huán)境中與Go分析工具一起使用窍侧。在生產(chǎn)中县踢,它應(yīng)該被禁用
profile:
enabled: false
listenAddress: 0.0.0.0:6060
# 用于管理操作,如控制日志模塊的嚴(yán)重程度等伟件。只有對(duì)等管理員才能使用該服務(wù)
adminService:
# 定義處理程序可以過(guò)濾和自定義處理程序在對(duì)等點(diǎn)內(nèi)傳遞的對(duì)象
handlers:
authFilters:
-
name: DefaultAuth
-
name: ExpirationCheck
decorators:
-
name: DefaultDecorator
endorsers:
escc:
name: DefaultEndorsement
library:
validators:
vscc:
name: DefaultValidation
library:
# 并行執(zhí)行事務(wù)驗(yàn)證的goroutines的數(shù)量(注意重寫(xiě)此值可能會(huì)對(duì)性能產(chǎn)生負(fù)面影響)
validatorPoolSize:
# 客戶(hù)端使用發(fā)現(xiàn)服務(wù)查詢(xún)關(guān)于對(duì)等點(diǎn)的信息
# 例如——哪些同行加入了某個(gè)頻道硼啤,最新消息是什么通道配置
# 最重要的是——給定一個(gè)鏈碼和通道,什么可能的對(duì)等點(diǎn)集滿(mǎn)足背書(shū)政策
discovery:
enabled: true
authCacheEnabled: true
authCacheMaxSize: 1000
authCachePurgeRetentionRatio: 0.75
orgMembersAllowedAccess: false
2.2.1.3 vm部分:
對(duì)鏈碼運(yùn)行環(huán)境的配置斧账,目前主要支持 Docker
容器
vm:
endpoint: unix:///var/run/docker.sock # vm管理系統(tǒng)的端點(diǎn)
docker: # 設(shè)置docker
tls:
enabled: false
ca:
file: docker/ca.crt
cert:
file: docker/tls.crt
key:
file: docker/tls.key
attachStdout: false # 啟用/禁用鏈碼容器中的標(biāo)準(zhǔn)out/err
# 創(chuàng)建docker容器的參數(shù)
# 使用用于集群的ipam和dns-server可以有效地創(chuàng)建容器設(shè)置容器的網(wǎng)絡(luò)模式
# 支持標(biāo)準(zhǔn)值是:“host”(默認(rèn))谴返、“bridge”、“ipvlan”咧织、“none”
# Dns -供容器使用的Dns服務(wù)器列表
#注:'Privileged'嗓袱、'Binds'、'Links'和'PortBindings'屬性不支持Docker主機(jī)配置拯爽,設(shè)置后將不使用
hostConfig:
NetworkMode: host
Dns:
# - 192.168.0.1
LogConfig:
Type: json-file
Config:
max-size: "50m"
max-file: "5"
Memory: 2147483648
2.2.1.4 chaincode部分:
與鏈碼相關(guān)的配置
chaincode:
id:
path:
name:
# 通用構(gòu)建器環(huán)境索抓,適用于大多數(shù)鏈代碼類(lèi)型
builder: $(DOCKER_NS)/fabric-ccenv:latest
# 在用戶(hù)鏈碼實(shí)例化過(guò)程中啟用/禁用基本docker鏡像的拉取
pull: false
golang: # golang的baseos
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
dynamicLink: false # 是否動(dòng)態(tài)鏈接golang鏈碼
car:
# 平臺(tái)可能需要更多的擴(kuò)展工具(JVM等)。目前毯炮,只能使用baseos
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
java:
# 用于Java鏈代碼運(yùn)行時(shí)逼肯,基于java:openjdk-8和加法編譯器的鏡像
Dockerfile: |
from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-1.1.0
node:
# js引擎在運(yùn)行時(shí),指定的baseimage(不是baseos)
runtime: $(BASE_DOCKER_NS)/fabric-baseimage:$(ARCH)-$(BASE_VERSION)
startuptimeout: 300s # 啟動(dòng)超時(shí)時(shí)間
executetimeout: 30s # 調(diào)用和Init調(diào)用的超時(shí)持續(xù)時(shí)間
mode: net # 指定模式(dev桃煎、net兩種)
keepalive: 0 # Peer和鏈碼之間的心跳超時(shí)篮幢,值小于或等于0會(huì)關(guān)閉
system: # 系統(tǒng)鏈碼白名單
cscc: enable
lscc: enable
escc: enable
vscc: enable
qscc: enable
systemPlugins: # 系統(tǒng)鏈碼插件:
logging: # 鏈碼容器的日志部分
level: info
shim: warning
format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
2.2.1.5 ledger部分:
分類(lèi)帳的配置信息。
ledger:
blockchain:
state:
stateDatabase: goleveldb # 指定默認(rèn)的狀態(tài)數(shù)據(jù)庫(kù)
couchDBConfig: # 配置couchDB信息
couchDBAddress: 127.0.0.1:5984 # 監(jiān)聽(tīng)地址
username:
password:
maxRetries: 3 # 重新嘗試CouchDB錯(cuò)誤的次數(shù)
maxRetriesOnStartup: 10 # 對(duì)等啟動(dòng)期間對(duì)CouchDB錯(cuò)誤的重試次數(shù)
requestTimeout: 35s # 對(duì)等啟動(dòng)期間對(duì)CouchDB錯(cuò)誤的重試次數(shù)
queryLimit: 10000 # 限制每個(gè)查詢(xún)返回的記錄數(shù)量
maxBatchUpdateSize: 1000 # 限制每個(gè)CouchDB批量更新的記錄數(shù)量
# 值為1時(shí)將在每次提交塊后對(duì)進(jìn)行索引
# 增加值可以提高peer和CouchDB的寫(xiě)效率为迈,但是可能會(huì)降低查詢(xún)響應(yīng)時(shí)間
warmIndexesAfterNBlocks: 1
history:
enableHistoryDatabase: true # 是否開(kāi)啟歷史數(shù)據(jù)庫(kù)
2.2.1.6 metrics部分:
metrics:
enabled: false # 啟用或禁用metrics服務(wù)器
# 當(dāng)啟用metrics服務(wù)器時(shí)
# 必須使用特定的metrics報(bào)告程序類(lèi)型當(dāng)前支持的類(lèi)型:“statsd”三椿、“prom”
reporter: statsd
interval: 1s # 確定報(bào)告度量的頻率
statsdReporter:
address: 0.0.0.0:8125 # 要連接的statsd服務(wù)器地址
flushInterval: 2s # 確定向statsd服務(wù)器推送指標(biāo)的頻率
# 每個(gè)push metrics請(qǐng)求的最大字節(jié)數(shù) #內(nèi)部網(wǎng)推薦1432,互聯(lián)網(wǎng)推薦512
flushBytes: 1432
promReporter:
listenAddress: 0.0.0.0:8080 # http服務(wù)器監(jiān)聽(tīng)地址
2.2.2 orderer.yaml詳解
orderer.yaml
配置文件是 Orderer 節(jié)點(diǎn)的示例配置文件葫辐,具體路徑在 fabric-samples/config
目錄下搜锰;該 orderer.yaml 示例配置文件中共指定了五大部分內(nèi)容,詳細(xì)解釋見(jiàn)如下內(nèi)容耿战。
在 Fabirc 源碼中的路徑為:
$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml
該 orderer.yaml
示例配置文件中共指定了五大部分內(nèi)容:
2.2.2.1 General部分:
General:
LedgerType: file # 指定賬本類(lèi)型(可選file蛋叼、RAM、json三種)
ListenAddress: 127.0.0.1 # 監(jiān)聽(tīng)地址
ListenPort: 7050 # 監(jiān)聽(tīng)端口號(hào)
TLS: # GRPC服務(wù)器的TLS設(shè)置
Enabled: false # 默認(rèn)不啟用
PrivateKey: tls/server.key # 簽名的私鑰文件
Certificate: tls/server.crt # 證書(shū)文件
RootCAs: # 可信任的根CA證書(shū)
- tls/ca.crt
ClientAuthRequired: false
ClientRootCAs:
Keepalive: # GRPC服務(wù)器的激活設(shè)置
ServerMinInterval: 60s # 客戶(hù)機(jī)ping之間的最小允許時(shí)間
ServerInterval: 7200s # 連接到客戶(hù)機(jī)的ping之間的時(shí)間
ServerTimeout: 20s # 服務(wù)器等待響應(yīng)的超時(shí)時(shí)間
LogLevel: info
LogFormat: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
GenesisMethod: provisional # 生成初始區(qū)塊的提供方式(可選provisional、file兩種)
GenesisProfile: SampleInsecureSolo # 用于動(dòng)態(tài)生成初始區(qū)塊的概要
GenesisFile: genesisblock # 生成初始區(qū)塊的配置文件
LocalMSPDir: msp # 本地MSP目錄
LocalMSPID: SampleOrg # MSP ID
Profile: # 是否為Go“profiling”配置啟用HTTP服務(wù)
Enabled: false
Address: 0.0.0.0:6060
BCCSP: # 區(qū)塊鏈加密實(shí)現(xiàn)
Default: SW # 默認(rèn)使用SW
SW:
Hash: SHA2
Security: 256
FileKeyStore:
KeyStore:
Authentication: # 與身份驗(yàn)證相關(guān)的配置
TimeWindow: 15m # # 當(dāng)前服務(wù)器時(shí)間與客戶(hù)端請(qǐng)求消息中指定的客戶(hù)端時(shí)間差異
2.2.2.2 FileLedger部分:
文件賬本配置信息
FileLedger:
Location: /var/hyperledger/production/orderer # 區(qū)塊存儲(chǔ)路徑
Prefix: hyperledger-fabric-ordererledger # 在臨時(shí)空間中生成分類(lèi)目錄時(shí)使用的前綴
2.2.2.3 RAMLedger部分:
內(nèi)存賬本配置信息
RAMLedger:
HistorySize: 1000 # 如果設(shè)置為保存在內(nèi)存中狈涮,分類(lèi)帳最大保留的塊的數(shù)量
2.2.2.4 Kafka部分:
Kafka 集群的配置信息
Kafka:
Retry: # 無(wú)法建立到Kafka集群的連接時(shí)的重試請(qǐng)求
ShortInterval: 5s # 重試時(shí)間間隔
ShortTotal: 10m # 重試的總時(shí)間
LongInterval: 5m # 重試失敗后再次發(fā)送重試的時(shí)間間隔
LongTotal: 12h # 重試的最長(zhǎng)總時(shí)間
NetworkTimeouts: # 網(wǎng)絡(luò)超時(shí)設(shè)置
DialTimeout: 10s
ReadTimeout: 10s
WriteTimeout: 10s
Metadata: # 請(qǐng)求領(lǐng)導(dǎo)人選舉時(shí)影響元數(shù)據(jù)的設(shè)置
RetryBackoff: 250ms # 指定重試的最大時(shí)間
RetryMax: 3 # 重試的最大次數(shù)
Producer: # 向Kafka集群發(fā)送消息失敗的設(shè)置
RetryBackoff: 100ms # 指定重試的最大時(shí)間
RetryMax: 3 # 重試的最大次數(shù)
Consumer: # 向Kafka集群讀取消息失敗的設(shè)置
RetryBackoff: 2s # 指定重試的最大時(shí)間
Verbose: false # 是否為與Kafka集群的交互啟用日志記錄
TLS: # Orderer連接到Kafka集群的TLS設(shè)置
Enabled: false # 連接到Kafka集群時(shí)是否使用TLS
PrivateKey:
Certificate:
RootCAs:
Version: # Kafka版本(未指定默認(rèn)值為0.10.2.0)
2.2.2.5 Debug部分:
調(diào)試配置信息
Debug:
BroadcastTraceDir: # 對(duì)廣播服務(wù)的每個(gè)請(qǐng)求寫(xiě)入此目錄中的文件
DeliverTraceDir: # 對(duì)交付服務(wù)的每個(gè)請(qǐng)求寫(xiě)入此目錄中的文件
FAQ
-
這些配置文件的內(nèi)容需要全部都記下嗎狐胎?
不需要死記硬背,重要的是理解這些配置信息都指定的什么重要內(nèi)容歌馍。