高访问量时的服务器优化

分布式

分为水平拆分、垂直拆分;

水平拆分,是将业务整体放到多台服务器上,只区分文本、脚本、数据库放到不同的服务器上,每一种可以放到多台服务器上,形成计算机集群,集群的访问通过负载均衡来解决。

一组服务器同时工作,应用拆分成多个应用,数据库拆分成多个实例,分布式缓存、文件等中间件;

以数据库为例,在一台机器的数据库里写入了数据,需要在其它数据库里查到这条数据;但由于不同机器间操作的时差,会有一定的延迟,这是分布式需要面临的一个问题。

垂直拆分,是根据不同的业务点,拆分后,每一个业务点都可以独立运行;而每一个业务点也可以放到多台服务器上,形成一个计算机集群。

垂直拆分到最小业务单元,就是微服务了。

一台机器出问题,不会影响其它机器的运行,在可用性方面是一个大的提升。

微服务

将业务进行拆分,拆分出来的每一小部分都是完整的业务单元,可以执行单一的完整的业务功能。

相当于一个完整的大系统,拆分成了多个独立运行的小系统,每个小系统可以使用不同的开发语言,运行在不同的开发环境。,每一个小系统独立维护,出了问题,只需要重新部署这个一个系统即可,不需要重启整个系统。不同小系统之间通过 http 协议进行相互间的通信。代表框架 Spring Cloud & Docker、Dubbo。

多个系统同时运行,需要集中化管理,常用的集中化管理框架有 Eureka,Zookeeper。

还需要用到自动化部署工具 Jenkins,这是一款持续集成工具,实现一键部署,减少这么多小系统部署出错的机率。

负载均衡

Nginx

通过 Nginx 分发请求到不同的网址,访问不同的服务器地址。常用方法:

随机:随机访问;

轮询:轮流访问;

最小连接:优先选择连接数最少的服务器;

HASH:一定程度上保证特定用户能连接到相同的服务器;

  加权(以上方法都可以设置一定的权重)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注