摘要:
首先我们要知道URL的组成结构: 协议 + :// + 认证信息 + @ + 域名 or IP地址 + 端口号 + 资源路径 + ? + 查询字符串 + # + 片段标识符; 所以整个URL的长度就是指包含上述所有组成部分在内的总长度,数据部分就是指查询字符串。 HTTP 中的 GET 方法是通过 阅读全文
摘要:
一:速度快 Redis所有数据是存放在内存中的, Redis源代码采用C语言编写,距离底层操作系统更近,执行速度相对更快, Redis使用单线程架构,避免了多线程可能产生的竞争开销, 二:基于K_V的数据结构 三:功能相对丰富 Redis对外提供了键过期的功能,可以用来实现缓存, 提供了发布订阅功能 阅读全文
摘要:
当学习RocketMQ时,首先得将RocketMQ的消息发送分为3种方式:同步,异步和单向。 同步:发送者向 MQ 执行发送消息 API 时,同步等待, 直到消息服务器返回发送结果。 异步:发送者向MQ执行发送消息API时,指定消息发送成功后的回调函数,然后调用消息发送API后, 立即返回,消息发送 阅读全文
摘要:
1.现象客户端现象:客户端出现大量超时,经过分析超时是周期性出现的。 服务端现象:服务端没有明显的异常,只存在一些慢查询。 2.分析 网络原因:服务端和客户端之间的网络出现周期性问题,经过观察网络是正常的。 Redis本身:经过观察Redis日志,并没有发现异常。 客户端:由于是周期性问题,就和慢查 阅读全文
摘要:
什么是changebuffer? 在需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,Innodb会将这些更新操作缓存在change buffer 中,这样就不需要从磁盘读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读 阅读全文
摘要:
如果客户端使用了读写分离,那么读请求可以在从库正常执行,不会受到影响。但是由于此时主库已经挂了,而且哨兵没有选出新的主库,所以在这期间请求会失败,失败的持续时间=哨兵切换 主从的时间+客户端感知到新主库的时间。 如果想要应用程序不感知服务的中断,还需要哨兵或需要做些什么? 客户端只能把写失败的请求先 阅读全文
摘要:
题目大概是这样: 使用一个2核CPU4GB500G磁盘,Redis实例占用2GB,写读比例为8:2,此时做RDB持久化产生的风险主要在于CPU和内存资源两方面: 1) 内存资源风险: Redis fork子进程做RDB持久化,由于写的比例是80%,那么持久化过程中,"copy-on-write"会重 阅读全文
摘要:
TCP以流的方式进行数据传输,以上层的应用协议为了对消息进行区分,往往采用4种方式。 1) 消息长度固定,累计读取到长度综合为定长LEN的报文后,就认为读取到了一个完整的消息;将计数器置位,重新开始读取下一个数据报; 2) 将回车换行符作为消息结束符,例如FTP协议,这种方式在文本协议中应用广泛; 阅读全文
摘要:
1.支持一个进程打开的socket描述符fd不受限制(仅受限于操作系统的最大文件句柄数)。说到Linux系统最大文件句柄数,在Linux性能调优的时候,这个是比较经常调试的参数。 借鉴了其他人的文章。https://blog.51cto.com/12824426/2060594 select最大的缺 阅读全文
摘要:
Linux的内核将所有外部设备看成一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(简称fd 文件描述符)。 而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符),描述符就是一个数字,他指向内核的一个结构体,即文 阅读全文