高性能高可用高并发高负载的系统架构相关知识

1.高负载的解决之道
	1>硬件:处理能力的提升,内存带宽和容量,部署多核、更高效率和高速缓存的CPU。
	2>软件:服务器分离,数据库集群。根据业务分离,如静态页面网站和对安全性比较高的系统
	3>环境:系统占用资源少,优先nginx,给mysql做对应的优化,加载尽可能少的php模块
	4>测试:使用webbench,apachebench模拟并发,进行压力测试,查看内存/cpu/磁盘空间/网络带宽等方面信息,对软件作最优配置
2.高负载的解决方案
	1>尽可能的静态化html页面
	2>图片与服务器分离,如使用cdn或阿里云oss
	3>数据库使用多台,进行读写分离  流量大使用memcache redis等进行数据高速缓存
	4>应用redis先进先出  锁等方案
3.优化配置
	1>尽量少的安装php模块,最简单是最好的
	2>根据机器内存调整fastcgi  比如4g内存一般为200
	3>将tcp连接方式改为unixsocket  tcp虽然稳定,但是是unix socket更快   fastcgi_pass 127.0.0.1=>unix:/php-cgi.sock
4.安全性:主要是防止系统漏洞,如sql注入、xss攻击,软件如mysql/apache漏洞可以通过升级解决
	1>mysql中删除授权表中的通配符   php中对mysql的sql语句要进行预处理
	2>要求使用安全密码,每个账号的权限控制
	3>检查配置文件许可,密码存储在文本文件中,容易泄漏,需要把它配置在非公共位置,并设置权限
	4>加密客户与服务器之间的数据通信 可以激活mysql中的ssl或者openssh这样的一个应用来传输,这种方式未授权的用户很难发现通信用户与服务器的通信
	5>绑定127.0.0.1使外部用户无法访问,只能本机的用户通过本地访问
	6>mysql有不同的日志文件,可以通过用户的访问,记录用户的访问、中断时间、查询操作等。如果有异常行为,这个日志监控就是了解行动来源的方法
	7>禁止mysql的load data local infile载入命令  因为mysql5是默认开启的
	8>定期备份数据
5.高可用缓存
	1>把渲染出的页面进行缓存  可在nginx层做处理 避免走php服务器 需要在nginx设置一个有效期
	2>多台服务器时,在nginx层使用一定的取模计算,将同一商品指向同一台服务器,保证缓存的最有效利用
	3>缓存加数据库模式:先读缓存,没有则读数据库,然后将数据进行缓存,
	4>更新的时候,先删除缓存,再更新数据库,不生成缓存,以避免更新频繁,但缓存命中太低,先删除缓存是因为避免数据库修改成功,删除缓存失败。
	5>redis主从搭建,master关闭RDB和AOF,从服务器开启RDB 如果主机挂了 从服有完整数据,如果从挂了,换一台机器即可  同时宕机,使用从服RDB恢复



转载于:https://my.oschina.net/ives/blog/3037532

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值