@TOC
問題背景
從零開始學springcloud微服務項目
注意事項:
- 約定 > 配置 > 編碼
- IDEA版本2021.1
- 這個項目峡懈,我分了很多篇章,每篇文章一個操作步驟,目的是顯得更簡單明了
- controller調(diào)service馏臭,service調(diào)dao
- 默認安裝nginx
- 項目源碼以及sentinel安裝包
nacos命名空間
1 默認命名空間為:public
2 創(chuàng)建新分組
3 更改bootstrap和application
spring:
profiles:
#active: dev # 表示開發(fā)環(huán)境
active: info
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址 #Nacos服務注冊中心地址
config:
server-addr: localhost:8848 #配置Nacos地址 #Nacos作為配置中心地址
file-extension: yml #指定yml格式的配置
group: DEV_GROUP #設置分組
# ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yml
4 新建命名空間
5 bootstap添加命名空間:namespace: da7f89ef-5fb2-49c5-96bb-6fabcf44d1d5 #選擇dev
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址 #Nacos服務注冊中心地址
config:
server-addr: localhost:8848 #配置Nacos地址 #Nacos作為配置中心地址
file-extension: yml #指定yml格式的配置
namespace: da7f89ef-5fb2-49c5-96bb-6fabcf44d1d5 #選擇dev
group: DEV_GROUP #設置分組
# ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yml
nacos集群和持久化
1 Nacos默認自帶的是嵌入式數(shù)據(jù)庫derby边坤,集群搭建會產(chǎn)生數(shù)據(jù)一致性問題名扛,所以需要mysql解決問題
2 在nacos-server-2.0.3\nacos\conf目錄下找到sql腳本
CREATE DATABASE nacos_config;
USE nacos_config;
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '創(chuàng)建時間',
`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';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '內(nèi)容',
`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='增加租戶字段';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '創(chuàng)建時間',
`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';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '創(chuàng)建時間',
`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';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '單個配置大小上限肮韧,單位為字節(jié),0表示使用默認值',
`max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個數(shù)旺订,弄企,0表示使用默認值',
`max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '單個聚合數(shù)據(jù)的子配置大小上限,單位為字節(jié)耸峭,0表示使用默認值',
`max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
`gmt_create` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '創(chuàng)建時間',
`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容量信息表';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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='多租戶改造';
/******************************************/
/* 數(shù)據(jù)庫全名 = 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 '單個配置大小上限劳闹,單位為字節(jié)院究,0表示使用默認值',
`max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個數(shù)',
`max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '單個聚合數(shù)據(jù)的子配置大小上限,單位為字節(jié)本涕,0表示使用默認值',
`max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
`gmt_create` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '創(chuàng)建時間',
`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 '創(chuàng)建時間',
`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');
3 在nacos-server-2.0.3\nacos\conf目錄下找到application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
4 添加集群nacos的ip端口
192.168.207.128:8848
192.168.207.128:8849
192.168.207.128:8850
5 啟動nacos/bin/startup.sh
nginx配置
1 打開配置业汰,更改
vim /usr/local/nginx/conf/nginx.conf
upstream nacos-cluster {
server 192.168.207.128:8848;
server 192.168.207.128:8849;
server 192.168.207.128:8850;
}
server {
listen 80; #端口可以改
server_name www.nacos-test.com;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://nacos-cluster;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2 測試通過nginx訪問nacos:http://192.168.207.128:80/nacos
3 yml更改為:
server-addr: 192.168.207.128:80
SpringCloud無介紹快使用,Seata處理分布式事務(二十五)
SpringCloud無介紹快使用菩颖,sentinel服務熔斷功能(二十四)
SpringCloud無介紹快使用样漆,sentinel注解@SentinelResource的基本使用(二十三)
SpringCloud無介紹快使用,sentinel熱點key限流與系統(tǒng)規(guī)則的基本使用(二十二)
SpringCloud無介紹快使用晦闰,sentinel熔斷降級和限流的基本使用(二十一)
SpringCloud無介紹快使用放祟,Nacos集群和Nginx代理(二十)
SpringCloud無介紹快使用鳍怨,nacos配置中心的基本使用(十九)
SpringCloud無介紹快使用,nacos注冊中心的基本使用(十八)
SpringCloud無介紹快使用跪妥,gateway通過微服務名實現(xiàn)動態(tài)路由(十七)
SpringCloud無介紹快使用鞋喇,gateway的基本使用(十六)
SpringCloud無介紹快使用,Ribbon負載均衡工具與OpenFeign的使用(十五)
SpringCloud無介紹快使用眉撵,使用Zookeeper替換Eureka服務注冊與發(fā)現(xiàn)(十四)
SpringCloud無介紹快使用侦香,服務發(fā)現(xiàn)Discovery和Eureka自我保護(十三)
SpringCloud無介紹快使用,集群cloud-provider-payment8002搭建(十二)
SpringCloud無介紹快使用纽疟,集群Eureka服務注冊中心cloud-eureka-server7002搭建(十一)
SpringCloud無介紹快使用罐韩,單機Eureka服務注冊中心cloud-eureka-server7001搭建(十)
SpringCloud無介紹快使用,新建cloud-api-commons公共模塊module(九)
SpringCloud無介紹快使用污朽,新建子module消費者訂單模塊(八)
SpringCloud無介紹快使用散吵,熱部署devtools配置(七)
SpringCloud無介紹快使用,子module提供者支付微服務業(yè)務開發(fā)(六)
SpringCloud無介紹快使用膘壶,新建子module提供者支付微服務yml整合和新建啟動類(五)
SpringCloud無介紹快使用错蝴,新建子module提供者支付微服務pom整合(四)
SpringCloud無介紹快使用,springcloud父工程pom文件整理(三)
SpringCloud無介紹快使用颓芭,IDEA新建springcloud父工程(二)
SpringCloud無介紹快使用顷锰,與Spingboot之間的兼容版本選擇(一)
作為程序員第 187 篇文章,每次寫一句歌詞記錄一下亡问,看看人生有幾首歌的時間官紫,wahahaha ...