Nacos服务治理

Nacos 即 Naming and Configuration Service 是一个用于动态服务发现、配置管理和服务元数据的开源平台。提供了统一的服务注册和发现、配置管理和元数据管理的功能,可以帮助开发人员更轻松地构建云原生应用和微服务架构。

Nacos 的主要功能包括:

1、服务注册和发现:Nacos 允许服务实例向注册中心注册自己的信息,并且其他服务可以通过查询
注册中心来发现可用的服务实例。
2、配置管理:Nacos 提供了一个中心化的配置管理平台,可以动态地管理应用程序的配置信息。开
发人员可以在运行时更新配置,而不需要重启应用程序。
3、服务元数据管理:Nacos 可以帮助开发人员管理服务的元数据,包括版本号、权重、健康状态等。
这些元数据可以用于服务路由、负载均衡等场景。
4、动态 DNS 服务:Nacos 支持将服务名称解析为具体的网络地址,从而实现动态 DNS 服务的功能。

Nacos 工作原理

  1. 服务注册:服务提供者在启动时向 Nacos 注册中心注册自己的服务信息,包括服务名称、IP 地址
    和端口号等。注册完成后,Nacos 将服务信息保存在自己的注册表中。
  2. 服务发现:服务消费者在需要调用某个服务时,向 Nacos 注册中心发送服务名称的请求。Nacos
    根据服务名称从注册表中查找对应的服务提供者信息,并将其返回给服务消费者。
  3. 服务健康检查:Nacos 会定期向服务提供者发送心跳检查请求,以确保服务的可用性。如果某个
    服务提供者长时间未响应心跳检查,Nacos 会将其标记为不可用,并从注册表中移除。
  4. 动态配置管理:Nacos 提供了配置中心的功能,可以将应用程序的配置信息存储在 Nacos 中,并
    实现动态的配置更新。应用程序可以通过订阅配置的方式,实时获取最新的配置信息。
  5. 负载均衡:Nacos 可以根据注册表中的服务提供者信息,实现负载均衡的功能。当服务消费者需
    要调用某个服务时,Nacos 会根据负载均衡策略选择一个可用的服务提供者。
    在这里插入图片描述

Nacos 和 Eureka

Nacos 和 Eureka 都是服务发现和注册中心,用于管理和协调分布式系统中的服务实例。
主要区别:
  1. 开发和维护:Nacos 是阿里巴巴集团开发和维护的开源项目,而 Eureka 是 Netflix 开发和维护的开
    源项目。
  2. 功能和生态系统:Nacos 提供了服务注册、发现、配置管理和动态 DNS 等功能,同时还提供了更
    丰富的生态系统,如分布式配置、服务熔断、流量管理等。Eureka 主要关注服务注册和发现的功能。
  3. 一致性协议:Nacos 使用基于 Raft 协议的一致性算法来保证数据的一致性和高可用性。而 Eureka
    使用了 CAP 原理中的 AP 可用性和分区容错性模型,牺牲了一致性。
  4. 社区支持和发展:Nacos 在中国社区有着广泛的支持和活跃的发展,有大量的用户和贡献者。而
    Eureka 在国际社区有更广泛的应用和支持。
  5. 生态整合:Nacos 可以与 Spring Cloud、Dubbo 等广泛使用的开发框架进行无缝整合。Eureka 也
    与 Spring Cloud 紧密结合,并且在 Netflix 的微服务套件中有更多的组件和工具可用。
    总体而言,Nacos 提供了更多的功能和生态系统,而 Eureka 则更专注于服务注册和发现的功能。选
    择使用哪个取决于项目的需求和团队的偏好。

数据库设计

SPU 标准产品单位是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。如 iPhone X 可以确定一个产品即为一个 SPU,SPU 是由品牌+型号+关键属性构成的SKU 库存量单位。如 iPhone X 64G 银色 则是一个 SKU
针对电商而言:
1、SKU 是指一款商品,每款都有出现一个 SKU,便于电商品牌识别商品。
2、一款商品多色,则是有多个 SKU,例一件衣服,有红色、白色、蓝色,则 SKU 编码也不相同,如相同则会出现混淆,发错货。
分类表设计如下:

CREATE TABLE `category` ( `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '分类 ID', `name` varchar(50) DEFAULT NULL COMMENT '分类名称', `sort` int(11) DEFAULT NULL COMMENT '排序', `parent_id` int(20) DEFAULT NULL COMMENT '上级 ID', PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11182 DEFAULT CHARSET=utf8 COMMENT='商品类

分类选择完成后,需要加载品牌,品牌加载并非一次性加载完成,而是根据选择的分类进行加载。分类品牌关
系表:

DROP TABLE IF EXISTS `category_brand`;
CREATE TABLE `category_brand` ( `category_id` int(11) NOT NULL COMMENT '分类 ID', `brand_id` int(11) NOT NULL COMMENT '品牌 ID', PRIMARY KEY (`brand_id`,`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

品牌表:

CREATE TABLE `brand` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '品牌 id', `name` varchar(100) NOT NULL COMMENT '品牌名称', `image` varchar(1000) DEFAULT '' COMMENT '品牌图片地址', `initial` varchar(1) DEFAULT '' COMMENT '品牌的首字母', `sort` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='品牌

当选择分类后,会加载分类对应的属性。
分类属性表:

DROP TABLE IF EXISTS `category_attr`;
CREATE TABLE `category_attr` ( `category_id` int(11) NOT NULL, `attr_id` int(11) NOT NULL COMMENT '属性分类表', PRIMARY KEY (`category_id`,`attr_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

属性表:

CREATE TABLE `sku_attribute` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) DEFAULT NULL COMMENT '属性名称', `options` varchar(2000) DEFAULT NULL COMMENT '属性选项', `sort` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;




CREATE TABLE `spu` ( `id` varchar(60) NOT NULL COMMENT '主键', `name` varchar(100) DEFAULT NULL COMMENT 'SPU 名', `intro` varchar(200) DEFAULT NULL COMMENT '简介', `brand_id` int(11) DEFAULT NULL COMMENT '品牌 ID', `category_one_id` int(20) DEFAULT NULL COMMENT '一级分类', `category_two_id` int(10) DEFAULT NULL COMMENT '二级分类', `category_three_id` int(10) DEFAULT NULL COMMENT '三级分类', `images` varchar(1000) DEFAULT NULL COMMENT '图片列表', `after_sales_service` varchar(50) DEFAULT NULL COMMENT '售后服务', `content` longtext COMMENT '介绍', `attribute_list` varchar(3000) DEFAULT NULL COMMENT '规格列表', `is_marketable` int(1) DEFAULT '0' COMMENT '是否上架,0 已下架,1 已上架', `is_delete` int(1) DEFAULT '0' COMMENT '是否删除,0:未删除,1:已删除', `status` int(1) DEFAULT '0' COMMENT '审核状态,0:未审核,1:已审核,2:审核不通过', PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



CREATE TABLE `sku` ( `id` varchar(60) NOT NULL COMMENT '商品 id', `name` varchar(200) NOT NULL COMMENT 'SKU 名称', `price` int(20) NOT NULL DEFAULT '1' COMMENT '价格(分)', `num` int(10) DEFAULT '100' COMMENT '库存数量', `image` varchar(200) DEFAULT NULL COMMENT '商品图片', `images` varchar(2000) DEFAULT NULL COMMENT '商品图片列表',
create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `spu_id` varchar(60) DEFAULT NULL COMMENT 'SPUID', `category_id` int(10) DEFAULT NULL COMMENT '类目 ID', `category_name` varchar(200) DEFAULT NULL COMMENT '类目名称', `brand_id` int(11) DEFAULT NULL COMMENT '品牌 id', `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称', `sku_attribute` varchar(200) DEFAULT NULL COMMENT '规格', `status` int(1) DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除', PRIMARY KEY (`id`), KEY `cid` (`category_id`), KEY `status` (`status`), KEY `updated` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

订单详表:

CREATE TABLE `order_master` ( `order_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '订单 ID', `order_sn` bigint(20) unsigned NOT NULL COMMENT '订单编号 yyyymmddnnnnnnnn', `customer_id` int unsigned NOT NULL COMMENT '下单人 ID', `shipping_user` varchar(10) NOT NULL COMMENT '收货人姓名', `province` smallint NOT NULL COMMENT '收货人所在省', `city` smallint NOT NULL COMMENT '收货人所在市', `district` smallint NOT NULL COMMENT '收货人所在区', `address` varchar(100) NOT NULL COMMENT '收货人详细地址', `payment_method` tinyint NOT NULL COMMENT '支付方式:1 现金,2 余额,3 网银,4 支付宝,5 微信', `order_money` decimal(8,2) NOT NULL COMMENT '订单金额', `district_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '优惠金额', `shipping_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '运费金额', `payment_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '支付金额', `shipping_comp_name` varchar(10) DEFAULT NULL COMMENT '快递公司名称', `shipping_sn` varchar(50) DEFAULT NULL COMMENT '快递单号', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间', `shipping_time` datetime DEFAULT NULL COMMENT '发货时间', `pay_time` datetime DEFAULT NULL COMMENT '支付时间',
`receive_time` datetime DEFAULT NULL COMMENT '收货时间', `order_status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态', `order_point` int unsigned NOT NULL DEFAULT '0' COMMENT '订单积分', `invoice_title` varchar(100) DEFAULT NULL COMMENT '发票抬头', `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT '最后修改时间', PRIMARY KEY (`order_id`), UNIQUE KEY `ux_ordersn` (`order_sn`)
) ENGINE=InnoDB COMMENT='订单主表';


CREATE TABLE `order_detail` ( `order_detail_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键 ID,订单详情表 ID', `order_id` int unsigned NOT NULL COMMENT '订单表 ID', `product_id` int unsigned NOT NULL COMMENT '订单商品 ID', `product_name` varchar(50) NOT NULL COMMENT '商品名称', `product_cnt` int NOT NULL DEFAULT '1' COMMENT '购买商品数量', `product_price` decimal(8,2) NOT NULL COMMENT '购买商品单价', `average_cost` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '平均成本价格', `weight` float DEFAULT NULL COMMENT '商品重量', `fee_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '优惠分摊金额', `w_id` int unsigned NOT NULL COMMENT '仓库 ID', `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT '最后修改时间', PRIMARY KEY (`order_detail_id`)
) ENGINE=InnoDB COMMENT='订单详情表';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值