虽然,单服结构简单,但并不一定能满足需求。服务器结构设计,很多一开始是很简单的,慢慢变得越来越复杂。
个人比较反感,一上来就很复杂的做法,业务是慢慢变复杂的,服务器也应该是如此。至于,一开始简单到什么程度合适?这也得视情况而定。
此前,便提到过单服结构怎么扩展,不过,就简单的描述了下,本文从另外一个角度延续这个话题。优化服务器,一般是哪里不足,优化哪里。
一. 多搞几台服务器,同一个程序多部署几套
在不同的服务器上,把程序多部署一套,并不是所有程序都能这样。
web服务,大部分都能在多台服务器上部署,实现负载均衡。这依托于两个关键点,一是http请求可依托域名解析(或者网络代理),另外一点是数据存储的分离。
TCP请求,也一样可以通过类似方式实现负载均衡。不仅一样可以通过域名解析,也可以直接客户端选择接入点,又或者通过请求分配网络IP端口。同样,也可以使用一些TCP网络代理软件实现负载均衡。
http请求和TCP请求,还是有点不同的,http请求,完事就真的完事了,而TCP得维护一个连接状态。此外,TCP链接很多还会做安全校验,当然不一定非要做,但加上这些都会复杂不少。
二. 对外网络,使用专门的服务器
服务器,不同的硬件配置,其强项也不同。与其,搞一台各方面都很好的服务器,那还不如多搞几台各司其职,充分利用资源。优点很多,不仅更安全,更稳定,性能能更好,且可能还更省钱。
服务器,只负责对外网络的收发,并不会很占内存,且对CPU要求没那么高,就更没硬盘什么事了,网卡好,带宽高,其他够用就行。
web服务,增加对外的网络服务器,便是典型的网络代理,负载均衡方案。
TCP服务,相对麻烦点,简单点的话,通过网络代理转发,又或者网关服务器集中收发。但是,出于降低内网的通信压力,在对外网络服务器上,做一些节流方案,那还是很有必要。
说起节流,可能都没啥概念,但是换个说法可能就懂了,拿个业务功能来说:比如群聊。
一句话发给所有人,如果是代理转发,或者集中收发,都没办法减少内网包。都是同样的消息内容,没必要一条条的展开重复发送。内部通信,只要发一条消息,然后把归属人带上,或者标记群组,对外网络服务器,再逐一发送,显然内网包就少了很多。
三. 数据存储优化,分库、主备和缓存
除网络优化外,数据存储优化,是另一个优化点。数据库,暂且不说分表(这涉及业务设计),数据量一大,业务一复杂,分库是很有必要的。
但是,分库也不是那么好分的,不行的话,先做个主从方案。主从方案,不光能用来备份数据库,也能优化数据库的访问。
显然,单纯的数据库访问,并不能满足需求。这时候,可能会考虑使用内存数据库,甚至是开发数据存储服务。
现在,很多应用都会使用Redis/MongoDB,也一样需要考虑使用多个服务器去部署。
四. 提取耗性能的点,部署特别服务
很多功能,特别耗费性能,不方便放一起,需要额外的服务器来支持。有的功能,需要搭建复杂的服务,同样也需要专门的服务器。
除此之外,服务器一多了,就更得考虑服务器的管理和监控,这些也需要额外的服务器来支持。
标签:请求,演变,数据库,网络,TCP,简到繁,服务器,优化 From: https://blog.csdn.net/qq270232487/article/details/141681541