扔掉手机 用笔记本学习
学习
知识图谱
启动 stock-provider
zuul
seckill provider
openresty
操作界面
cdh1:8080/views/seckill.html
秒杀暴露
cdh1:8888/swagger-ui.html
秒杀启动配置文件
/etc/rc.local
java 配置文件
/etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export VIRTUAL_IP=cdh1
export SCAFFOLD_DB_HOST=cdh1
export SCAFFOLD_DB_USER=root
export SCAFFOLD_DB_PSW=123456
export SCAFFOLD_REDIS_HOST=$VIRTUAL_IP
export SCAFFOLD_REDIS_PSW=123456
export SCAFFOLD_EUREKA_ZONE_HOSTS=http://$VIRTUAL_IP:7777/eureka/
export RABBITMQ_HOST=$VIRTUAL_IP
export SCAFFOLD_ZOOKEEPER_HOSTS=$VIRTUAL_IP:2181
export LUA_PATH="./?.lua;$ZBS/lualibs/?/?.lua;$ZBS/lualibs/?.lua"
export LUA_CPATH="$ZBS/bin/linux/x64/?.so;$ZBS/bin/linux/x64/clibs/?.so"
export redis_host=$VIRTUAL_IP
export redis_pwd=123456
export KAFKA_HOME=/work/kafka_2.11-1.0.2
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
export LC_ALL=en_US.UTF-8
export LC_ALL=en_US.UTF-8
[root@cdh1 vagrant]# find ./ -name “error.log” ./LuaDemoProject/src/logs/error.log [root@cdh1 vagrant]# vim ./LuaDemoProject/src/logs/error.log
#user nobody; worker_processes 1;
#开发环境 error_log logs/error.log debug;
https://www.cnblogs.com/crazymakercircle/p/12115651.html
客户端层: pc浏览器 手机app h5页面
接入层: 负载均衡 异地多活
服务层: 服务治理 服务隔离 服务降级 服务流控
缓存层: 一级缓存 二级缓存
数据库层: 结构化db 异构数据
中间层: zk mq
经过cdn,nginx(商品详情),微服务和数据库
采用漏斗形过滤模型
分层过滤原则
相同接口调用一次或多次这个请求, 返回一致的结果
不同用户量和不同场景下的吞吐量(qps)
不同用户量和不同场景各个组件的部署架构
qps 每秒处理查询数
tps 每秒处理事务数
iops 每秒磁盘io次数
人的因素 数量 亿级 百亿级
网络架构
百亿用户读
百亿用户写
数据库架构
Openresty是基于nginx与lua的高性能web框架,继承了大量的高质量的lua库、第三方模块以及大多数依赖项。
ZeroBrane Studio已被用于调试各种Lua引擎 – 游戏框架(如Corona,Gideros,Moai,Love2d),家庭自动化设备,wirehark 脚本,Adobe Lightroom插件等 – 但是已经有几种Lua环境没有尝试过
redis 数据结构
lua 返回值说明
--返回值说明
--1 排队成功
--2 秒杀库存没有找到
--3 人数超过限制
--4 库存不足
--5 排队过了
--6 秒杀过了
库存没有找到
增加秒杀商品
##
暴露商品秒杀
获取exposedkey ,在后面使用秒杀
加载lua脚本到redis中
库存数量 seckill stcoke
商品id seckill sku
hash 结构 , 秒杀 seckill queue , 用户和exposekey
脚本摘要 保存lua脚本
限流的lua脚本
服务总线
遇到的问题 解决方案
ctrl f12 查看所有函数
调试环境配置教程
lua的初衷本就是是作为一个嵌入式语言,为了这个目的,它的一切都是减无可减,拿来写大点儿的东西,就会感觉老是要自己发明轮子。比如,python方便好用的slice操作,lua就没有。 python 3的好处就是轮子基本上都发明好了,而且语言本身也有一堆语法糖让你用起来方便快捷。 但是如果项目需要一个嵌入式脚本引擎的话,我还是会选择lua的。所以lua和python基本上应用领域不冲突,有需要的话,俩都学其实也不错,并不用费多少功夫。
zk cp 强一致 (不能在10万到 百万级别) , 用于生成分布式服务节点id
阿虎 测试 benchmark 400万 开源代码 jmh基准测试
> jmh方法测试 https://blog.csdn.net/weixin_43767015/article/details/104758415
雪花算法 64bit 每毫秒400万
卷1 源码 , snowflakIdTest
解决 订单超卖问题 跨jvm资源征用问题
setnx 如果key存在, 则key 为x
expire 设置key 锁定 几秒
lua 在redis中执行脚本是原子性的
lock.lua redis 加锁脚本
ctrl - shift n 打开文件
watch 跟踪变化 邮件通知
star 点赞
fork 修改问题 pull给作者