IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud07_Nacos的概述、安装、搭建提供者、消费者工程案列、配置中心、Namespace、Group、Data ID、高可用的集群配置 -> 正文阅读

[Java知识库]SpringCloud07_Nacos的概述、安装、搭建提供者、消费者工程案列、配置中心、Namespace、Group、Data ID、高可用的集群配置

写在最前面:
(1). nacos官网
(2). nacos github中文
(3). nacos下载

# nacos作为注册中心
server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include: '*'
# nacas作为消费者 
server:
  port: 83
spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
service-url:
  nacos-user-service: http://nacos-payment-provider
# nacos作为配置中心
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: DEV_GROUP # 分类配置之分组配置
        namespace: 3f95a639-712b-4108-a03e-7bc3e95c3d46 #哪一个namespace下
#${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#nacos-config-client-dev.yaml
	<!--nacos作为注册中心-->
	<dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
     <!--nacos作为配置中心-->
     <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>

①. Nacos简介(了解)

  • ①. 为什么叫Nacos
    (前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service)

  • ②. 是什么

  1. 一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心
  2. Nacos:Dynamic Naming and Configuration Service
  3. Nacos就是注册中心+配置中心的组合(等价于Nacos = Eureka+Config+Bus)
  • ③. 能干嘛
  1. 替代Eureka做服务注册中心
  2. 替代Config做服务配置中心

②. 安装并运行Nacos(了解)

  • ①. 本地Java8+Maven环境已经OK

  • ②. 先从官网下载Nacos

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

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

  • ⑤. 结果页面
    在这里插入图片描述

③. 基于Nacos的服务提供者

  • ①. 新建Module: cloudalibaba-provider-payment9001

  • ②.pom

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
  </dependencies>
  • ③. YML
server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'
  • ④. 主启动
	@EnableDiscoveryClient
	@SpringBootApplication
	public class PaymentMain9001 {
	    public static void main(String[] args) {
	        SpringApplication.run(PaymentMain9001.class,args);
	    }
	}
  • ⑤. 业务类
package com.atguigu.springcloud.alibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class PaymentController{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id){
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}
  • ⑥. 测试
  1. http://lcoalhost:9001/payment/nacos/1
  2. nacos服务注册中心+服务提供者9001都ok了
  3. nacos控制台
    在这里插入图片描述
  • ⑦. 为了下一章节演示nacos的负载均衡,参照9001新建9002
    在这里插入图片描述

④. 基于Nacos的服务消费者

为什么nacos支持负载均衡?
在这里插入图片描述

  • ①. 新建Module:cloudalibaba-consumer-nacos-order83

  • ②.POM

<dependencies>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
        <dependency>
        <groupId>com.atguigu.springcloud</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
  • ③. YML
server:
  port: 83
spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
service-url:
  nacos-user-service: http://nacos-payment-provider
  • ④. 主启动
	@EnableDiscoveryClient
	@SpringBootApplication
	public class OrderNacosMain83{
	    public static void main(String[] args){
	        SpringApplication.run(OrderNacosMain83.class,args);
	    }
	}
  • ⑤. 业务类
  1. ApplicationContextBean:配置负载均衡
  2. OrderNacosController:获取到nacos中配置的文件信息
@Configuration
public class ApplicationContextBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
@SuppressWarnings("all")
@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}
  • ⑥. 测试
  1. http://localhost:83/consumer/payment/nacos/13 (83访问9001/9002,轮询负载OK )
  2. nacos控制台
    在这里插入图片描述

⑤. Nacos作为配置中心-基础配置

DataID 掌握
(1). Nacos中的dataid的组成格式与SpringBoot配置文件中的匹配规则
(2). 官网
在这里插入图片描述(3). 实操
①. 配置新增nacos-config-client-dev
在这里插入图片描述
②. 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来配置
在这里插入图片描述

  • ①. 新建:cloudalibaba-config-nacos-client3377

  • ②. POM

    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • ③. YML
  1. Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,此能保证项目正常启动
  2. springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
(1).bootstrap.yml
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
(2).application.yml
spring:
  profiles:
    active: dev
  • ④. 主启动
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class,args);
    }
  • ⑤. 业务类
@RestController
@RefreshScope//支持Nacos的动态刷新功能
//@RefreshScope:修改下nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新
public class ConfigClientController{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}
  • ⑥. 测试
    启动前需要在nacos客户端-配置管理-配置管理栏目下有对应的yaml配置文件
    运行cloud-config-nacos-client3377的主启动类
    调用接口查看配置信息 http://localhost:3377/config/info
    自带动态刷新:修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新

  • ⑦. 如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置

⑥. Nacos作为配置中心-分类配置

①. Namespace+Group+Data ID三者关系?

  • ①. 是什么?类似Java里面的package名和类名
    最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象
  • ②. 三者情况
    在这里插入图片描述
  • ③. 默认情况:Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT
    在这里插入图片描述

②. DataID方案

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

  • ②.默认空间+默认分组+新建dev和test两个DataID
    新建dev配置DataID和新建test配置DataID
    在这里插入图片描述
    在这里插入图片描述

  • ③. 通过spring.profile.active属性就能进行多环境下配置文件的读取
    在这里插入图片描述

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

③. Group方案

  • ①. 通过Group实现环境区分(新建Group)
    在这里插入图片描述
  • ②. 在nacos图形界面控制台上面新建配置文件DataID
    在这里插入图片描述
  • ③. bootstrap+application
    (在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP)
    在这里插入图片描述

④. Namespace方案

  • ①. 新建dev/test的Namespace
    在这里插入图片描述
  • ②. 回到服务管理-服务列表查看
    在这里插入图片描述
  • ③. 按照域名配置填写
    在这里插入图片描述
  • ④. YML
    在这里插入图片描述
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: DEV_GROUP # 分类配置之分组配置
        namespace: 64b822f9-ec56-4a72-8bd0-8340ff5ee0b6 #哪一个namespace下
#${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#nacos-config-client-dev.yaml

⑤. 加载多配置集

  • ①. 我们要把原来application.yml里的内容都分文件抽离出去。我们在nacos里创建好后,在coupons里指定要导入的配置即可
spring:
  application:
    name: gulimall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        namespace: cfa4572e-af5c-4da6-aae0-7392f5d733c6
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.56.10:3306/gulimall_sms?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password: root
mybatis-plus:
  # classpath*:/mapper/**/*.xml 表示不止扫描自己类路径下的mapper,其他引入的mapper也会进行扫描
  # classpath:/mapper/**/*.xml 只扫描自己的路径下
  mapper-locations: classpath:/mapper/**/*.xml
  # 如下代码是mybatisplus中配置自增主键
  global-config:
    db-config:
      id-type: auto
server:
  port: 7000
  • ②. 我们可以将上面的xml在nacos中配置分成多个文件配置
    在这里插入图片描述
  • ③. 在项目中开启
spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 可以选择对应的命名空间 # 写上对应环境的命名空间ID
spring.cloud.nacos.config.namespace=b176a68a-6800-4648-833b-be10be8bab00
# 更改配置分组
spring.cloud.nacos.config.group=dev

#新版本不建议用下面的了
#spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
#spring.cloud.nacos.config.ext-config[0].group=dev
#spring.cloud.nacos.config.ext-config[0].refresh=true
#spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
#spring.cloud.nacos.config.ext-config[1].group=dev
#spring.cloud.nacos.config.ext-config[1].refresh=true
#spring.cloud.nacos.config.ext-config[2].data-id=other.yml
#spring.cloud.nacos.config.ext-config[2].group=dev
#spring.cloud.nacos.config.ext-config[2].refresh=true

spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true

spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true
  • ④. 总结
  1. 微服务任何配置信息,任何配置文件都可以放在配置中心中
  2. 只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
  3. @Value,@ConfigurationPropertie以前SpringBoot任何方法从配置文件中获取值,都能使用。
  4. 配置中心有的优先使用配置中心中的

⑦. Nacos集群和持久化配置 掌握

前言:
这部分知识点超级重要,后续如果有在工作中用到再来配置处理

①. Nacos持久化配置解释

   <dependency>
       <groupId>org.apache.derby</groupId>
       <artifactId>derby</artifactId>
   </dependency>
  • ②. derby到mysql切换配置步骤
  1. nacos-server-1.1.4\nacos\conf目录下找到sql脚本(nacos-mysql.sql)
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = config_info   */
	/******************************************/
	CREATE TABLE `config_info` (
	  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
	  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
	  `group_id` varchar(255) DEFAULT NULL,
	  `content` longtext NOT NULL COMMENT 'content',
	  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
	  `src_user` text COMMENT 'source user',
	  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
	  `app_name` varchar(128) DEFAULT NULL,
	  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
	  `c_desc` varchar(256) DEFAULT NULL,
	  `c_use` varchar(64) DEFAULT NULL,
	  `effect` varchar(64) DEFAULT NULL,
	  `type` varchar(64) DEFAULT NULL,
	  `c_schema` text,
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = config_info_aggr   */
	/******************************************/
	CREATE TABLE `config_info_aggr` (
	  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
	  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
	  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
	  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
	  `content` longtext NOT NULL COMMENT '内容',
	  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
	  `app_name` varchar(128) DEFAULT NULL,
	  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
	
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = config_info_beta   */
	/******************************************/
	CREATE TABLE `config_info_beta` (
	  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
	  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
	  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
	  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
	  `content` longtext NOT NULL COMMENT 'content',
	  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
	  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
	  `src_user` text COMMENT 'source user',
	  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
	  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = config_info_tag   */
	/******************************************/
	CREATE TABLE `config_info_tag` (
	  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
	  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
	  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
	  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
	  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
	  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
	  `content` longtext NOT NULL COMMENT 'content',
	  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
	  `src_user` text COMMENT 'source user',
	  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = config_tags_relation   */
	/******************************************/
	CREATE TABLE `config_tags_relation` (
	  `id` bigint(20) NOT NULL COMMENT 'id',
	  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
	  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
	  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
	  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
	  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
	  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
	  PRIMARY KEY (`nid`),
	  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
	  KEY `idx_tenant_id` (`tenant_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = group_capacity   */
	/******************************************/
	CREATE TABLE `group_capacity` (
	  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
	  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
	  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
	  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
	  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
	  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
	  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
	  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_group_id` (`group_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = his_config_info   */
	/******************************************/
	CREATE TABLE `his_config_info` (
	  `id` bigint(64) unsigned NOT NULL,
	  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
	  `data_id` varchar(255) NOT NULL,
	  `group_id` varchar(128) NOT NULL,
	  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
	  `content` longtext NOT NULL,
	  `md5` varchar(32) DEFAULT NULL,
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
	  `src_user` text,
	  `src_ip` varchar(20) DEFAULT NULL,
	  `op_type` char(10) DEFAULT NULL,
	  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
	  PRIMARY KEY (`nid`),
	  KEY `idx_gmt_create` (`gmt_create`),
	  KEY `idx_gmt_modified` (`gmt_modified`),
	  KEY `idx_did` (`data_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
	
	
	/******************************************/
	/*   数据库全名 = nacos_config   */
	/*   表名称 = tenant_capacity   */
	/******************************************/
	CREATE TABLE `tenant_capacity` (
	  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
	  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
	  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
	  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
	  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
	  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
	  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
	  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
	  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
	  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
	
	
	CREATE TABLE `tenant_info` (
	  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
	  `kp` varchar(128) NOT NULL COMMENT 'kp',
	  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
	  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
	  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
	  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
	  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
	  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
	  PRIMARY KEY (`id`),
	  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
	  KEY `idx_tenant_id` (`tenant_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
	
	CREATE TABLE users (
		username varchar(50) NOT NULL PRIMARY KEY,
		password varchar(500) NOT NULL,
		enabled boolean NOT NULL
	);
	
	CREATE TABLE roles (
		username varchar(50) NOT NULL,
		role varchar(50) NOT NULL
	);
	
	INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
	
	INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
  1. nacos-server-1.1.4\nacos\conf目录下找到application.properties
	######################
	spring.datasource.platform=mysql 
	db.num=1
	db.url.0=jdbc:mysql://localhost:3306/nacos_config?
	characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
	db.user=root
	db.password=root
  • ③. 启动nacos,可以看到是个全新的空记录界面,以前是记录进derby
    在这里插入图片描述

②. nacos集群前置知识点

  • ①. 预计需要,1个nginx+3个nacos注册中心+1个mysql

  • ②. 安装linux环境,安装Jdk1.8、Nginx1.8、Mysql5.7.24、nacos

  • ③. Nacos下载linux版本
    链接:https://pan.baidu.com/s/131QEa12Kc1OJa1NYJncZ-g
    提取码:1234
    将nacos-server-1.1.4.tar.gz上传到/opt下
    在/opt下解压: tar -zxvf nacos-server-1.1.4.tar.gz
    将解压好的nacos,复制到/usr/local下: cp -rv nacos /usr/local
    在这里插入图片描述

③. 集群配置步骤

  • ①. Linux服务器上mysql数据库配置(nacos-mysql.sql | application.properties)
    在这里插入图片描述
    在这里插入图片描述

  • ②. application.properties

spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://1.7.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

在这里插入图片描述
在这里插入图片描述

  • ③. Linux服务器上nacos的集群配置cluster.conf
  1. 梳理出3台nacos机器的不同服务端口号(3333、4444、5555)
  2. 复制出cluster.conf
    在这里插入图片描述

在这里插入图片描述
3. 这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP在这里插入图片描述

  • ④. 编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端
  1. /mynacos/nacos/bin目录下有startup.sh
  2. 修改如下

在这里插入图片描述
在这里插入图片描述

  1. 执行方式如下
    在这里插入图片描述
  2. 查看nacos有多少个节点(ps -ef | grep nacos | grep -v grep|wc -l)
    在这里插入图片描述
  • ④. Nginx的配置,由它作为负载均衡器
  1. 修改nginx的配置文件
    在这里插入图片描述
  2. nginx.conf
    在这里插入图片描述
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream cluster{
        server 127.0.0.1:3333;
        server 127.0.0.1:4444;
        server 127.0.0.1:5555;
    }
    server {
        listen       1111;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://cluster;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

  1. 按照指定启动
    在这里插入图片描述
  • ⑤. 截止到此处,1个Nginx+3个nacos注册中心+1个mysql
  1. 测试通过nginx访问nacos(https://写你自己虚拟机的ip:1111/nacos/#/login)
  2. 新建一个配置测试
    在这里插入图片描述
  3. linux服务器的mysql插入一条记录
    在这里插入图片描述
  • ⑥. 测试:输入192.168.68.129:1111/nacos/#/login
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • ⑦. 高可用小总结
    在这里插入图片描述
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:00:25  更:2021-07-22 14:01:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 14:49:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码