首页 > 其他分享 >微服务配置中心Nacos

微服务配置中心Nacos

时间:2022-08-30 22:23:39浏览次数:50  
标签:服务 配置文件 配置 Nacos nacos 8848 json

1.什么是配置中心?

例如传统的framwork中web.congfig、winform中的app.config、NetCore下的appsettings.json 这些都是应用程序的配置文件,配置的作用其实简单来说,就是用来动态修改程序执行状态的一种机制。
那么什么是配置中心呢?

其实配置中心常用在微服务架构中,微服务为了高并发、高可用通常是采用多实例、集群部署我们先思考一个问题,每个微服务实例都有一个配置文件,那么多个微服务实例是不是有多个相同配置文件,夸张一点(我们排除掉各种环境不同的配置这一个点),假设我们有50个微服务运行在不同的服务器上,我们某天需要修改其中某个微服务的配置项该怎么做?

通常我能想到的是修改一个配置文件,然后复制粘贴到每个微服务中去,或者最坏的做法就是:

一个一个改,我敢相信如果这样,最起码要花费半天时间,而且不一定对

所以我们会想到,我们将所有的配置文件合成一个,放在某个目录,然后所有的服务都访问这个目录下的配置是不是也可行呢?思路没错,确实是这样,针对这个思想有了配置中心的诞生,它主要解决了如下问题:

  1. 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。
  2. 时效性:修改配置,需要重启服务才能生效。
  3. 局限性:无法支持动态调整:例如日志开关、功能开关。

其实最重要的一点莫过于省事,正确性,我只需要改一个地方就好了,所有的服务都可用,用专业的话说就是提高可维护性和生产力,从开始的半天时间,缩短到目前的1分钟。

2.常用的配置中心有哪些?

目前常用的配置中心有很多,例如

Spring Cloud Config

Apollo

Nacos

甚至作为服务发现的Consul也可以,但是Consul它的重心并不是针对配置这一块

我们目前只介绍Nacos,至于其他的有机会后面会逐一介绍,对于Nacos就不做过多带有修饰的一些解释了,它是由阿里使用Java开发。随便打开Google、百度或者知乎,回答的一大堆我觉得在开始学习一门技术的时候,目前首先是知道它是做什么的,怎么用,等在脑海中有了大概的概念、然后再深入研究其中的一些知识点这样效率可能高一些。

3.如何使用Nacos
1.安装nacos

1.首先需要安装Nacos, 我们采用Docker部署的方式,因为windows太麻烦了,还要手动安装jdk

docker pull nacos/nacos-server

2.启动Nacos,端口8848映射内部端口也是8848

docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server

3.访问http://localhost:8848/nacos进入Nacos主界面,账号密码都为nacos

2.配置nacos

4.点击添加配置文件,选择json,然后将项目中的appsettings.json拷贝到文本框中,点击发布

5.然后在应用程序中安装Nacos的.Net 驱动程序,Nuget下载 nacos-sdk-csharp.Extensions.Configuration

6.配置应用程序,在程序启动的Program类中添加nacos的配置

internal static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(build =>
        {
            build.AddJsonFile("appsettings.secrets.json", optional: true);
			//添加nacos配置,配置读取节点
            var configuration = build.Build();
            build.AddNacosV2Configuration(configuration.GetSection("Nacos"));
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .UseAutofac()
        .UseSerilog();

7.在appsetting.json中加入Nacos配置节点

 "Nacos": {
    "Namespace": "", // Please set the value of Namespace ID !!!!!!!!
    "ServerAddresses": [ "http://localhost:8848/" ],
    "UserName": "nacos",
    "Password": "nacos",
    "AccessKey": "",
    "SecretKey": "",
    "ConfigUseRpc": false,
    "NamingUseRpc": false,
    "Listeners": [  
      {  //监听 支持热更新,多个监听在数组中加入多个对象
        "Optional": false,
        "DataId": "appsettings.json",
        "Group": "DEFAULT_GROUP"
      }]
}

8.在应用程序中注入 IConfiguration 接口就可以读取配置

 public IConfiguration _configuration { set; get; }

 [HttpGet("{id}")]
 public async Task<TestDto> GetAsync(Guid id)
 {
      //测试读取
      string nacosStr = _configuration["TestStr"];
      return await Task.FromResult(new TestDto());
 }

Nacos支持热更新,能接收到实时的变更或新增删除配置,主要的实现原理是发布订阅机制,我们只需要在配置中加入监听就可以了,如果一个项目中包含多个配置文件,最后一个配置会覆盖相同的配置,和注册顺序有关

标签:服务,配置文件,配置,Nacos,nacos,8848,json
From: https://www.cnblogs.com/yuxl01/p/16609063.html

相关文章

  • Shopify主题Lorenza模板配置修改
    Lorenza是为时尚零售商提供的一个精品shopify主题,有了一个大型的导航和先进的产品过滤,Lorenza现在非常适合大中型产品目录。Lorenza背后的指导思想是使用不对称性和编辑功......
  • SpringBoot配置文件application
    原文链接Map配置YML配置文件:sys-num:mymap:"{'a':'aaa','b':'bbb'}"方法内:publicclasslearnMap{@Value("#{${sys-num.mymap}}")privateMap<Strin......
  • Git 服务部署
    Git服务部署一、Git,Github,Gitlab的区别Git是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。GitHub是在线的机......
  • 一次服务器被入侵的处理过程分享
    下文中的,给文件和目录加锁,是指给文件和目录增加了一些属性,只读等。chattr+ia目录一、服务器入侵现象二、服务器排查和处理2.1、服务器被入侵的可能原因2.2、排查和......
  • 一文快速上手 Nacos 注册中心+配置中心!
    SpringCloudAlibaba是阿里巴巴提供的一站式微服务开发解决方案,目前已被SpringCloud官方收录。而Nacos作为SpringCloudAlibaba的核心组件之一,提供了两个非常重......
  • 网络配置
    目录基本网络配置网络配置命令网络配置方式ifconfig命令route命令基本网络配置Linux主机接入网络,需要配置的网络相关设置主机名IP/netmask路由:默认网关DNS......
  • 【django学习-03】Django的配置文件(settings)
    Django的配置文件setting.py用于配置整个网站的环境和功能,核心配置必须有项目路径、秘钥配置、域名访问权限、APP列表、中间件、资源文件、模板配置、数据库的链接方式等......
  • java_4_下载安装配置环境变量
    下载安装:去官网下载所需版本,按照程序引导的步骤安装即可配置环境变量:1.鼠标右击我的电脑>属性>高级系统变量>环境变量2.在环境变量模块新增一个系统变量: 3.在变量Pat......
  • 中台服务分层架构
      1、接口适配层:方式一:动态调用RPC数据服务方式二:基于策略模式,动态加载dll实现,例如 ///<summary>///获得广告位置列表///</summary>......
  • Linux的NFS的配置
    快速代码#nfs的Server配置文件和配置方法echo'/newnfs192.168.3.*rw,sync,no_root_squash)'>>/etc/exports#根目录新建文件夹,权限777mkdir/newnfs&&chmod77......