/images/avatar.png

Schaepher's Blog

Redis

熟悉 Redis 要包含以下知识点:

  • Redis 数据类型及使用场景
  • 单线程模型
  • 两种持久化方式
  • 与 Memcached 的区别
  • I/O 多路复用
  • Redis 主从同步
  • Redis 集群(Sentinel)
  • 性能 QPS

高级一点的是:

RPC

Remote Procedure Call Protocol (RPC,远程过程调用),与进程内本地函数调用区分,只跨进程的函数调用。

调用方将函数和入参序列化为字节流,并发送给服务方。服务方将字节流反序列化为函数和参数,并调用函数。将结果序列化为字节流,返回给调用方。调用方将结果的字节流反序列化,得到结果。

项目部署方式

部署方式主要有三种:

  • 滚动部署
  • 蓝绿部署
  • 金丝雀部署

滚动部署

逐台停止服务并部署,新旧并存。

出现问题时,回滚已部署的机器。

需要注意:

  • 回滚耗时
  • 新旧 API 会同时服务,新 API 需要兼容旧 API

蓝绿部署

又称为 A/B 部署、红黑部署。

CDN

整体结构:

     +---------+
     |         +----------+
     | Source  |          |
     |         +<------+  |
     +--+--+---+       |  |
 Back   ^  |           |  |
 To     |  |           |  |
 The    |  |           |  |
 Source |  v           |  |
     +--+--+---+       |  |
     |         |       |  |
     | Static  |       |  |
     | Relay   |       |  |
     | Cluster |       |  |
     |         |       |  |
     +--+--+---+       |  |
   ...  ^  |           |  |
   One  |  |           |  |
   Or   |  |           |  |
   More |  v           |  v
     +--+--+---+    +--+--+---+
     |         |    |         |
     | Static  |    | Dynamic |
     | Relay   |    | Relay   |
     | Cluster |    | Cluster |
     |         |    |         |
     +--+--+---+    +--+--+---+
        ^  |           ^  |
        |  |           |  |
        |  v           |  v
     +--+--+-----------+--+---+
     |                        |
     |      Edge Cluster      |
     |                        |
     +--+--+-----------+--+---+
        ^  |           ^  |
Request |  |   Request |  |
Static  |  |   Dynamic |  |
Source  |  v   Source  |  v
     +--+--+-----------+--+---+
     |                        |
     |       User Agent       |
     |                        |
     +------------------------+

类似于 CPU 的多级缓存。把 Edge Cluster 当成一级缓存,把 Source 当成内存。寄存器呢? User Agent 自身的缓存(如浏览器缓存)在这个架构上相当于寄存器。