目录
服务发现和服务健康监测
nacos主要用于服务发现和配置管理,Nacos提供了一些简单易用的特性集,帮助我们快速实现动态的服务发现、服务配置、服务元数据和流量管理。
nacos的关键特性主要包括服务发现和服务健康检测,支持dns和rpc的服务发现,提供对服务的实时监控,阻止向不健康的主机或服务实例发送请求。
nacos支持传输层(ping或tcp)和应用层(如http、mysql、用户自定义)的健康检查。
nacos还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
动态配置
动态配置服务,可以让应用配置和服务配置,具备中心化、外部化、动态化,更方便管理。
动态配置消除了配置变更后,需要重新部署应用的问题,让应用可以在不重启的情况下,进行配置更新。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
nacos提供了可视化操作界面,配置参数可以实时看到,方便管理。提供了版本跟踪、版本对比,一键回滚。
动态DNS服务
动态dns服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现从DNS协议为基础的服务发现。
下载与安装
nacos github地址是 https://github.com/alibaba/nacos/release

选择相应版本,我这里选择linux版本,解压即可。
启动
单机模式
进入bin目录,执行命令 sh startup.sh -m standalone ,这是单机模式下运行。
访问服务器8848端口,如果是阿里云服务器,注意要添加安全组端口,外网才能访问。
访问nacos,http://localhost:8848/nacos/
nacos默认登录账号和密码是nacos

集群模式
1.准备三台端口不同,配置一样的nacos

2.修改配置文件cluster.conf,修改集群ip

3.修改nacos的application.properties的数据库连接信息,这里只列举修改部分
server.servlet.contextPath=/nacos
spring.datasource.platform=mysql
db.num=1
db.url=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=123456
4.创建数据库,创建表
/**************/ /* 数据库全名 = 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 ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');

5.访问nacos主页,添加配置数据


6.springcloud代码集成,记住nacos启动命令sh start.sh,不要用单机启动命令
server:
port: 8080
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848,127.0.0.1:8480,127.0.0.1:8580
file-extension: yml
discovery:
server-addr: 127.0.0.1:8848,127.0.0.1:8480,127.0.0.1:8580
application:
name: demo
profiles:
active: dev7.接口测试
@RestController
@RequestMapping("/demo")
public class DemoController {
@Value("${person.name}")
private String name;
@Autowired
private ConfigurableApplicationContext configurableApplicationContext;
@GetMapping("/demo")
public String test(){
return "domain is:"+name;
}

以上演示的是集群模式,也是把配置存储到mysql里,这样我们可以通过页面直接配置,存储到mysql里。