II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

一、Nacos简介

1、命名由来

前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。

2、是什么

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos: Dynamic Naming and Configuration Service

Nacos就是注册中心 + 配置中心的组合

Nacos = Eureka+Config +Bus

3、能干嘛

  • 替代Eureka做服务注册中心
  • 替代Config做服务配置中心

4、下载

https://github.com/alibaba/Nacos

https://github.com/alibaba/nacos/releases

官网文档:

https://nacos.io/zh-cn/index.html

nacos

5、各种注册中心比较

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

据说 Nacos 在阿里巴巴内部有超过 10 万的实例运行,已经过了类似双十一等各种大型流量的考验

二、Nacos 安装与运行

1、准备环境

本地Java8 + Maven环境

2、下载 Nacos

https://github.com/alibaba/nacos/releases

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

3、运行

解压安装包,直接运行bin目录下的startup.cmd

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

在Nacos的高版本中:Nocas-1.3.2 以后

默认启动时会以集群方式启动,但由于缺少配置信息就会导致启动失败。

下面提供两种修改方式:

(1)集群方式启动,完善配置文件

https://blog.csdn.net/A564492203/article/details/107815933

(2)单机方式启动,修改启动文件

https://blog.csdn.net/lyxuefeng/article/details/108752302

4、查看

  • 命令运行成功后直接访问http://localhost:8848/nacos
  • 默认账号密码都是nacos
  • 结果页面

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

三、Nacos 作为服务注册中心

1、官网文档

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_config

2、基于Nacos的服务提供者

(1)新建Module

cloudalibaba-provider-payment9001

(2)改POM

父POM

&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.cloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-cloud-alibaba-dependencies<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">version</span>></span>2.1.0.RELEASE<span class="hljs-tag">version</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">type</span>></span>pom<span class="hljs-tag">type</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>import<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>>

本模块POM

&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.cloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-cloud-starter-alibaba-nacos-discovery<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-actuator<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-devtools<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>runtime<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.projectlombok<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>lombok<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-test<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>test<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependencies</span>>
(3)写YML
<span class="hljs-attr">server:</span><br>&#xA0;&#xA0;<span class="hljs-attr">port:</span>&#xA0;<span class="hljs-number">9001</span><br><br><span class="hljs-attr">spring:</span><br>&#xA0;&#xA0;<span class="hljs-attr">application:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">name:</span>&#xA0;<span class="hljs-string">nacos-payment-provider</span><br>&#xA0;&#xA0;<span class="hljs-attr">cloud:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">nacos:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">discovery:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span><span class="hljs-string">:8848</span>&#xA0;<br><br><span class="hljs-attr">management:</span><br>&#xA0;&#xA0;<span class="hljs-attr">endpoints:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">web:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">exposure:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">include:</span>&#xA0;<span class="hljs-string">'*'</span>
(4)主启动
<br><br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">PaymentMain9001</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-keyword">static</span>&#xA0;<span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">main</span><span class="hljs-params">(String[]&#xA0;args)</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;SpringApplication.run(PaymentMain9001<span class="hljs-class">.<span class="hljs-keyword">class</span>,&#xA0;<span class="hljs-title">args</span>)</span>;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}
(5)业务类
<br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">PaymentController</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;(<span class="hljs-string">"${server.port}"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">private</span>&#xA0;String&#xA0;serverPort;<br><br>&#xA0;&#xA0;&#xA0;&#xA0;(value&#xA0;=&#xA0;<span class="hljs-string">"/payment/nacos/{id}"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;String&#xA0;<span class="hljs-title">getPayment</span><span class="hljs-params">(@PathVariable(<span class="hljs-string">"id"</span>)</span>&#xA0;Integer&#xA0;id)&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;<span class="hljs-string">"nacos&#xA0;registry,&#xA0;serverPort:&#xA0;"</span>+&#xA0;serverPort+<span class="hljs-string">"\t&#xA0;id"</span>+id;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}
(5)测试

http://localhost:9001/payment/nacos/1

nacos 控制台:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心 nacos服务注册中心+服务提供者9001都OK了
(5)创建提供者9002

为了下一章节演示nacos的负载均衡,参照9001新建9002

新建cloudalibaba-provider-payment9002,其他步骤同 9001

虚拟端口映射: 或者取巧不想新建重复体力劳动,直接拷贝虚拟端口映射

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

3、基于Nacos的服务消费者

(1)新建Module

cloudalibaba-consumer-nacos-order83

(2)改POM
&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.cloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-cloud-starter-alibaba-nacos-discovery<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.njf.springcloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>cloud-api-commons<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">version</span>></span>${project.version}<span class="hljs-tag">version</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-actuator<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-devtools<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>runtime<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.projectlombok<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>lombok<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-test<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>test<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependencies</span>>

为什么nacos支持负载均衡?

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(3)写YML
<span class="hljs-attr">server:</span><br>&#xA0;&#xA0;<span class="hljs-attr">port:</span>&#xA0;<span class="hljs-number">83</span><br><br><br><span class="hljs-attr">spring:</span><br>&#xA0;&#xA0;<span class="hljs-attr">application:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">name:</span>&#xA0;<span class="hljs-string">nacos-order-consumer</span><br>&#xA0;&#xA0;<span class="hljs-attr">cloud:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">nacos:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">discovery:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-string">localhost:8848</span><br><br><br><br><span class="hljs-attr">service-url:</span><br>&#xA0;&#xA0;<span class="hljs-attr">nacos-user-service:</span>&#xA0;<span class="hljs-string">http://nacos-payment-provider</span>
(4)主启动
<br><br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">OrderNacosMain83</span><br></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-keyword">static</span>&#xA0;<span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">main</span><span class="hljs-params">(String[]&#xA0;args)</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;SpringApplication.run(OrderNacosMain83<span class="hljs-class">.<span class="hljs-keyword">class</span>,<span class="hljs-title">args</span>)</span>;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}
(5)业务类

ApplicationContextBean

<br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">ApplicationContextBean</span><br></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;RestTemplate&#xA0;<span class="hljs-title">getRestTemplate</span><span class="hljs-params">()</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;<span class="hljs-keyword">new</span>&#xA0;RestTemplate();<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

OrderNacosController

<br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">OrderNacosController</span><br></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">private</span>&#xA0;RestTemplate&#xA0;restTemplate;<br><br>&#xA0;&#xA0;&#xA0;&#xA0;(<span class="hljs-string">"${service-url.nacos-user-service}"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">private</span>&#xA0;String&#xA0;serverURL;<br><br>&#xA0;&#xA0;&#xA0;&#xA0;(<span class="hljs-string">"/consumer/payment/nacos/{id}"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;String&#xA0;<span class="hljs-title">paymentInfo</span><span class="hljs-params">(@PathVariable(<span class="hljs-string">"id"</span>)</span>&#xA0;Long&#xA0;id)&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;restTemplate.getForObject(serverURL+<span class="hljs-string">"/payment/nacos/"</span>+id,String<span class="hljs-class">.<span class="hljs-keyword">class</span>)</span>;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br><br>}
(6)测试

Nacos控制台

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

http://localhost:83/consumer/payment/nacos/13

出现轮询效果。

4、服务注册中心对比

各种注册中心对比

Nacos全景图所示:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

Nacos和CAP:

Nacos 支持AP和CP两种模式

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

Nacos 支持AP和CP模式的切换:

C是所有节点在同一时间看到的数据是一致的;而A的定义是所有的请求都会收到响应。

何时选择使用何种模式?

一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring cloud 和 Dubbo 服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。

如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须,K8S服务和DNS服务则适用于CP模式。

CP模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

curl&#xA0;-X&#xA0;PUT&#xA0;'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

四、Nacos 作为服务配置中心——基础配置

1、新建Module

cloudalibaba-config-nacos-client3377

2、改POM

&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.cloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-cloud-starter-alibaba-nacos-config<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.cloud<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-cloud-starter-alibaba-nacos-discovery<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-actuator<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-devtools<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>runtime<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.projectlombok<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>lombok<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">optional</span>></span>true<span class="hljs-tag">optional</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag">groupId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-test<span class="hljs-tag">artifactId</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>test<span class="hljs-tag">scope</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependency</span>><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-tag">dependencies</span>>

3、写YML

配置两个:

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的, bootstrap优先级高于application

bootstrap.yml

<br><span class="hljs-attr">server:</span><br>&#xA0;&#xA0;<span class="hljs-attr">port:</span>&#xA0;<span class="hljs-number">3377</span><br><br><span class="hljs-attr">spring:</span><br>&#xA0;&#xA0;<span class="hljs-attr">application:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">name:</span>&#xA0;<span class="hljs-string">nacos-config-client</span><br>&#xA0;&#xA0;<span class="hljs-attr">cloud:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">nacos:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">discovery:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-string">localhost:8848</span>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">config:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-string">localhost:8848</span>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">file-extension:</span>&#xA0;<span class="hljs-string">yaml</span>&#xA0;<br><br><br>

application.yml

<span class="hljs-attr">spring:</span><br>&#xA0;&#xA0;<span class="hljs-attr">profiles:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">active:</span>&#xA0;<span class="hljs-string">dev</span>&#xA0;

4、主启动类

<br><br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">NacosConfigClientMain3377</span><br></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-keyword">static</span>&#xA0;<span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">main</span><span class="hljs-params">(String[]&#xA0;args)</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;SpringApplication.run(NacosConfigClientMain3377<span class="hljs-class">.<span class="hljs-keyword">class</span>,&#xA0;<span class="hljs-title">args</span>)</span>;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

5、业务类

<br>&#xA0;<br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">ConfigClientController</span><br></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;(<span class="hljs-string">"${config.info}"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">private</span>&#xA0;String&#xA0;configInfo;<br><br>&#xA0;&#xA0;&#xA0;&#xA0;(<span class="hljs-string">"/config/info"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;String&#xA0;<span class="hljs-title">getConfigInfo</span><span class="hljs-params">()</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;configInfo;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

@RefreshScope:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

6、在Nacos中添加配置信息

Nacos中的匹配规则

理论

Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则

官网: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

最后公式:

 ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

实操

(1)新增配置

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心 nacos-config-client-dev
(2)Nacos界面配置对应

设置DataId

公式:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
  • prefix 默认为 spring.application.name 的值
  • spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置

小结说明:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(3)历史配置

Nacos会记录配置文件的历史版本默认保留30天,此外还有一键回滚功能,回滚操作将会触发配置更新

回滚:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

7、测试

  • 启动前需要在nacos客户端-配置管理-配置管理栏目下有对应的yaml配置文件
  • 运行cloud-config-nacos-client3377的主启动类
  • 调用接口查看配置信息 http://localhost:3377/config/info

8、自带动态刷新

修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

五、Nacos 作为服务配置中心——分类配置

1、目前问题

多环境多项目管理

问题1:

实际开发中,通常一个系统会准备

  • dev开发环境
  • test测试环境
  • prod生产环境。

如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

问题2:

一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…… 那怎么对这些微服务配置进行管理呢?

2、Nacos 图形化管理界面

配置管理:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

命名空间:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

3、Namespace+Group+DataID 三者关系?为什么这么设计?

(1)是什么

类似Java里面的package名和类名

最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。

(2)三者情况

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

默认情况: Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT

Nacos默认的命名空间是public,Namespace主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。

Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。

比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。

最后是Instance,就是微服务的实例。

4、三种方案加载配置

(1)DataID 方案

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

默认空间+默认分组+新建dev和test两个DataID

  • 新建dev配置DataID

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
  • 新建test配置DataID

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

通过spring.profile.active属性就能进行多环境下配置文件的读取

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

测试:配置是什么就加载什么 http://localhost:3377/config/info

(2)Group 方案

通过Group实现环境区分

新建Group

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

在nacos图形界面控制台上面新建配置文件DataID

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

bootstrap+application

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP

(3)Namespace 方案

新建dev/test的Namespace 注意下面的命名空间ID:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

回到服务管理-服务列表查看

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

按照域名配置填写

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

YML bootstrap:

<br><span class="hljs-attr">server:</span><br>&#xA0;&#xA0;<span class="hljs-attr">port:</span>&#xA0;<span class="hljs-number">3377</span><br><br><span class="hljs-attr">spring:</span><br>&#xA0;&#xA0;<span class="hljs-attr">application:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">name:</span>&#xA0;<span class="hljs-string">nacos-order</span><br>&#xA0;&#xA0;<span class="hljs-attr">cloud:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">nacos:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">discovery:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-string">localhost:8848</span>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">config:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">server-addr:</span>&#xA0;<span class="hljs-string">localhost:8848</span>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">file-extension:</span>&#xA0;<span class="hljs-string">yaml</span>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">namespace:</span>&#xA0;<span class="hljs-string">5da1dccc-ee26-49e0-b8e5-7d9559b95ab0</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-attr">group:</span>&#xA0;<span class="hljs-string">TEST_GROUP</span>

application:

#&#xA0;Nacos&#x6CE8;&#x518C;&#x914D;&#x7F6E;&#xFF0C;application.yml<br>spring:<br>&#xA0;&#xA0;profiles:<br>&#xA0;&#xA0;&#xA0;&#xA0;#active:&#xA0;test<br>&#xA0;&#xA0;&#xA0;&#xA0;active:&#xA0;dev<br>&#xA0;&#xA0;&#xA0;&#xA0;#active:&#xA0;info

五、Nacos集群和持久化配置(重要)

1、官网说明

https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

官网架构图

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心 VIP:虚拟IP,类似于Nginx,再加一层负载

上图官网翻译,真实情况

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

说明:

按照上述,我们需要mysql数据库

官网说明:https://nacos.io/zh-cn/docs/deployment.html

重点说明:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

2、Nacos持久化配置解释

Nacos默认自带的是嵌入式数据库derby https://github.com/alibaba/nacos/blob/develop/config/pom.xml

derby到mysql切换配置步骤

  • nacos-server-1.1.4\nacos\conf目录下找到sql脚本
  • 找到 nacos-mysql.sql
  • 执行脚本
&#xA0;<br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">DATABASE</span>&#xA0;nacos_config;<br><span class="hljs-keyword">USE</span>&#xA0;nacos_config;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">config_info</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'data_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">content</span>&#xA0;LONGTEXT&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'content'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">md5</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">32</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'md5'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_user</span>&#xA0;<span class="hljs-built_in">TEXT</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;user'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_ip</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;ip'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">app_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x79DF;&#x6237;&#x5B57;&#x6BB5;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">c_desc</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">256</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">c_use</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">64</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">effect</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">64</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">type</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">64</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">c_schema</span>&#xA0;<span class="hljs-built_in">TEXT</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_configinfo_datagrouptenant</span>&#xA0;(<span class="hljs-string">data_id</span>,<span class="hljs-string">group_id</span>,<span class="hljs-string">tenant_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'config_info'</span>;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">config_info_aggr</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'data_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'group_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">datum_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'datum_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">content</span>&#xA0;LONGTEXT&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x5185;&#x5BB9;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">app_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x79DF;&#x6237;&#x5B57;&#x6BB5;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_configinfoaggr_datagrouptenantdatum</span>&#xA0;(<span class="hljs-string">data_id</span>,<span class="hljs-string">group_id</span>,<span class="hljs-string">tenant_id</span>,<span class="hljs-string">datum_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'&#x589E;&#x52A0;&#x79DF;&#x6237;&#x5B57;&#x6BB5;'</span>;<br>&#xA0;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">config_info_beta</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'data_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'group_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">app_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'app_name'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">content</span>&#xA0;LONGTEXT&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'content'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">beta_ips</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">1024</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'betaIps'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">md5</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">32</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'md5'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_user</span>&#xA0;<span class="hljs-built_in">TEXT</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;user'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_ip</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;ip'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x79DF;&#x6237;&#x5B57;&#x6BB5;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_configinfobeta_datagrouptenant</span>&#xA0;(<span class="hljs-string">data_id</span>,<span class="hljs-string">group_id</span>,<span class="hljs-string">tenant_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'config_info_beta'</span>;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">config_info_tag</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'data_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'group_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tenant_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tag_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tag_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">app_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'app_name'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">content</span>&#xA0;LONGTEXT&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'content'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">md5</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">32</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'md5'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_user</span>&#xA0;<span class="hljs-built_in">TEXT</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;user'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_ip</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'source&#xA0;ip'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_configinfotag_datagrouptenanttag</span>&#xA0;(<span class="hljs-string">data_id</span>,<span class="hljs-string">group_id</span>,<span class="hljs-string">tenant_id</span>,<span class="hljs-string">tag_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'config_info_tag'</span>;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">config_tags_relation</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tag_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tag_name'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tag_type</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">64</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tag_type'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'data_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'group_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tenant_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">nid</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">nid</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_configtagrelation_configidtag</span>&#xA0;(<span class="hljs-string">id</span>,<span class="hljs-string">tag_name</span>,<span class="hljs-string">tag_type</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">idx_tenant_id</span>&#xA0;(<span class="hljs-string">tenant_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'config_tag_relation'</span>;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">group_capacity</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4E3B;&#x952E;ID'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'Group&#xA0;ID&#xFF0C;&#x7A7A;&#x5B57;&#x7B26;&#x8868;&#x793A;&#x6574;&#x4E2A;&#x96C6;&#x7FA4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">quota</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x914D;&#x989D;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">usage</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4F7F;&#x7528;&#x91CF;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_size</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x5355;&#x4E2A;&#x914D;&#x7F6E;&#x5927;&#x5C0F;&#x4E0A;&#x9650;&#xFF0C;&#x5355;&#x4F4D;&#x4E3A;&#x5B57;&#x8282;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_aggr_count</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x805A;&#x5408;&#x5B50;&#x914D;&#x7F6E;&#x6700;&#x5927;&#x4E2A;&#x6570;&#xFF0C;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_aggr_size</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x5355;&#x4E2A;&#x805A;&#x5408;&#x6570;&#x636E;&#x7684;&#x5B50;&#x914D;&#x7F6E;&#x5927;&#x5C0F;&#x4E0A;&#x9650;&#xFF0C;&#x5355;&#x4F4D;&#x4E3A;&#x5B57;&#x8282;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_history_count</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x6700;&#x5927;&#x53D8;&#x66F4;&#x5386;&#x53F2;&#x6570;&#x91CF;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_group_id</span>&#xA0;(<span class="hljs-string">group_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'&#x96C6;&#x7FA4;&#x3001;&#x5404;Group&#x5BB9;&#x91CF;&#x4FE1;&#x606F;&#x8868;'</span>;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">his_config_info</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">64</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">nid</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT,<br>&#xA0;&#xA0;<span class="hljs-string">data_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">group_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">app_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'app_name'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">content</span>&#xA0;LONGTEXT&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">md5</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">32</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_user</span>&#xA0;<span class="hljs-built_in">TEXT</span>,<br>&#xA0;&#xA0;<span class="hljs-string">src_ip</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">op_type</span>&#xA0;<span class="hljs-built_in">CHAR</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x79DF;&#x6237;&#x5B57;&#x6BB5;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">nid</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">idx_gmt_create</span>&#xA0;(<span class="hljs-string">gmt_create</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">idx_gmt_modified</span>&#xA0;(<span class="hljs-string">gmt_modified</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">idx_did</span>&#xA0;(<span class="hljs-string">data_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'&#x591A;&#x79DF;&#x6237;&#x6539;&#x9020;'</span>;<br>&#xA0;<br>&#xA0;<br><br><br><br><br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">tenant_capacity</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4E3B;&#x952E;ID'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'Tenant&#xA0;ID'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">quota</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x914D;&#x989D;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">usage</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4F7F;&#x7528;&#x91CF;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_size</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x5355;&#x4E2A;&#x914D;&#x7F6E;&#x5927;&#x5C0F;&#x4E0A;&#x9650;&#xFF0C;&#x5355;&#x4F4D;&#x4E3A;&#x5B57;&#x8282;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_aggr_count</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x805A;&#x5408;&#x5B50;&#x914D;&#x7F6E;&#x6700;&#x5927;&#x4E2A;&#x6570;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_aggr_size</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x5355;&#x4E2A;&#x805A;&#x5408;&#x6570;&#x636E;&#x7684;&#x5B50;&#x914D;&#x7F6E;&#x5927;&#x5C0F;&#x4E0A;&#x9650;&#xFF0C;&#x5355;&#x4F4D;&#x4E3A;&#x5B57;&#x8282;&#xFF0C;0&#x8868;&#x793A;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x503C;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">max_history_count</span>&#xA0;<span class="hljs-built_in">INT</span>(<span class="hljs-number">10</span>)&#xA0;<span class="hljs-keyword">UNSIGNED</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'0'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x6700;&#x5927;&#x53D8;&#x66F4;&#x5386;&#x53F2;&#x6570;&#x91CF;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;DATETIME&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">'2010-05-05&#xA0;00:00:00'</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_tenant_id</span>&#xA0;(<span class="hljs-string">tenant_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'&#x79DF;&#x6237;&#x5BB9;&#x91CF;&#x4FE1;&#x606F;&#x8868;'</span>;<br>&#xA0;<br>&#xA0;<br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-string">tenant_info</span>&#xA0;(<br>&#xA0;&#xA0;<span class="hljs-string">id</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;AUTO_INCREMENT&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">kp</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'kp'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_id</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tenant_id'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_name</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">128</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-string">''</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tenant_name'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">tenant_desc</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">256</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'tenant_desc'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">create_source</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">32</span>)&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'create_source'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_create</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x521B;&#x5EFA;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;<span class="hljs-string">gmt_modified</span>&#xA0;<span class="hljs-built_in">BIGINT</span>(<span class="hljs-number">20</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;<span class="hljs-keyword">COMMENT</span>&#xA0;<span class="hljs-string">'&#x4FEE;&#x6539;&#x65F6;&#x95F4;'</span>,<br>&#xA0;&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;(<span class="hljs-string">id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">UNIQUE</span>&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">uk_tenant_info_kptenantid</span>&#xA0;(<span class="hljs-string">kp</span>,<span class="hljs-string">tenant_id</span>),<br>&#xA0;&#xA0;<span class="hljs-keyword">KEY</span>&#xA0;<span class="hljs-string">idx_tenant_id</span>&#xA0;(<span class="hljs-string">tenant_id</span>)<br>)&#xA0;<span class="hljs-keyword">ENGINE</span>=<span class="hljs-keyword">INNODB</span>&#xA0;<span class="hljs-keyword">DEFAULT</span>&#xA0;<span class="hljs-keyword">CHARSET</span>=utf8&#xA0;<span class="hljs-keyword">COLLATE</span>=utf8_bin&#xA0;<span class="hljs-keyword">COMMENT</span>=<span class="hljs-string">'tenant_info'</span>;<br>&#xA0;<br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-keyword">users</span>&#xA0;(<br>&#xA0;&#xA0;&#xA0;&#xA0;username&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">50</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>&#xA0;PRIMARY&#xA0;<span class="hljs-keyword">KEY</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">PASSWORD</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">500</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;enabled&#xA0;<span class="hljs-built_in">BOOLEAN</span>&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span><br>);<br>&#xA0;<br><span class="hljs-keyword">CREATE</span>&#xA0;<span class="hljs-keyword">TABLE</span>&#xA0;<span class="hljs-keyword">roles</span>&#xA0;(<br>&#xA0;&#xA0;&#xA0;&#xA0;username&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">50</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">role</span>&#xA0;<span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">50</span>)&#xA0;<span class="hljs-keyword">NOT</span>&#xA0;<span class="hljs-literal">NULL</span><br>);<br>&#xA0;<br><span class="hljs-keyword">INSERT</span>&#xA0;<span class="hljs-keyword">INTO</span>&#xA0;<span class="hljs-keyword">users</span>&#xA0;(username,&#xA0;<span class="hljs-keyword">PASSWORD</span>,&#xA0;enabled)&#xA0;<span class="hljs-keyword">VALUES</span>&#xA0;(<span class="hljs-string">'nacos'</span>,&#xA0;<span class="hljs-string">'$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu'</span>,&#xA0;<span class="hljs-literal">TRUE</span>);<br>&#xA0;<br><span class="hljs-keyword">INSERT</span>&#xA0;<span class="hljs-keyword">INTO</span>&#xA0;<span class="hljs-keyword">roles</span>&#xA0;(username,&#xA0;<span class="hljs-keyword">role</span>)&#xA0;<span class="hljs-keyword">VALUES</span>&#xA0;(<span class="hljs-string">'nacos'</span>,&#xA0;<span class="hljs-string">'ROLE_ADMIN'</span>);

nacos-server-1.1.4\nacos\conf目录下找到application.properties,修改内容

spring.datasource.platform=mysql<br>&#xA0;<br>db.num=<span class="hljs-number">1</span><br>db.url<span class="hljs-number">.0</span>=jdbc:mysql:<br>db.user=root<br>db.password=<span class="hljs-number">123456</span>

启动Nacos,可以看到是个全新的空记录界面,以前是记录进derby

3、Linux版安装Nacos

预计需要,1个Nginx+3个nacos注册中心+1个mysql

(1)Linux版安装

Nacos 下载Linux版

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

https://github.com/alibaba/nacos/releases/tag/1.1.4

nacos-server-1.1.4.tar.gz

解压后安装

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

4、集群配置(重点)

配置

(1)Linux服务器上mysql数据库配置

找到 SQL脚本

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

sql语句源文件:nacos-mysql.sql

自己Linux机器上的Mysql数据库粘贴,执行后结果

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(2)application.properties 配置

位置:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

内容: application.properties 文件打开后的最后面,配置如下内容:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(3)Linux服务器上nacos的集群配置cluster.conf

梳理出3台nacos集器的不同服务端口号

复制出cluster.conf

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

内容:

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(4)编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口
  • /mynacos/nacos/bin 目录下有startup.sh
  • 在什么地方,修改什么,怎么修改
  • 思考

在/mynacos/nacos/bin 目录下有startup.sh

平时单机版的启动,都是./startup.sh即可。

但是集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。 命令:./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

  • 修改内容

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
  • 执行方式

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(5)Nginx的配置,由它作为负载均衡器
  • 修改nginx的配置文件 II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
  • nginx.conf II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
  • 按照指定启动

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心
(6)截止到此处,1个Nginx+3个nacos注册中心+1个mysql

测试

微服务cloudalibaba-provider-payment9002启动注册进nacos集群

高可用小总结

II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

Original: https://www.cnblogs.com/niujifei/p/16340212.html
Author: 格物致知_Tony
Title: II-第十三章:(1)SpringCloud Nacos注册中心和配置中心

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540050/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • rocketmq TIMEOUT_CLEAN_QUEUE异常

    com.alibaba.rocketmq.client.exception.MQBrokerException: delayLevel=null, sendResult=null,…

    Java 2023年5月30日
    075
  • 22.1.13 图

    22.1.13 图 1.图的表示方法 常见的有邻接表法,邻接矩阵,数组表示的方法 数组表示的方法: 例如:一个二维数组为{{1,2,3},{2,4,2},{4,5,1},{2,3,…

    Java 2023年6月13日
    071
  • 动力节点-王妈妈Springboot教程(五)RESTful

    第五章 接口架构风格—RESTful *官方下载地址:动力节点官网 *视频观看地址 https://www.bilibili.com/video/BV1XQ4y1m7ex 5.1 …

    Java 2023年6月7日
    090
  • Maven 快速入门

    一、简介 Maven 是一个用于构建/管理任何基于Java项目的工具,其本身也是基于Java的 因此需要Java环境。其最初是为了简化 Jakarta Turbine 项目的构建而…

    Java 2023年6月6日
    075
  • springboot轻量部署方案

    背景:jar包启动时,由于依赖较多,包过大,重启耗时较多 需求:服务快速启动、资源分类部署 方法: 一、新建一个springboot项目,随便引入一些依赖 三、配置打包形式、脚本 …

    Java 2023年6月8日
    073
  • Google支付和服务端验证

    因为公司业务需求,需要使用google的登录和支付。google支付分为订阅和应用内购买两种,笔者使用的是应用内购买这种方式,这里将整个google支付和支付验证的流程记录下来。 …

    Java 2023年5月30日
    074
  • OO 第三单元总结

    OO 第三单元总结 OO 第三单元总结 规格的阅读与实现心得 JML的阅读方法 JML迭代 测试数据与JML 容器的选择 算法和性能分析 Network 扩展考虑 题目要求 架构分…

    Java 2023年6月13日
    072
  • MySQL-指定排序

    where twui.id = #{operatorId} order by FIELD(cardStatus, 2, 1, 3), tpa.create_time Origina…

    Java 2023年6月9日
    070
  • 企业级Nginx负载均衡与keepalived高可用实战(一)Nginx篇

    1、集群简介 1.1、什么是集群 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各…

    Java 2023年5月30日
    083
  • Linux服务器启动jstatd服务

    Linux,jstatd,Linux服务器启动jstatd服务 Linux服务器启动jstatd服务 1.查找jdk所在目录 2.在jdk的bin目录下创建文件jstatd.all…

    Java 2023年6月8日
    075
  • 关于redis HSCAN count参数不生效的问题

    这的确是个坑,HSCAN是为了处理大量数据而设计的,可能也是因为这个原因,在数据量较少的情况下count参数并不会生效,具体阈值是多少并没有实际测验过不过可以断定的是一百条数据一下…

    Java 2023年6月13日
    0114
  • 【Java面试】这也太卷了~面试竟然问,HTTP协议和RPC协议的区别

    “Http协议和RPC协议有什么区别?”最近很多人问我这个问题,他们都不知道怎么回答。今天我们就来了解一下这个问题的高手回答。另外,我把文字版本的内容整理到…

    Java 2023年6月16日
    084
  • ch01 常见DOS命令

    常见DOS命令 CMD打开方式 开始-系统-命令提示符 Win键+R 输入CMD打开控制台 在任意文件夹下,按住shift+右键,点击在此处打开命令运行窗口 资源管理器的地址栏前面…

    Java 2023年6月9日
    078
  • Linux (xfce桌面安装)jdk安装

    1.安装xfce桌面,拼音输入法,google浏览器,添加用户和密码,最后重启操作 (2)输入法选择命令 当前用户执行im-chooser,选择输入法平台和输入法。然后重新登录系统…

    Java 2023年6月5日
    082
  • 并发编程从入门到放弃系列开始和结束

    对于 Java 部分的面试来说,突然想到并发这一块的内容是不太完整的,这篇文章会通篇把多线程和并发都大致阐述一遍,至少能够达到了解原理和使用的目的,内容会比较多,从最基本的线程到我…

    Java 2023年6月13日
    084
  • springboot配置swagger2

    springboot+spring security配置swagger2 这里springboot整合springsecurity就不说了,上篇文章就有:https://www.c…

    Java 2023年6月5日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球