术语详解
业务
- QPS Queries Per Second 每秒处理查询数目
QPS = 并发量 / 平均响应时间
并发量 = QPS * 平均响应时间
根据以上计算关系,我们来预估下单日访问量在 1000W 需要多大的QPS来支持:
通常情况下,80% 的访问量集中在 20%的时间,算一下这 1000w pv实际需要机器达到多少qps才能满足,
qps = (1000w * 0.8) / (24 * 3600 * 0.2)
qps = 462.9
- RTO
RTO是指灾难发生后,从IT系统宕机导致业务停顿之刻开始,到IT系统恢复至可以支持各部门运作,业务恢复运营之时,此两点之间的时间段。
- RPO
RPO(Recovery Point Object),即恢复点目标。是指灾难发生后,容灾系统能把数据恢复到灾难发生前时间点的数据。是衡量灾难发生后会丢失多少生产数据的指标。可简单的描述为设施能容忍的最大数据丢失量。
技术
- s6-svscan 是一款类似于supervisord 的 Linux 程序管理软件,能够实现对程序进程的健康监控和主动重启等操作。 每个服务程序单独创建一个目录,内置一个名称为 run 的脚本和一个名称为 finish 的脚本, run 负责启动程序,finish 执行程序退出后的操作,run 脚本应该是长时运行的
启动命令很简单,传入服务脚本所在路径即可,这里即为 /usr/bin/s6-svscan /service
Dockerfile 关键代码:CMD ["/usr/bin/s6-svscan", "/service"]
这样,容器启动时就会扫描 /service 文件夹,执行对应的 run 脚本,当 run 脚本意外退出时,s6 会自动重启
如果某个服务暂时不想通过 s6 自动启动,可以在其服务脚本文件夹内(与 run 同路径)放置一个名称为 down 的文件,这样 s6 就不会执行对应的 run 脚本了
概念
- 没有银弹
一直听说着“没有银弹”,也知道它的意思--出自计算机科学家布鲁克斯《没有银弹》一书(但没看过,否则早知道了:) ),意思是:“没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性”。
但为什么说不能大幅度的提高软件的生产力为”没有银弹“呢?
原来“布鲁克斯用形象的譬喻来论述软件工程中存在的“陷阱”——“在所有恐怖民间传说的妖怪中,最可怕的是人狼,因为它们可以完全出乎意料地从熟悉的面孔变成可怕的怪物”,而“大家熟悉的软件项目具有一些人狼的特性(至少在非技术经理看来),常常看似简单明了的东西,却有可能变成一个落后进度、超出预算、存在大量缺陷的怪物”。惊悚故事里,人们只有用银弹(银质子弹)才能消灭人狼,而布鲁克斯认为,在软件工程中,“没有银弹”,没有一种能够遏制软件向“怪物”变异、同时还可大幅提升开发效率和产品质量的武器。”