接口层实现方案

一、nginx+webserver

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

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


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与另外的机器组成热备。


二、LVS+webserver

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



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

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

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

在route文件配置

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、高可用集群 (一)提升系统高可用性的解决方案:冗余(redundant) 工作模式active/passive...
    哈喽别样阅读 1,742评论 2 5
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,159评论 21 356
  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 3,674评论 0 28
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,769评论 24 1,002
  • 很久很久以前,到底是多久?久到白垩纪的恐龙统治全世界的森林和草原,久到女娲补天遗漏下的海洋冒出第一个无核细胞的生命...
    童淑阅读 269评论 0 3