分享社区型网站的大概服务器需求吧。
不知道各位开发者听没听说过掘金, 我2016-2019年在掘金担任技术总监, 从0开始设计了掘金现有的整体架构 (包括软件架构和硬件基础设施, 所有开发和技术相关的业务均由我负责).
掘金到目前为止(2019-09-06), Alexa 全中国排名为626 (曾经最好成绩在230左右. 作为对比segmentfault是101, OSChina是154), similarweb 全中国排名为399 (作为对比segmentfault是329, OSChina是314). 不知道这样的成绩能不能算是"大型网站".
就业务类型来讲,社区业务本身的复杂性更多是产品功能之间的依赖造成的逻辑复杂。比如你给别人点个赞这个数字要反映到被点赞的文章上,还要给被点赞的作者发送通知,还要把点赞这个动作显示到你的timeline上,还要让关注你的人读取到你的这个动态等等。但说到底只不过是web业务而已。因此CPU,内存,磁盘等资源的使用密度都不算特别显著。
线上
我们先定义这个服务器是"一个运行操作系统的实体"吧. 毕竟现在全是虚拟化, 不太好计算到底用了多少物理服务器.
因为全是web业务, 所以相对来说掘金不是很复杂.
web端 是由 3 个 8core16G 的云服务器组成. 前面接了4个负载均衡每个负载均衡绑定了一裤兜IP用来应对DDoS.
微服务层 由4个 16core32G 的云服务器组成. 同样, 前面也有4个负载均衡.
cronjob(定时任务) 2 个 4core 8g云服务器.
数据库 2个MySQL实例(4机), 5个MongoDB实例(总计20机), 14个Redis实例(14机).
中间件 zookeeper(6机), kafka(6机), ELK(3机).
大数据 CDH全家桶(10机)
杂项 认证服务器, DNS, 冷备份等(6机)
以上就是承载在线业务的所有机器了, 不包含负载均衡等直接提供服务的云服务商实例, 总计78个实例.
如果极限压缩的话, 比如数据库不弄的那么复杂, 尽可能复用实例, 砍掉大数据等供运营的组件, 估计40以内实例就能完成一个这样的网站.
也就是说, 实现一个在中国排名500左右(世界大概3000排名左右)的社区网站, 40台服务器差不多可以完成了(当然其他业务类型可能会更多也可能会少一些, 不过一个社区类型的网站, 应该大家都差不多).
线下
但, 这只是冰山的一部分, 我们还有测试环境和日常供工程师使用的本地机房服务器等:
线下CDH全家桶 14 实例
开发用服务器 6 实例
代码托管, CI,CD 6 实例
容器环境 16 实例
CEPH 6 实例
数据冷备 3 实例
杂项 6 实例
总计 57 实例.
即最终掘金在用的服务器是 135 实例. 按照 4 实例一台物理机去计算,物理服务器应该在 34 台服务器左右(2个机柜就全装下了).
一些有意思的事情
由于我在这方面比较有经验, 所以从省钱的角度, 我们的本地服务器都是二手服务器。
我们的本地服务器得益于虚拟化,50+实例的虚拟机需要的服务器一个小板车就能运走了开机BIOS画面是百度的IBM X3650M4服务器
是的你没看错, 都是淘宝货【手动滑稽】甚至有一台服务器还是百度下架的。
感谢这些行业龙头淘汰的服务器, 对于一个初创公司, 能买到廉价的设备来节省资金实在是一件幸事。当然, 有一个好老板的支持也很重要. 我们在采购服务器这一件事情上就能节约接近30万.
(google在刚开始成立的时候, 也是靠着一大堆二手设备来提供服务的).
google最初的生产用服务器
有的朋友可能会担心用二手服务器会不会出问题?这的确是个隐患,所以我们只在本地使用。线上仍然是直接用云服务。
熟悉我的朋友可能知道,我家里的机器数量其实比我公司的还要多。所以经验方面对我来说不是问题。哈哈。
以上就是我在掘金的实践经验了。
其他
搜索业务还是十分吃资源的,我在360搜索的时候, 仅仅用来展示搜索结果的web机,就达到了5机房每机房12机。一二级引擎机器的数量都在几千台以上。
直播业务的就会少一些了,更多是在CDN费用上会更贵。本身的业务不怎么吃机器。以PandaTV举例,在我离开的时候(2016年下旬),估计机器应该在1000台之内。我负责的数据业务实际上也就一套大一点的CDH全家桶,不到20台机器,以及一些平时用的业务机器,也是20台左右。