负载均衡
四层负载均衡:数据包级别的,不会发生握手 DNAT 要求RS(real sever)的网关指向负载均衡服务器
基于二层负载均衡:mac地址欺骗 速度快 成本低 DR 但是需要在一个局域网 VIP地址对内可见,对外隐藏
lvs:1.lvs会挂,业务下限,单点问题 2.RS会挂,一部分用户会请求异常,lvs还存有这个RS的负载记录
keepalive程序:1监控自己服务 2.主通告自己活着,备监听主状态,主挂了,备推举出新的主 3.配置vip,添加ipvs 4.对RS进行健康检查
keepalive是一个通用工具,主要用作HA(高可用)
keepalive程序配置文件有一个persistence_timeout,可以在一定时间内总是负载到之前的负载服务器,节省内存开销
redis
redis安装完后,注册服务启动,进入客户端,有16个组相互独立,交互的是字节流(二进制安全)
set value是string类型,但是有数值运算和bitmap操作(setbit bitcount bitpos bittop),redis是原子性的 redis-cli --raw 可以把字节流通过utf-8(3个)和gbk(2个 )转换成中文
lpush(栈)/rpush(队列) value是list类型 能按位取元素 bpop阻塞单播队列
hset 键值队 sadd 无序去重 集合操作(交并差) spop随机取出一个
sorted_set zadd zrange 也可以集合操作 权重/聚合指令 排序怎么实现的:跳跃表
扩展包来实现过滤,key的有效期可以设置,访问不变,写踢除过期时间,需要业务逻辑补全
管道:衔接,前一个命令的输出作为后一个命令的输入 管道触发创建子线程
RDB持久化:linux父子进程,父进程的数据,子进程可不可以看到?一般来说隔离的,但是可以export,但是父子修改都不会破坏子父进程的数据,(创建的时候不发生复制,写时复制) redis的持久化就是利用的这个原理(不会出现时点混乱)
缺点:容易丢失数据 优点:类似于java序列化,回复速度快
AOF:写操作记录到文件中,数据丢失少,有一个全量RDB和AOF 时间长文件大 redis4.0后AOF是一个混合体,RDB+增量
hdfs:fsimage+edits.log 让日志只记录增量合并的过程