大数据正式京淘5
NGINX的conf的配置文件的正则表达式
-
格式
server { listen 端口; server_name 域名; location 正则表达式 { #返回 } }
-
规则
= 精确匹配 ~ 区分大小写匹配 ~* 不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 ^ 以什么开头的匹配 $ 以什么结尾的匹配 \转义字符。可以转. * ?等 * 代表任意字符
负载均衡
- weight:权重,正相关
- down:宕机,永不访问
- 当服务器宕机不可恢复时,配置一个down,减少资源消耗
- 例子
upstream jt_tomcats { server 192.168.163.10:8080 weight=3; server 192.168.163.10:8090 weight=1; server 192.168.163.10:8100 down; }
session黏着--只访问你有信息的那一台
- 问题
- session在各个服务器的信息不是共享的
- session1【info】
- session2【】
- session3【】
- 。。。
- 图解
- session在各个服务器的信息不是共享的
- 解决
- ip_hash:
- 根据ip和端口【192.168.43.121:80】获取字符串的hash值【防止负数:hash值&Integer.MAX_VALUE】
- hash值得整数%(服务器的个数)
- 配置文件
upstream jt_tomcats { ip_hash; server 192.168.163.10:8080 weight=3; server 192.168.163.10:8090 weight=1; server 192.168.163.10:8100 down; }
- ip_hash:
url_hash黏着【依赖第三方插件】
- 访问服务器的url地址做hash取余运算
- 功能<====>服务器
SpringSession+Redis
- 原理
商品信息添加
- 注意
- 基本信息作为一个部分
- 图片作为一个部分
- 商品描述作为一个部分
商品信息修改
- 数据回显
- js获取一部分
- 数据库真实获取一部分
- 数据修改
- 级联更细
商品删除
- 记得级联删除
后台系统的高并发
- 技术
- Tomcat集群【每个200/s】
- NGINX【20台100w/s】
- 图解
- 瓶颈
- 数据库--查询(最突出)
- 解决办法
- Redis
- 分布式【数据划分】
- nosql【not only sequesce query language】【支持结构化;支持非结构】
- 可以持久化
- Redis
- 注意
- 持久化+内存=====启动恢复机制
- 分布式存储海量数据,放到内存,做缓存数据库
- 京淘的Redis
- 设计
- 数据库缓存
- 减少resultSet的封装
- 持久层缓存
- 减少对象的封装
- service缓存
- 减少调用层次
- controller缓存
- 减少调用
- 数据库缓存
- 设计目标
- 减少数据库的访问次数
- 减少网络的传输
- 减少封装的层次
- 设计
缓存
- 缓存架构
- ehcache(并发量差)
- memorycatch(Redis前的霸主100w/s)
- Redis:持久化可以在宕机恢复后,迅速解决数据丢失
- 雪崩【缓存击穿】:海量用户请求涌入,一旦缓存失效,数据库的压力骤增,数据库宕机
- 解决雪崩:缓存永不宕机,启动集群,永远只让集群中的一部分在运行,其他的待命
云主机搭建Redis
- 步骤
- Redis存储方式
- key-value
- key-{key-value}
- key-list
- Redis基础命令
- 操作字符串
- keys 正则
- get key名
- set key名 key值
- select 整数值(取值范围:默认0-15;作用选择那个分库)
- 数据分库0-15个库
- 默认为0库
因为代码控制不了选择那个库
- exits key名(判断当前的key是否存在)
- 与get的区别
1. exits逻辑判断返回是与否 2. get浪费资源,还得返回数据
- 与get的区别
- del key名
- type key名(得到的是value的类型)
- help 命令名(查看命令使用方式)
- flushall 将所有的数据持久化到文件(dump.rdb)
- flushdb 库号(当前库的持久化)
- 操作字符串