Springcloud Alibaba系列之Nacos服务发现和配置中心

目录

 

服务发现和服务健康监测

动态配置

动态DNS服务

下载与安装

启动

单机模式

集群模式


服务发现和服务健康监测

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: dev

7.接口测试

@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里。

猜你喜欢

转载自blog.csdn.net/u012373281/article/details/117964879