# imageStore
**Repository Path**: xiaoerbuer/image-store
## Basic Information
- **Project Name**: imageStore
- **Description**: #nacos 配置中心地址
nacos.config.server-addr = 10.8.1.78:8848
#服务启动时,使用nacos上的那个环境
nacos.config.namespace = sit
#服务在nacos上的注册名称
nacos.config.group = inteplm-main
#服务启动时,读取nacos上的哪些数据中心
nacos.config.data-ids
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-05-25
- **Last Updated**: 2022-05-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# nacos概述
## 1、什么是nacos
> Nacos是阿里巴巴[开源项目](https://so.csdn.net/so/search?q=开源项目&spm=1001.2101.3001.7020) “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”
### **服务发现**
使用一个注册中心来记录[分布式系统](https://so.csdn.net/so/search?q=分布式系统&spm=1001.2101.3001.7020)中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务。
服务调用链路图
## 2、nacos选型
目前可以做注册中心的组件有eureka,zoomkeeper,consul等,为什么要选择nacos呢?
选用nacos的原因如下:
1、Eureka(原生,2.0遇到瓶颈,停止维护)
2、Zookeeper(支持,没有提供丰富的界面操作,不易于管理)
3、Consul(原生,GO语言开发,不易扩展,,没有提供丰富的界面操作,不易于管理)
4、Nacos对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config,即 nacos集配置中心和注册中心于一体,并提供服务的界面操作。
## 3、搭建并使用nacos
### 1、搭建单机版nacos(windows为例)
nacos提供是了启动脚本->startup.cmd,直接执行startup.cmd即可。默认的端口是8848
启动以后,可以通过访问http://10.8.1.78:8848/nacos/index.html,登录nacos。nacos的默认的用户名和密码是nacos。

### 2、nacos的界面操作
```
├── 配置管理 配置中心的配置查询
├── 配置列表
├── 历史版本
├── 监听查询
├── 服务管理 注册中心的注册服务查询
├── 服务列表
├── 订阅者列表
├── 权限控制 nacos的rbac权限控制
├── 用户列表
├── 角色管理
├── 权限管理
├── 命名空间 环境的侧写
├── 集群管理 nacos集群
├── 节点列表
```
从下往上:
##### 集群管理/节点列表
目前使用的nacos是单机版本,使用的内置的数据库derby,集群版较单机版存在高可用的特点,但目前来说单机版nacos已经足够使用。如果搭建集群版nacos,请参考https://blog.csdn.net/ZiXiaFan/article/details/122010864。集群管理下的节点表显示了nacos的可用节点。
##### 命名空间
在未引入nacos之前,spring提供了侧写->spring.profiles.active来区分当前环境是开发环境、测试环境还是生产环境。 如果是开发环境将修改spring.profile.active=devs;如果是测试环境,修改spring.profile.active=sit。在nacos中可以通过命名空间来区分环境配置,我们已经按照spring的规定来区分环境配置,规定devs是开发环境,sit是测试环境,sitDameng是达梦环境。因此在初次使用nacos之前,新建命名空间,devs,sit,sitDameng等。命名空间是相互隔离的,一套环境只能选择一个命名空间。
以sit环境为例,新建sit命名空间:
1、点击新建命名空间->填写命名空间ID,命名空间名和描述->点击确认

2、新建的命名空间可以在‘配置管理/配置列表’和‘服务管理/服务列表’中看见'

##### 权限控制
在权限控制中,nacos提供了RBAC模型(基于角色的访问控制)。所以我们可以在创建新的用户时,给用户分配角色,给角色赋予权限,从而控制该用户的访问权限。

##### 服务管理 /服务列表
当nacos作为注册中心时,nacos会维持一份注册清单,用以记录“那些服务向注册中心注册了健康的服务”, 服务列表即是用来展示 “那些服务向我注册了”。如在inteplm-sign启动时候,选择sit命名空间,在服务列表的sit列表中就会看见inteplm-sign注册记录。(至于为什么启动inteplm-sign启动后,会出现在nacos的注册清单中,在nacos配置中说明)
##### 服务管理/订阅者列表
inteplm-main存在这样一个场景:在预览签名的时候,inteplm-main会调用inteplm-sign的签名服务。此时inteplm-sign是作为服务的提供者,既然有服务的提供者,就会有对应的服务消费者,服务的消费者在消费服务的时候,就必须先订阅该服务。因此订阅者列表是展示那些服务被订阅了的。
##### 配置管理/配置列表
Group:又称为分组,Group是命名空间下的概念,一个命名空间下可以有多个组,一个服务只能配置一个命名空间,但是可以有多个组。
Data Id:又称为数据中心,Data Id是组下的概念,一个组下可以有多个Data Id。
创建Group和DataId:
在未引入配置中心前,所有的配置集中存放在application.properties和application-sit.properties文件中。引入配置中心后,所有的配置集中存放在nacos的配置列表中。我们将application.properties和application-sit.properties进行了拆分,通过名称来识别配置文件的作用。
在拆分的过程中,我们考虑到各个服务之间会有一些公用的配置,例如数据库,redis,kafka,因此我们为每个服务分配两个分组。以inteplm-main服务为例,我们创建并分配了inteplm-main分组和DEFAULT_GROUP分组;inteplm-main组下是inteplm-main服务特有的配置,而DEFAULT_GROUP是系统自带的默认的分组,用来存储一些公用的配置。
DataId的创建:
inteplm-main组下我们创建了4个Data Id,分别是system-config,business-config,service-call-config,project-manager-config。DEFAULT_GROUP组下创建了一个Data Id ->common-config, 这些数据中心几乎涵盖了application.properties和application-sit.properties文件中的内容。(nacos相关 的配置必须在本地配置文件中指定)
(nacos初始化时,这些配置文件可通过导入的方式导入)
##### 配置管理/历史版本
我们可以通过Group 和Data Id查询到某个配置文件的历史版本,并对可以回滚到指定的历史版本。
##### 配置管理/监听查询
nacos的配置管理下的监听查询,我们也可以看到被监听的内容,MD5码表示被监听的数据集的MD5码。
## 4、nacos配置
几乎在每个服务中的applicaition.properties文件中都能够看到nacos配置。nacos的配置存放在本地配置文件中。
## 
重要配置项:
#nacos 配置中心地址
nacos.config.server-addr = 10.8.1.78:8848
#服务启动时,使用nacos上的那个环境
nacos.config.namespace = sit
#服务在nacos上的注册名称
nacos.config.group = inteplm-main
#服务启动时,读取nacos上的哪些数据中心
nacos.config.data-ids = system-config,business-config,service-call-config,project-manager-config
#nacos的DEFAULT_GROUP组的命名空间,可不写,则于inteplm-main的命名空间保持一致
nacos.config.ext-config[0].namespace=sit
#读取nacos的DEFAULT_GROUP 组的common-config数据中心
nacos.config.ext-config[0].data-id = common-config
#注册中心的地址,同nacos的配置中心保持一致
spring.cloud.nacos.server-addr = ${nacos.config.server-addr}
#nacos注册中心的用户名
spring.cloud.nacos.discovery.username = nacos
#nacos 注册中心的密码
spring.cloud.nacos.discovery.password = nacos
#服务启动时,使用nacos上的那个环境,同配置中心使用的环境保持一致
spring.cloud.nacos.discovery.namespace = ${nacos.config.namespace}
## 5、DataId上的配置文件介绍
| | Data Id | Group | 归属应用: |
| :--- | :--------------------- | :------------------ | -----------------------------------------------------: |
| | common-config | DEFAULT_GROUP | 公共配置(数据库,redis,kafka,rabbit mq,sba) |
| | system-config | inteplm-main | inteplm-main系统相关配置 |
| | business-config | inteplm-main | inteplm-main 业务相关配置 |
| | service-call-config | inteplm-main | inteplm-main 调用轻量化,CAPP,签名,intekey的相关配置 |
| | project-manager-config | inteplm-main | inteplm-main 项目管理配置 |
| | capp-config | inteplm-capp | capp相关配置 |
| | lightweight-config | inteplm-lightweight | 轻量化服务配置 |
| | inteplm-adminserver | inteplm-adminserver | springbootAdmin 服务端 |
## 6、OpenFeign的服务调用