MOSN 从配置文件启动流程

启动方法

  1. mosn start -c '$CONFIG_FILE'

启动流程

1. 配置初始化

  • server config 初始化,如log path、log level。
  1. sc := config.ParseServerConfig(&serverConfig)
  • network filter 初始化,如 proxy config。
  1. nfcf := getNetworkFilter(serverConfig.NetworkFilters)
  • stream filters 初始化,如 fault inject。
  1. sfcf := getStreamFilters(serverConfig.StreamFilters)
  • cluster manager filter初始化。
  1. cmf := &clusterManagerFilter{}

2. 创建服务器

  1. srv := server.NewServer(sc, nfcf, sfcf, cmf)

3. 添加监听器

  1. if serverConfig.Listeners == nil || len(serverConfig.Listeners ) == 0 {
  2. log.Fatal("no listener found")
  3. }
  4. for _, listenerConfig := range serverConfig.Listeners {
  5. srv.AddListener(config.ParseListenerConfig(&listenerConfig))
  6. }

4. 更新 upstream cluster 信息

  1. var clusters []v2.Cluster
  2. clusterMap := make(map[string][]v2.Host)
  3. for _, cluster := range c.ClusterManager.Clusters {
  4. parsed := config.ParseClusterConfig(&cluster)
  5. clusters = append(clusters, parsed)
  6. clusterMap[parsed.Name] = config.ParseHostConfig(&cluster)
  7. }
  8. cmf.cccb.UpdateClusterConfig(clusters)
  9. for clusterName, hosts := range clusterMap {
  10. cmf.chcb.UpdateClusterHost(clusterName, 0, hosts)
  11. }

5. 开启服务

  1. srv.Start()