关于如何保证服务器可以支持百万用户访问?服务器品牌有哪些?如何选购服务器?等等问题,今天我们就一起来看下关于服务器的相关知识。
假如你开发了一个网站或者一个app把他放到服务器上,之后你把它发布到了网上,运行良好,每天有几百人的访问量,用户量不大,能快速地响应用户的请求。
但是随着你的运营,你的网站或app出名了,服务每天要承担着成千上万的人来访问,这个时候对你来讲,这是个好消息,但是对你的服务器来说这是个坏消息,因为它变得慢了,用户多了,打开速度就慢了,服务器就很卡。
所以它需要扩展了,你的服务器需要为成千上万的用户提供 7*24 不宕机服务,那么如何扩展,才能保持服务器不宕机呢?
负载均衡器的使用使得我们可以在多个服务器之间分配负载。想象下有一万个用户在一分钟内来访问你的服务器。遗憾的是,你的服务器在一分钟内只能保证5千个用户的流畅访问。这怎么办呢?同时运行两个服务器就行了,就是增加了服务器来分配负载。负载均衡器的功能就是把访问请求分发到两台服务器上。用户 1 往左,用户 2 往右,用户 3 再往左,以此类推。如果一次有 100万个用户同时访问服务器,这该怎么解决呢?确切地说,你可以扩展到200台付款服务器,之后让负载均衡器分发请求到这200服务器上。虽然我们上面提到,关于大量的用户,我们可以用成百上千台服务器处理请求,但是他们都是用同一个数据库存储和检索数据。那么,我们不能以同样的方式来扩展数据库吗?稍有不同。我们需要做的第一件事是把数据库分成多个部分。一部分专门负责接收并存储数据,其他部分负责检索数据。我们使用缓存而不是对每个请求都重新处理,缓存用于记住最后一次的结果并交由其他服务或者客户端,这样就不用每次都请求后端服务了。缓存的加强版叫内容分发网络(CDN),遍布全球的大量缓存。将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。这使得用户可以从物理上靠近他们的地方来获取网页内容,而不是每次都把数据从源头搬到用户那里。分片究竟是什么意思呢?其实也很简单:Facebook 上需要为 20 亿用户提供个人资料, 可以把你的应用架构分解为 26 个 mini-Facebook。用户名如果以 A 开头,会被 mini-facebook A服务器 处理, 用户名如果以 B 开头,会被 mini-facebook B服务器 来处理……分片不一定按字母顺序,根据业务需要,你可以基于任何数量的因素,比如位置、使用频率(特权用户被路由到好的硬件)等等。你可以根据需要以这种方式切分服务器、数据库或其他方面。