何时编写模拟器

主要观点:

  • 当涉及到多于一个概率、随时间变化的概率或队列时应写模拟器,直觉在这类问题上往往不可信,如蒙提霍尔问题,通过写模拟器能更信任结果并加深对问题的理解。
  • 以随机代替协调的例子,在将系统迁移到 Kubernetes 时,讨论为每个分片启动的进程保证高可用性的方式,随机选择分片启动进程的策略需启动 2000 多个进程才能以 99.99%概率保证每个分片至少有 2 个副本,而协调方式只需约 400 个,经模拟后确定该策略成本较高可能不值得。
  • 另一个实际例子是负载削减,在 Shopfiy 工作时为平台可靠性开发负载削减器,开始不确定哪种算法能公平削减流量,通过写模拟器更好地理解各种控制的行为,最终确定简单算法可行,说明探索性模拟对于复杂模糊任务有很大价值。

关键信息:

  • 蒙提霍尔问题中,主持人总是打开非获胜门,这揭示了信息,若总是切换选择,获胜概率从 1/3 提升到 2/3。
  • 写模拟器能避免被复杂的维基百科条目误导,证明简单方法可能有效,如在处理随时间变化的概率等问题时。
  • 随机代替协调的策略在特定系统迁移场景中的应用及模拟结果。
  • 负载削减器开发过程中通过写模拟器确定简单算法的可行性。

重要细节:

  • 提供了蒙提霍尔问题的代码模拟结果,显示切换策略获胜概率为 66.62%,不切换为 33.38%。
  • 展示了随机选择分片启动进程的模拟代码及结果,如最大 2513 次、最小 509 次等。
  • 提及 Hormoz Kheradmand 领导的负载削减器开发及相关模拟工作,以及相关链接。
  • 列出了其他相关文章的链接,如关于 MySQL 事务每秒与 fsyncs 每秒等的内容。
阅读 12
0 条评论