“吃土”运维指南

前几天,朋友A找到我,让我帮忙评估一个事情:如果要维护一个有X、Y、Z功能、最高并发请求N人的互联网产品,一年服务器的费用,最少需要花多少钱。

朋友A从事开发工作多年,但是对运维和部署并没有什么概念。

虽然我也没有专职从事过运维工作,但对这些事情略知一二。在根据他的需求做了大致的预算后,我发现,这其实是一系列很有意思的问题:

  • 假设的产品有一些必要的业务XX、YY、ZZ,目前你每年的服务器预算只有M,我应该如何最优分配服务器资源呢?
  • 经过上述分配的服务器资源,最高能支撑多少人在线呢?
  • 如果产品迎来了爆发式增长,想要短期内快速将支撑人数翻倍,又该如何扩展服务器部署呢?
  • 假设某台服务器宕机,上述运维方案可以保证高可用么?

想要快速、准确的回答上述问题,并没有那么简单:

  • 线上系统不止包含了业务服务端,还需要网关服务器、数据库、消息队列、缓存,容器调度等众多组件的配合,而这些组件的性能又分别是多少呢?哪些会先成为短板呢?
  • 虽然网上充斥着各种性能报告,但多数都是在资源、性能无限制的情况下展开的(有钱可劲砸)。如果预算有限,性能会下降到多少呢?
  • 系统的性能由多方面组成,典型的是CPU、内存、和IO(网络/磁盘),在受限条件下,哪些会先成为瓶颈呢?

为了研究上面这些问号,我开始了这个专栏的研究&写作,我们先预订一个目标:

在每年只有6000元预算的情况下,维护一个具有网关、服务端、数据库、消息队列、缓存,且高可用互联网服务端架构,其能支撑的最大并发是多少。

相信你看了上面这句话后,可能是一头雾水,我不妨再解释下:

  • 为什么选每年6000元而不是5000元预算呢?
    • 因为一年有12个月,这样相当于一个月500元,比较方便计算:-)
  • 为什么需要网关、服务端、数据库、消息队列这么多组件呢?
    • 因为这些都是构造一个互联网产品产品的服务端架构,所必不可少的组件。
    • 至于有多少个服务,能支撑多少并发,恐怕只能等这个专栏完成后,我们才能回答:-)
  • 大家都知道,除了服务器的费用外,带宽、流量也是要钱的(特别是国内贼贵),但是考虑到流量的浮动性会比较大,再加上我们是个“吃土”运维方案,可以先假设流量不用花钱:-)

下面我们来逐步进入正题咯。

一、服务器资源&限制篇

在开始各个组件的受限打压前,我们先讨论一些基本事情:

  • 选独立服务器,还是云主机
    • 说实话预算6K的话,也就刚好够1U服务器的托管费用,带宽可能还不会太大(只是托管,硬件自备),所以独立服务器基本可以pass了
    • 云主机虽然性能要差不少,但是价钱便宜,而且可以同时买多个云主机,均瘫宕机风险。
    • 以国内最大的云计算厂商 “套路云” 为例,通用型2核8G大概是143元/月(年付&不含流量),内存型2核16G大概是184元/月(年付&不含流量)。
    • 如果找个代理下单,应该可以拿到9折(甚至85折),所以500元每个月大概可以买到3台16G内存的服务器,还能剩一点带宽钱:-)
    • 综上所述,我们不妨假定服务器资源是3台,分别为2核、16GB内存。或者说总共6核、48GB内存。
  • 要限哪些资源?
    • 内存
      • 如果坐着时光机回到10年前,48GB的内存,部署一个服务端架构绝对是绰绰有余了。
      • 但如今微服务架构盛行。微服务化拆分后,需要大量的内存才能跑起来大量的服务进程,所以限定内存还是有必要的。
    • CPU:
      • 我们可以看到,拿到的CPU核心并不多,所以CPU必须是要限制的。
      • 具体每个核心的性能是怎么样的呢?在 ”套路云“ 官网,可以看到内存型的CPU是”Intel Xeon Platinum 8163“,24核48线程。
      • 8163的主频是2.5Ghz,但是关于它的性能测试报告比较少,我估计是定制款。网上常见的是2.7Ghz的8168,后者也是24核48线程,只差了0.2Ghz,两者性能差异可以忽略。
      • 根据上面链接的性能报告,8168的单线程性能是2073,而我目前台式机的单线程性能是2155,大概是0.96的样子,但是考虑各种损耗,我们姑且认为是0.9的样子吧。
      • 综上所述,我们准备把一个云主机的核心,等同于我本地的0.9 CPU线程。
    • 带宽:
      • 首先内网一般都是千兆带宽,除非你搞太暴力的打压,否则基本不是瓶颈
      • 外网带宽流量,我们前面提过了,基本不考虑成本。
      • 综上:带宽这块,我们只关注是否成为瓶颈,不会主动进行限制。

二、受限环境打压篇

《Rocket MQ受限环境打压》

 

 

三、运维方案篇