我来分享社区型网站的大概服务器需求吧。
不知道各位开发者听没听说过掘金, 我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台左右。
以上。