接口层实现方案

一、nginx+webserver

nginx作为反向代理,转发前端请求,该方案配置简单,在访问量不是特别大的情况下是一个很好的负载均衡方案。

以下的方案是一台nginx带三台web服务器,如图


接口层实现方案_第1张图片

nginx 部分配置如下:

upstream mysvr {

#设定负载均衡的服务器列表

#weigth参数表示权值,权值越高被分配到的几率越大

server 192.168.8.1:80 weight=5;

server 192.168.8.2:80  weight=1;

server 192.168.8.3:80  weight=6;

}

以上weight参数用于指定轮询几率,与访问比率成正比,用于服务器性能不均衡的情况。还有一种常用的ip hash策略, 对于使用session的站点非常有用。

upstream mysvr{

server 192.168.8.1;

server 192.168.8.2;

ip_hash;

#默认请求

location / {

root   /web;     

index index.php index.html index.htm;  

fastcgi_pass  mysvr;

fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

}

以上的配置可以正常运行,但是在访问量大的时候会发现web服务器有大量的time_wait链接,很容易看到是因为每次的web调用前端nginx都与后端建立新的tcp连接,通过在nginx配置中启用keepalive提供长连接支持避免该问题。

upstream mysvr{

server 192.168.8.1;

server 192.168.8.2;

keepalive 32;

location / {

root   /web;

index index.php index.html index.htm;

fastcgi_pass  mysvr;

fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

fastcgi_keep_conn on;

}

nginx存在单点问题,常用heartbeat或者keepalived与另外的机器组成热备。


接口层实现方案_第2张图片

二、LVS+webserver

LVS是基于IP层的负载均衡方案,对接口层来讲该方案更可以应付更大的流量。因为第一种方案存在一个问题--用户请求和返回的数据全部通过nginx,在流量增大的情况下这里很容易成为系统的瓶颈。LVS的VS/DR方案完美解决了这个问题--服务器处理完请求直接返回数据给客户的,而不经过负载均衡器ld。


接口层实现方案_第3张图片


三、业务代码实现(基于laravel)

laravel对rest提供了良好的支持。

在项目目录下执行php artisan make:controller UserController,即可在相应目录生成一个资源类型的UserControler。

在route文件配置

Route::resource(‘/user’,‘UserControler’);

就这样完成了对一个资源的rest配置,是不是很简单?

你可能感兴趣的:(接口层实现方案)