MOSN 从配置文件启动流程
启动方法
mosn start -c '$CONFIG_FILE'
启动流程
1. 配置初始化
- server config 初始化,如log path、log level。
sc := config.ParseServerConfig(&serverConfig)
- network filter 初始化,如 proxy config。
nfcf := getNetworkFilter(serverConfig.NetworkFilters)
- stream filters 初始化,如 fault inject。
sfcf := getStreamFilters(serverConfig.StreamFilters)
- cluster manager filter初始化。
cmf := &clusterManagerFilter{}
2. 创建服务器
srv := server.NewServer(sc, nfcf, sfcf, cmf)
3. 添加监听器
if serverConfig.Listeners == nil || len(serverConfig.Listeners ) == 0 {
log.Fatal("no listener found")
}
for _, listenerConfig := range serverConfig.Listeners {
srv.AddListener(config.ParseListenerConfig(&listenerConfig))
}
4. 更新 upstream cluster 信息
var clusters []v2.Cluster
clusterMap := make(map[string][]v2.Host)
for _, cluster := range c.ClusterManager.Clusters {
parsed := config.ParseClusterConfig(&cluster)
clusters = append(clusters, parsed)
clusterMap[parsed.Name] = config.ParseHostConfig(&cluster)
}
cmf.cccb.UpdateClusterConfig(clusters)
for clusterName, hosts := range clusterMap {
cmf.chcb.UpdateClusterHost(clusterName, 0, hosts)
}
5. 开启服务
srv.Start()