每周精选(2018-08-25)
APP 推荐:一款编程入门和练习的 APP: Py
Py - Learn to Code (App Store 下载链接)
适合 kill time,内容偏入门了解基本概念和复习(希望有更深入的内容),用零散的时间完成一个 5 分钟课程,在等待的时候刷,比刷朋友圈有营养。涵盖一些基本课程:HTML, SQL, Python, API 等,目前只限于很基础的东西,期待有更深入的内容。
Py从操作系统的 IO 模型理解 IO 多路复用原理
Linux IO模式及 select、poll、epoll详解
从操作系统基本概念上解释 IO 多路复用跟阻塞 IO、非阻塞 IO、同步 IO、异步 IO 之间的关系。(参考了经典著作《Unix 网络编程》第六章)
其实 IO 多路复用属于同步 IO 的一种,跟阻塞 IO、非阻塞 IO 属于同一个层面的概念,而异步 IO 则跟其他同步 IO 的模型都不一样。 IO 多路复用调用 select/poll/epoll 函数阻塞地监听多个文件描述符(FD), 通常用于实现同时监听多个网络 IO连接(也是 FD 的一种)。像 Redis 就是属于 IO 多路复用的典型代表。
用一个公司运作的方式解释 CAP 理论
A plain English introduction to CAP theorem
先生和太太合作开办”信息记忆公司“,用户可以打电话给公司记录某些信息,然后随时打电话过来查询。但现实过程中如何保证两人的信息同步,又能及时响应用户的查询?这个问题跟分布式数据库运作原理一样,需要符合 CAP 理论(不能同时满足 CAP 三个要素:一致性、可用性、分区容错)。
- 单点运作:只有先生工作,不存在 CAP 的问题。
- AP:先生和太太一起工作,他们分别记录用户信息到自己的笔记本,导致两个人的信息不一致。
- CP:每次用户更新信息,需要先同步给另一个人,(1)期间另一个人不能相应其他请求(2)如果另一个人请假,就不能同步,会导致整个系统不能工作。
- AC:如果夫妻闹矛盾,不去同步信息,整个系统都不能运作(所以 CAP 理论一般需要保证 P 可用)
- 最终一致性:请一个额外的员工,帮忙做两个人的信息同步的工作,虽然有延时,但对于读多写少的能满足需求。
Redis Cluster 集群节点之间如何保持连接
Life in a Redis Cluster: Meet and Gossip with your neighbors
本文提供了几个视频(需要梯子)去直观地理解一个集群建立起来时的流程和 Gossip 协议运作方式。
- Redis 集群会在
cluster-node-timeout
这个配置参数时间内检查一遍所有节点的存活 - Gossip 协议包中会包含集群中一部分节点的信息(而不是全部节点信息),来减少整个信息量。
当然关于集群的详细信息,还是推荐读官网文章Redis Cluster Specification。
Python 模块学习
-
attrs 简化初始化类中属性定义的工作,并自动生成
__repr__
等函数。 -
fire Google 出品快速360度各种姿势来生成命令行的模块,可以直接对函数、类生成命令行。有篇不错的参考文章 https://zhuanlan.zhihu.com/p/37779046,最后的例子直接把
redis-py
模块封装成了类似redis-cli
的命令行。
左耳朵耗子哥十五年前的 GDB 调试教程今天依然适用
本系列有七篇文章,如果需要阅读下一篇,只需要在上一篇的 URL 链接里面最后的 id+1 即可。