美文网首页
接口层实现方案

接口层实现方案

作者: 拨云见日终有时 | 来源:发表于2016-09-06 13:40 被阅读0次

    一、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配置,是不是很简单?

    相关文章

      网友评论

          本文标题:接口层实现方案

          本文链接:https://www.haomeiwen.com/subject/vqedettx.html