网站服务器有哪些
你打开一个网页,网站敲下回车,服务数据从某个机柜里飞出来。网站那个机柜里躺着的服务东西,就是网站服务器。但服务器和服务器不一样,服务差别大到能让人怀疑它们是网站不是同一个物种。
最常见的服务分类是按用途切。Web服务器只管HTTP协议,网站Apache、服务Nginx这俩老熟人占了半壁江山。网站Nginx处理并发请求的服务能力强得离谱,我一个朋友的网站公司,服务器从Apache换成Nginx后,服务同样的网站配置扛住了原来五倍的流量。Apache呢,模块多,老项目里遍地都是,灵活但笨重,就像一辆改装过的皮卡,什么都能拉,但跑不快。
应用服务器是另一码事。它不直接给你返回HTML,而是跑业务逻辑。Java系的Tomcat、WildFly,Python系的Gunicorn、uWSGI,Node.js干脆自己就是服务器。我见过一个初创团队,用Gunicorn跑Django,数据库一慢,Gunicorn的worker全卡住,页面转圈转到用户骂娘。后来换了异步框架,问题才消停。这类服务器的选型,往往决定了你半夜会不会被报警电话吵醒。
数据库服务器更特殊。MySQL、PostgreSQL、MongoDB,它们各自有自己的脾气。MySQL用主从复制,写主库读从库,但主库挂了你就得手动切换,手忙脚乱。PostgreSQL的MVCC机制让并发读写更稳当,但配置复杂,新手容易踩坑。MongoDB呢,文档型,存JSON方便,可一旦查询条件复杂,你就得眼巴巴地看着它全表扫描。选数据库服务器,本质上是选你愿意忍受哪种痛。
缓存服务器容易被忽略,但作用巨大。Redis把热数据放内存里,读起来快得跟闪电一样。我见过一个电商网站,商品详情页每秒几千次请求,全打在MySQL上,数据库CPU直接飙到99%。加了Redis缓存后,数据库负载降到10%不到。Memcached更简单纯粹,但功能少,现在用的人不多了。
文件服务器也别小看。NFS是老古董了,但很多传统企业还在用。对象存储如MinIO、Ceph,则更适合云原生场景。我有个做视频站的朋友,早期用NFS存用户上传的视频,结果某个热门视频被同时访问,NFS的IO堵死,整个站卡了半小时。后来换成MinIO,分布式存储,单个文件访问压力分散到多台机器上,问题直接消失。
还有一种叫代理服务器。HAProxy、Keepalived,它们不存数据也不跑业务,就负责把请求转发给后面的真实服务器。负载均衡、健康检查、故障转移,全靠它们。有一次机房断电,一台物理机挂了,Keepalived自动把虚拟IP切到备用机上,用户全程没感知。没有代理服务器,高可用就是句空话。
别把容器和虚拟化混进来——Docker和KVM不算服务器,它们是让服务器更高效的工具。但现实中,很多人说的“服务器”其实是跑在虚拟机里的。这就有个坑:虚拟机有性能损耗,尤其是磁盘IO。我见过有人把数据库跑在Docker里,数据盘用默认的存储驱动,结果写入性能差得离谱。后来改用裸金属或者直通磁盘,才恢复正常。
最后提一嘴边缘服务器。CDN节点、边缘计算节点,它们把内容推到离用户近的地方。你在上海访问一个部署在贵州的网站,如果没CDN,延迟可能200毫秒。有了边缘节点,延迟能降到30毫秒。这个差距,用户体感非常明显——网页秒开和等两秒,完全是两种体验。
服务器没有万金油。每个类型都有它的适用场景和致命短板。选型的时候,别光看宣传的性能指标,得想清楚你的业务到底会怎么压它。一个简单的博客,用Apache加MySQL绰绰有余。一个每秒十万请求的API服务,你得认真考虑Nginx配Redis再加PostgreSQL集群。
服务器说到底就是工具。工具顺手不顺手,得看你干的活是什么样的。
