第二章 优化服务器及基础设施的拓扑结构——冗余、负载分流、高性能的实现
2.1反向代理和负载均衡的区别
https://www.cnblogs.com/microtiger/p/7623858.html
负载均衡时基于反向代理来实现的;
反向代理每一种应用服务器只有一个,它会负责把请求完成。(点对点模式)
负载均衡一种应用服务器可能有多个,它只负责把请求分发到特定的应用服务器中。(它不会告诉前端请求是否响应 只负责传输数据)
优化系统整体的内存优化使用率:
- 将js、CSS、图片等静态内容放在nginx等静态服务器(一个html页面包含了 30个图片 访问该页面 = 1个动态请求+30个静态请求)
- 使用静态资源分离 能够降低对应用服务器的请求压力
- 以html 30个图片的静态请求为例 每一个请求都要经历 连接、切断等操作,HTTP
提供了Keep-Alive功能可以实现一次连接处理多个请求。 - Keep-Alive的弊端是会占用大量服务中的线程
2.2 引入缓存服务器
Http是无状态的协议(不保存客户端信息),这使得http协议具有易保存的特性。
- 在WEB应用中客户端和服务器端都能实现http缓存,服务器与服务器之间也能实现http的缓存。
- Squid是HTTP、HTTPS、FTP等使用的开源缓存服务器。将Squid配置在使用http进行通信的两点之间,即可实现缓存。
- Squid通常用来缓存静态资源的http请求
- 对于程序中的动态数据的缓存 通常使用Memcached等来进行缓存
2.3Mysql同步发生故障时的快速恢复
导致数据库崩溃的原因:
- 数据库服务器的进程异常结束
- 磁盘空间已满
- 磁盘故障
- 服务器电源故障
数据库同步指的是,将数据库中的数据实时复制同步到其他位置的数据库。
在数据库的同步中的结构是 单主与多从。
主数据库(master)指的是接收客户端发出的修改与查询两种类型的语句的服务器,从数据库(slave)指的是不直接接收客户端发出
的修改语句,而是从Master上获取修改数据库的请求,以此来进行数据的更新的数据库。
在Salve数据库中会运行两种线程:
I/O 线程:从Master中获取更新日志,并将其放入中继日志文件;
SQL线程:从中继日志文件中读取SQL并执行查询。
实现主从同步的条件:
- Master可以拥有多个Salve;
- 一个Slave只能挂靠一个Master;
- 所有的Master及Slave中必须指定不同的server-id;
- Master需要输出二进制日志;
- 可以通过Mycat这个插件来实现Mysql的分布式。
2.4选择轻量高速的存储服务器
fastdfs 开源轻量级的分布式文件系统 利用fastdfs能够实现 提供对象存储的服务
七牛云OSS 对象存储服务 (云存储)
https://blog.csdn.net/xingjiarong/article/details/50559849
CDN,即内容分发系统, 相当于网络传输的高速路。解决机房节点不好访问速度慢的问题。
在七牛云中配置的加速域名,就相当于配置CDN 对外的同一的资源对外URL。