畅购spu,sku分离,Lua,OpenResty,Nginx,Canal同步(二)

文章目录

  • 一、spu+sku
    • 1、 SPU与SKU概念
    • 2、代码生成器
  • 二、Lua
    • 1、lua是什么
    • 2、应用场景
    • 3、lua语法
  • 三、OpenResty(处理并发)
    • 1、openResty介绍
    • 2、有关安装OpenResty、配置Lua +Nginx
  • 四、Nginx限流
    • 1、限流的方式
    • 2、控制速率
    • 3、控制并发
  • 五、Canal同步
    • 1、工作原理
    • 2、canal同步监听

一、spu+sku

1、Spu与Sku概念

  SPU:某一款商品的公共属性
  SKU:某款商品的不同参数对应的商品信息[某个商品]

1、 SPU与SKU概念

SPU = Standard Product Unit (标准产品单位)

  • 概念 : SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
  • 通俗点讲,属性值、特性相同的货品就可以称为一个 SPU

同款商品的公共属性抽取

例如:华为P30 就是一个 SPU

SKU=stock keeping unit( 库存量单位)

  • SKU 即库存进出计量的单位, 可以是以件、盒、托盘等为单位。
  • SKU 是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。
  • 在服装、鞋类商品中使用最多最普遍。

例如:华为P30 红色 64G 就是一个 SKU

某个库存单位的商品独有属性(某个商品的独有属性)

2、代码生成器

码云地址利用代码生成器,可以轻松的构建增、删,改查,分页等代码,

pojo、controller、service、serviceImp等代码,同时可以生成swagger API,

解决的大概80%~90%的代码编写。

同时,还可以根据自己的需求修改,配置出自己需求的代码模板。

二、Lua

1、lua是什么

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

2、应用场景

  • 游戏开发()
  • 独立应用脚本
  • Web 应用脚本
  • 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
  • 安全系统,如入侵检测系统
  • redis中嵌套调用实现类似事务的功能
  • web容器中应用处理一些过滤 缓存等等的逻辑,例如nginx。

3、lua语法

lua语法、思路与java类似,实现实现形式不同而已,(了解一下就可以)

数据类型:

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

数据类型 描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数
string 字符串由一对双引号或单引号来表示
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
table Lua 中的表(table)其实是一个“关联数组”(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过“构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。

三、OpenResty(处理并发)

1、openResty介绍

OpenResty(又称:ngx_openresty) 是一个基于 nginx的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。

OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。

360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。

OpenResty 简单理解成 就相当于封装了nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。

2、有关安装OpenResty、配置Lua +Nginx

https://gitee.com/skygwz/changgou/blob/master/day04/%E8%AE%B2%E4%B9%89/%E7%AC%AC4%E5%A4%A9.md.html

四、Nginx限流

1、限流的方式

nginx提供两种限流的方式:

  • 一是控制速率
  • 二是控制并发连接数

2、控制速率

通过服务控制每秒处理的请求数

漏桶算法实现控制速率限流

漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.示意图如下:

畅购spu,sku分离,Lua,OpenResty,Nginx,Canal同步(二)_第1张图片

3、控制并发

利用连接数限制 某一个用户的ip连接的数量来控制流量。

注意:并非所有连接都被计算在内 只有当服务器正在处理请求并且已经读取了整个请求头时,才会计算有效连接。

简单来说,就是通过设置在某段时间,能够处理的请求数量。

通过限制单个IP的请求次数,来控制请求并发量。

五、Canal同步

1、工作原理

原理相对比较简单:

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

canal需要使用到mysql,我们需要先安装mysql,给大家发的虚拟机中已经安装了mysql容器,但canal是基于mysql的主从模式实现的,所以必须先开启binlog.

2、canal同步监听

一旦服务调用,对数据库中的数据进行操作,canal就会监听到数据的操作。

畅购spu,sku分离,Lua,OpenResty,Nginx,Canal同步(二)_第2张图片

六、缓存架构

通过openResty + Lua + Redis 实现缓冲架构。

畅购spu,sku分离,Lua,OpenResty,Nginx,Canal同步(二)_第3张图片

你可能感兴趣的:(#,微服务和分布式)