zoukankan      html  css  js  c++  java
  • 配置中心--参考文档

    配置中心

    什么是配置中心

    配置是用来动态修改程序执行的一种行为的机制

    为什么要使用配置中心

    安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。 时效性:修改配置,需要重启服务才能生效。 局限性:无法支持动态调整:例如日志开关、功能开关。 因此,分布式配置中心应运而生!

    配置中心类型方式

    Apollo,java开发 ----- 运维成本比高

    Apollo分为MySQL,Config Service,Admin Service,Portal四个模块,MySQL存储Apollo元数据和用户配置数据; Config Service提供配置的读取、推送等功能,客户端请求都是落到Config Service上; Admin Service提供配置的修改、发布等功能,Portal操作的服务就是Admin Service; Portal提供给用户配置管理界面;功能强大,社区活跃,但较为复杂,部署组件较多,运维成本比高

    Consul, go开发

    依赖:不依赖其他组件 应用内/外:属于外部应用,侵入性小 ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul不可用。 版本迭代:目前仍然进行版本迭代 集成支持:支持SpringCloud K8S集成 访问协议:HTTP/DNS 雪崩保护:不支持雪崩保护 集成:SpringCloud集成,K8S集成

    自动注销实例:不支持 界面:英文界面,不符合国人习惯 上手:复杂一点

    Nacos,依赖:mysql -----

    依赖:mysql 应用内/外:属于外部应用,侵入性小 ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍) 版本迭代:目前仍然进行版本迭代,最近的提交是几天前 集成支持:支持Dubbo 、SpringCloud、K8S集成 访问协议:HTTP/动态DNS/UDP 雪崩保护:支持雪崩保护

    Spring cloud config java开发 ----- Net支持比较差

    自动注销实例:支持 界面:国产服务,中文界面,符合国人习惯 上手:极易,中文文档,案例,社区活跃 Consul实际上是和Nacos比较相似的产品,虽然Consul目前的主要发展方向放在了Service Mesh,但是Consul最初支持的服务发现和配置管理,也是Nacos的两大功能。虽然Nacos在Consul之后以与之相似的部署架构开源,但这并不意味着Nacos在功能和架构上也模仿Consul,Nacos的架构和功能是由阿里巴巴内部十年的运行演进经验得来,所以二者的比较也一定会让大家更加了解他们的定位和演进方向是完全不一样的。

    微服务中如何使用Consul配置中心

    Consul配置中心下载地址

    consul地址已经使用过

    Consul做配置中心运行原理

    见图

    Consul使用单服务单配置

    条件

    1、团队微服务体系

    2、Consul

    步骤

    1、MicroService.Core 项目中Nuget下载Winton.Extensions.Configuration.Consul

    2、配置文件中配置consul地址

    "Consul_Url": "http://127.0.0.1:8500",

    3、Program文件中配置

    public static IHostBuilder CreateHostBuilder(string[] args) =>
              Host.CreateDefaultBuilder(args)
                  .ConfigureWebHostDefaults(webBuilder =>
                  {
                      webBuilder.UseStartup<Startup>();
                      webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                      {

                          // 加载默认配置信息到Configuration
      hostingContext.Configuration = config.Build();
                          // 加载consul配置中心配置
                          string consul_url = hostingContext.Configuration["Consul_Url"];
                          Console.WriteLine($"consul_url:{consul_url}");
                          config.AddConsul(
                                      "appsettings.json",
                                      options =>
                                      {
                                          options.ConsulConfigurationOptions = cco => { cco.Address = new Uri(consul_url); }; // 1、consul地址
                                          options.Optional = true; // 2、配置选项
                                          options.ReloadOnChange = true; // 3、配置文件更新后重新加载
                                          options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; // 4、忽略异常
                                      }
                                      );
                           
                              hostingContext.Configuration = config.Build(); // 5、consul中加载的配置信息加载到Configuration对象,然后通过Configuration 对象加载项目中
                      });
                  });

    4、动态加载配置信息

    app.UseEndpoints(endpoints =>
              {
                  endpoints.MapGet("/", async context =>
                  {
                      await context.Response.WriteAsync(Configuration["Name"]);
                  });
              });

    Consul使用多服务单配置

    条件

    1、Consul

    2、微服务系统

    步骤

    1、MicroService.Core 项目中Nuget下载Winton.Extensions.Configuration.Consul

    2、配置文件中配置consul地址

    "Consul_Url": "http://127.0.0.1:8500",

    3、Program文件中配置

    public static IHostBuilder CreateHostBuilder(string[] args) =>
              Host.CreateDefaultBuilder(args)
                  .ConfigureWebHostDefaults(webBuilder =>
                  {
                      webBuilder.UseStartup<Startup>();
                      webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                      {

                          // 加载默认配置信息到Configuration
      hostingContext.Configuration = config.Build();
                          // 加载consul配置中心配置
                          string consul_url = hostingContext.Configuration["Consul_Url"];
                          Console.WriteLine($"consul_url:{consul_url}");
                          // 动态加载环境信息,主要在于动态获取服务名称和环境名称
                          var env = hostingContext.HostingEnvironment;
                          config.AddConsul(
                                        $"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",
                                      options =>
                                      {
                                          options.ConsulConfigurationOptions = cco => { cco.Address = new Uri(consul_url); }; // 1、consul地址
                                          options.Optional = true; // 2、配置选项
                                          options.ReloadOnChange = true; // 3、配置文件更新后重新加载
                                          options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; // 4、忽略异常
                                      }
                                      );
                           
                              hostingContext.Configuration = config.Build(); // 5、consul中加载的配置信息加载到Configuration对象,然后通过Configuration 对象加载项目中
                      });
                  });

    4、动态加载配置信息

    app.UseEndpoints(endpoints =>
              {
                  endpoints.MapGet("/", async context =>
                  {
                      await context.Response.WriteAsync(Configuration["Name"]);
                  });
              });

    Consul使用多服务多配置

    条件

    1、Consul

    2、微服务系统

    步骤

    1、MicroService.Core 项目中Nuget下载Winton.Extensions.Configuration.Consul

    2、配置文件中配置consul地址

    "Consul_Url": "http://127.0.0.1:8500",

    3、Program文件中配置

    public static IHostBuilder CreateHostBuilder(string[] args) =>
              Host.CreateDefaultBuilder(args)
                  .ConfigureWebHostDefaults(webBuilder =>
                  {
                      webBuilder.UseStartup<Startup>();
                      webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                      {

                          // 加载默认配置信息到Configuration
      hostingContext.Configuration = config.Build();
                          // 加载consul配置中心配置
                          string consul_url = hostingContext.Configuration["Consul_Url"];
                          Console.WriteLine($"consul_url:{consul_url}");
                          // 动态加载环境信息,主要在于动态获取服务名称和环境名称
                          var env = hostingContext.HostingEnvironment;
                          config.AddConsul(
                                        $"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",
                                      options =>
                                      {
                                          options.ConsulConfigurationOptions = cco => { cco.Address = new Uri(consul_url); }; // 1、consul地址
                                          options.Optional = true; // 2、配置选项
                                          options.ReloadOnChange = true; // 3、配置文件更新后重新加载
                                          options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; // 4、忽略异常
                                      }
                                      );
                              config.AddConsul(
                                        $"{env.ApplicationName}/other.json",
                                      options =>
                                      {
                                          options.ConsulConfigurationOptions = cco => { cco.Address = new Uri(consul_url); }; // 1、consul地址
                                          options.Optional = true; // 2、配置选项
                                          options.ReloadOnChange = true; // 3、配置文件更新后重新加载
                                          options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; // 4、忽略异常
                                      }
                                      );
                           
                              hostingContext.Configuration = config.Build(); // 5、consul中加载的配置信息加载到Configuration对象,然后通过Configuration 对象加载项目中
                      });
                  });

    4、动态加载配置信息

    app.UseEndpoints(endpoints =>
                {
                    endpoints.MapGet("/", async context =>
                    {
                        await context.Response.WriteAsync(Configuration["Name"]);
                    });
                });	
    如有错误,欢迎您指出。
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    nginx 安装ab小工具方法
    ab小工具的Failed requests多的问题
    linux webbench测试高并发方法
    html5 video获取实时播放进度的方法
    html5 video获取实时播放进度的方法
    下载网站上的视频的方法
    带宽的深入理解
    redis 清除minerd进程的方法
    php 500报错解决方案
    GIT和SVN之间的五个基本区别
  • 原文地址:https://www.cnblogs.com/qingyunye/p/12904419.html
Copyright © 2011-2022 走看看