php laravel 默认cookie加密 读取怎么办_Laravel+Nginx轻松实现读写分离、负载均衡,网站并发能力提升N倍...

为了应对大规模互联网应用带来的数据库压力,本文介绍了如何利用Laravel 6进行读写分离配置,并结合Nginx实现负载均衡。通过Nginx的轮询、最少连接和IP Hash策略,确保请求的高效分发,提高网站并发处理能力。同时强调了在实际项目中,还需要配置MySQL的主从或主主复制以保证数据一致性。
摘要由CSDN通过智能技术生成
65960a5b4b1be5375ce37e238cc26d70.gif
前言:

随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。

为此,我们需要使用负载均衡、读写分离的方式,提升网站的系统性能和访问速度。

硬件设备配置:使用5台服务器,3台做负载,1台做数据备份,1台做应急处理服务器(内存:8G,硬盘容量:40G,CPU:4核)。 a32b3871a29632e71d132b564911fe62.png 一,Laravel读写分离配置(Laravel自行下载安装):

b0ef88063e1ce2737b42e46c5e0c6c89.png

Laravel 6 读写分离配置比较简单,只需修改 config/database.php完成对数据库的配置就完成了读写分离,下面以 MySQL 数据库为例,内容如下:

'mysql' => ['read' => ['host' => ['192.168.72.100','196.168.72.101',

            '196.168.72.102',],],'write' => ['host' => ['196.168.72.99',],],'sticky'    => true,'driver'    => 'mysql','database'  => 'database','username'  => 'root','password'  => '','charset'   => 'utf8mb4','collation' => 'utf8mb4_unicode_ci','prefix'    => '',

],

设置完毕之后,Laravel6 默认将select 的语句让read 指定的数据库执行,insert/update/delete 则交给 write 指定的数据库,达到读写分离的作用。 a32b3871a29632e71d132b564911fe62.png 二,nginx负载均衡配置(Nginx自行下载安装):

bfe960492d490a39a211056bcac5c6b1.png

1、内置负载策略
  • 轮循(默认):Nginx根据请求次数,将每个请求均匀分配到每台服务器上。
  • 最少连接:将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
  • IP Hash:绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。

e85446f8de6be670c5d43abdc9ec258d.png

2、详细配置方法

5d0f1519df8d3048d68ae5e6b1740d05.png

upstream server1 {
       server 192.168.72.100:80 weight=3 max_fails=3 fail_timeout=15 max_conns=1000;
       server 192.168.72.101:80 weight=2 max_fails=3 fail_timeout=15;
       server 192.168.72.102:80 weight=1 max_fails=3 fail_timeout=15 ;
       server 192.168.72.103:80 backup;
       server 192.168.72.104:80 down;

}
server {
       listen       80;
       server_name  www.xxx.com;#charset koi8-r;
       access_log  logs/host.access.log  main;
       location / {
           proxy_pass   http://server1;
           index  index.html index.htm index.php;}

}

a47215137f8b6d23eb42f4abf7d0f625.png

通过以上配置,便可以实现,在访问www.xxx.com这个网站时,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为server1的地址,读取分发策略,配置权重为3,所以nginx会将大部分请求发送给100服务器上,较少部分给102服务器来实现有条件的负载均衡。

aad79c1266e96a75a2b14a4350ed1a3d.png

backup 参数说明:

1)、down:表示单前的server暂时不参与负载

2)、weight:默认为1,weight越大,负载的权重就越大。

3)、max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4)、fail_timeout:max_fails 次失败后,暂停的时间。

5)、backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

6)、max_conns:最大链接数,超过以后就不会发生请求过来。

通过以上配置完成了Laravel中的读写分离和Nginx的负载均衡,重点说明完整项目还需要配置MySQL的主从配置或者主主复制,实现读写分离后才能达到数据的一致性。

《 励志分享 》

生活不可能一帆风顺,岁月不可能一尘不染,人生不可能一举成功。但我们相信,一切终将过去,一定会春暖花开。

38bd74d314f5d9224cffae4f905191a2.gif 1、Laravel5.6 + 阿里云OSS 完成图文分离架构 2、必须了解的PHP内置函数,开发效率提升N倍 3、 Laravel快速使用和配置Redis缓存,并使用Redis数据库 4、PHP实现微信拼手气拆红包算

看完本文有收获?点赞、分享是最大的支持

ae3880c18d0debd610fcfed197bfc1e3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值