支付公司网站建设费账务处理,有哪些做的比较好的网站,建企业网站程序系统,描述自己做的网站目录
Nacos的配置
Nacos的单机启动
服务注册
Nacos服务分级存储模型
优先访问同集群的服务
根据权重负载均衡
环境隔离Namespace
Nacos调用流程
Nacos与Eureka注册对比
Nacos与Eureka的共同点
Nacos与Eureka的区别
Nacos配置管理
统一配置
配置自动刷新
多环境配…目录
Nacos的配置
Nacos的单机启动
服务注册
Nacos服务分级存储模型
优先访问同集群的服务
根据权重负载均衡
环境隔离Namespace
Nacos调用流程
Nacos与Eureka注册对比
Nacos与Eureka的共同点
Nacos与Eureka的区别
Nacos配置管理
统一配置
配置自动刷新
多环境配置共享
配置文件优先级
Nacos集群搭建
数据库初始化
配置nacos
启动nacos
负载均衡反向代理Nginx Nacos的配置
在GitHub下载好Nacos之后解压到目录中需要对其进行配置如果端口不存在占用则不需要进行修改。解压后进入conf目录下编辑appliaction.properties文件修改端口默认端口为8848
Nacos的单机启动 启动方式在bin目录下打开cmd窗口输入startup.cmd -m standalone 访问Nacos的主页(默认账号与密码都为nacos) 服务注册
Eureka与Nacos并不能同时存在因此需要将Eureka的依赖注掉引入Nacos的依赖首先在父工程中引入管理依赖。
!--nacos依赖管理--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.5.RELEASE/versiontypepom/typescopeimport/scope
/dependency 在其他项目中引入Nacos的依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency 然后修改配置文件 spring:cloud:nacos:server-addr: localhost:8848 #服务端地址 启动服务观察Nacos主页 Nacos服务分级存储模型 一个服务比如说User-Server启动起来的IP端口 就是一个实例对象不同机房的实例对象的集合叫集群。
之所以存在该模型是为了避免只有一个集群时当机房发生事故导致服务无法访问。
服务调用尽可能的调用本地集群跨集群访问延迟大。如果本地集群不可用再选择跨集群调用
默认是没有分配集群的如果需要需要在配置文件中进行配置
spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HN #配置集群名称 河南 启动多个服务更换集群名称查看Nacos信息 优先访问同集群的服务
在没有配置的情况下默认采用的是轮询的方式去调用服务这不符合集群的访问规则因此我们可以通过修改配置文件来实现优先访问同集群服务然后再本地集群中选择随机的访问规则
xxx-server:ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.naocs.ribbon.NacosRule #选择负载均衡策略
根据权重负载均衡
由于修改后的负载均衡策略是随机分配但是有些设备性能较差有些设备性能好我们希望可以让性能好的设备多处理一些事件那么我们可以通过修改权重来更改随机概率权重越大访问次数越多。 环境隔离Namespace 首先需要在Nacos控制台创建命名空间 然后将服务放置在命名空间这就需要在代码中修改配置文件了 spring:cloud:nacos:server-addr: localhost:8848discovery:namespace: 命名空间ID 不在同一个命名空间的服务是无法互相访问的 Nacos调用流程 当服务没有配置时默认是临时实例临时实例采用心跳检测存活状态当服务挂掉之后会直接将临时实例剔除而非临时实例nacos会主动询问存活状态当挂掉之后也不会剔除等待重新启动消费者会主动拉取生产者信息在自己内部缓存当有状态发生变更时nacos会立刻主动更新最新消息给消费者。
spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HN #配置集群名称 河南ephemeral: false #设置为非临时实例
Nacos与Eureka注册对比
Nacos与Eureka的共同点
都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测
Nacos与Eureka的区别
Nacos支持服务端主动检测提供者状态临时实例采用心跳模式非临时实例采用主动检测模式。临时实例心跳不正常会被剔除非临时实例则不会被剔除。Nacos支持服务列表变更的消息推送模式服务列表更新更及时。Nacos集群默认采用AP方式当集群中存在非临时实例时采用CP模式Eureka采用AP方式。
Nacos配置管理
当服务启动过多时需要进行配置文件修改如果一个一个修改则工作量较大且易出错而且修改配置后还需要进行重启。为此Nacos提供了配置管理服务 在配置内容栏中并不是将所有的配置文件粘贴进去而是由热更新需求的配置进去就好。 统一配置 在启动服务时在读取application文件时优先读取nacos文件中的内容而nacos的地址就需要保存在一个读取优先级更高的文件中bootstarp.yml 实现该功能需要引入配置依赖 !--nacos的配置文件管理--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency 在resource添加配置文件bootstrap.yml spring:application:name: 服务名称profiles:active: 命名空间IDcloud:nacos:server-addr: localhost:8848 #Nacos地址config:file-extension: yaml #文件后缀名
配置自动刷新
当配置文件更改时默认是不会生效的要实现自动刷新配置功能有两种方法。
在读取nacos配置文件信息的类中添加RefreshScope添加一个配置类使用ConfigurationProperties注解 假如说我们存在一个时间格式转换的配置如下图 我们可以在使用RefreshScope注解实现配置刷新 RestController
RequestMapping(order)
RefreshScope
public class OrderController {Value(${pattern.dateformat})private String dateFormat;Autowiredprivate OrderService orderService;GetMapping({orderId})public Order queryOrderByUserId(PathVariable(orderId) Long orderId,RequestHeader(value Truth,required false) String truth) {// 根据id查询订单并返回return orderService.queryOrderById(orderId);}
} 也可以使用配置类然后在其他地方注入属性配置类通过调用get方法获取配置值 Data
Component
ConfigurationProperties(prefix pattern)
public class PatternProperties {private String dateformat;
}注意不是所有的配置都适合存放配置中心一般是存放自定义配置 多环境配置共享
有一些是无论是什么环境都不会改变的配置可以采用多环境配置共享的方法来减少文件编写次数。
微服务启动时会从nacos读取多个配置文件
[spring.application.name]-[spring.profiles.active].yaml例: userservice-dev.yaml[spring.application.name].yaml例如: userservice.yaml
无论profile如何变化[spring.application.name].yaml这个文件一定会加载因此多环境共享配置可以写入这个文件。
配置文件优先级
当一个配置在Nacos中配置也在本地环境中配置时会存在配置文件优先级的问题。优先级从高到低排序为
[spring.application.name]-[spring.profiles.active].yaml指定环境的优先级最高[spring.application.name].yaml多环境配置次高本地配置最低
因此当同时配置一个属性时会采用指定环境的nacos配置文件。
Nacos集群搭建 Nacos集群为了保持数据一致性需要访问同一个数据库集群当请求发起时通过Nginx进行负载均衡。
数据库初始化
sql文件在nacos文件下的conf文件下存在一份 如果不存在可以复制如下代码 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 CURRENT_TIMESTAMP COMMENT 创建时间,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间,src_user text COMMENT source user,src_ip varchar(50) 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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_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 CURRENT_TIMESTAMP COMMENT 创建时间,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间,src_user text COMMENT source user,src_ip varchar(50) 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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_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 CURRENT_TIMESTAMP COMMENT 创建时间,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间,src_user text COMMENT source user,src_ip varchar(50) DEFAULT NULL COMMENT source ip,PRIMARY KEY (id),UNIQUE KEY uk_configinfotag_datagrouptenanttag (data_id,group_id,tenant_id,tag_id)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_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 CURRENT_TIMESTAMP COMMENT 创建时间,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间,PRIMARY KEY (id),UNIQUE KEY uk_group_id (group_id)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_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 CURRENT_TIMESTAMP,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,src_user text,src_ip varchar(50) 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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_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 CURRENT_TIMESTAMP COMMENT 创建时间,gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间,PRIMARY KEY (id),UNIQUE KEY uk_tenant_id (tenant_id)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_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)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTtenant_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,UNIQUE INDEX idx_user_role (username ASC, role ASC) USING BTREE
);CREATE TABLE permissions (role varchar(50) NOT NULL,resource varchar(255) NOT NULL,action varchar(8) NOT NULL,UNIQUE INDEX uk_role_permission (role,resource,action) USING BTREE
);INSERT INTO users (username, password, enabled) VALUES (nacos, $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu, TRUE);INSERT INTO roles (username, role) VALUES (nacos, ROLE_ADMIN);
配置nacos 存在3个nacos节点需要在conf目录下先修改application.properties文件中的端口号避免重复。其次将mysql配置打开。 其次修改cluster.conf.example文件重命名为cluster.conf。并点击配置集群节点 如果是2.x版本的Nacos建议单口修改为8748、8648。因为在2.x版本之后又引入了gRPC服务在启动时会占用相邻端口启动第一个之后的其他Nacos节点会导致端口占用。 启动nacos
不需要指定-m等参数直接输入指令startup.cmd 全部启动成功。 负载均衡反向代理Nginx 配置Nginx修改conf文件下的nginx.conf文件添加如下代码 双击启动nginx.exe 访问localhost/nacos展示如下 修改Java代码配置、Nacos与Nginx服务启动后需要在bootstarp.yml文件中配置Nginx配置的代理端口为80你修改的Nginx端口