Servlet - NIO & Async
servlet在“前”端基于jdk NIO实现了servlet nio,解绑了long connection与thread。同时在“后”端使用async servlet,解绑了long request与thread。二者都使得thread得到了解放,更适合高并发场景。 NIO servlet Async servlet server push:长request...
servlet在“前”端基于jdk NIO实现了servlet nio,解绑了long connection与thread。同时在“后”端使用async servlet,解绑了long request与thread。二者都使得thread得到了解放,更适合高并发场景。 NIO servlet Async servlet server push:长request...
redis常被用来实现分布式锁。分布式锁和并发编程理念一致,唯一的区别就是前者是多个进程之间的协同,后者是同一个进程里多个线程之间的协同。 分布式锁 Redis分布式锁 进程锁 vs. 线程锁 zookeeper分布式锁 znode redis vs. zk Ref 分布式锁 逻辑上,分布式锁...
jar是Java ARchive的缩写,将Java文件归档,其实和zip的原理类似,只不过加了一些java执行独有的功能。 zip view manifest - META-INF/MANIFEST.MF entry point - Main-Class other jar - Class-Path 冷知识:Jar-rela...
redis其他值得一提的小功能。 runtime config slowlog monitor runtime config 可以用 CONFIG SET <key> <value>进行runtime配置。 也可以 CONFIG GET <key>。 slowlog redis和mysql一样,也有慢查询日志。 在redis.co...
一台机器的内存是有限的,在上面部署的redis能存储的内容自然也是有限的。如果内容过多,只能使用分布式数据库,将内容分摊到一堆redis里,这就是redis集群。 Sentinel也是一堆redis,但那是为了高可用搞的主备,不同的redis保存的内容是相同的。和分布式集群不是一个东西。 node 节点模式 节点启动 节点连接 ...
Sentinel要解决的问题是高可用性(Highly Availability,HA),即:一个redis倒下去,千万个redis站起来,不至于系统没有redis可用了。也就是常说的主备。当master宕机的时候,要有slave站出来扛起大旗。 Sentinel本质上是一个redis,不过它不执行redis的db功能(所以它启动的时候也不需要载入AOF或者RDB文件),而是作为一个监...
之前总结了server的模型架构,采取nio进行IO多路复用,主要用一个主线程不断进行loop来完成所有的请求处理。那么处理client和server是如何交互的? client在server中的数据表示 文件描述符 client在server中的数据表示 每个与server连接的client,server都为其创建一个对象,保存在redisS...
上篇写的redis DB是redis server的主要功能。本文梳理一下redis server的架构、事件处理逻辑。 事件驱动程序 file event - 单线程的魅力 单线程的好处 单线程的不足 Redis 6 timer event 总结 事件驱动程序 redis server的主进程就是一个大lo...
Redis的数据库功能,和数据库的持久化。 DB db number dict 增删改查 过期时间 过期键删除 持久化 RDB 配置BGSAVE RDB结构 AOF ...
redis存储的kv都是object。object有五种,k永远都是string,v是string/list/set/zset/hash,其实就是string和list、set、map再加个sorted set。 数据结构 sds 字符 vs. 字节 list dict ...