专栏首页后端技术探索大众点评新开源项目-Camel(干货)

大众点评新开源项目-Camel(干货)

原创作者:李洋(大众点评 平台架构组成员)

作者介绍:http://leonindy.coding.me/

一、项目介绍

Camel 是大众点评开发的软负载一体解决方案,承担了F5四层硬负载后的软负载工作。Camel已成为大众点评网络流量中必不可缺的一层。

Camel对Nginx集群进行管理,通过可视化的网页,来编辑Nginx配置文件,大大简便了Nginx配置文件的开发量;并且能够同时管理多台Nginx服务器,省去登陆每台服务器再去修改配置文件的烦恼。

camel-admin与Nginx配置有关的功能主要有:站点管理,业务集群管理,Nginx集群管理。详见:http://leonindy.coding.me/camel_in_action/posts/ch3-use-guide/overall.html

Camel在大众点评的应用规模如下:

  1. nginx服务器集群: 10多个nginx集群,共过百台nginx服务器
  2. 站点及业务集群: 300多个站点域名,近千个业务服务器集群
  3. QPS: 每天响应约万次接口调用,其中有约数千次为nginx配置部署请求

Camel项目由camel-admin, Dengine(基于Tengine开发的Web服务器), camel-agent三个模块组成:

  1. camel-admin: Camel管理端:可以通过接口及页面两种方式对Nginx集群进行发布、重启、监控等操作。
  2. Dengine: 大众点评基于Tengine开发的Web服务器。在Tengine的基础上,添加了降级等功能。
  3. camel-agent: 部署在Nginx服务器上,管理本机的Nginx进程与配置文件。

二、设计初衷

大众点评最开始采用F5做七层负载。随着网站规模的增大,F5成为了网络的瓶颈,主要原因有以下两点:

  1. 负载规则涉及到很多路径的正则匹配,这要求F5做很多的正则计算。这大大增加了F5的CPU负载。
  2. F5需要对业务服务集群进行心跳检测。随着业务服务规模增大,F5需要对近千台服务器进行心跳检测。F5很难维持这个量级的心跳信息。

为此,我们决定使用软件工程的银弹-在架构上,增加新的层级。从而大众点评有两层负载,第一层为F5,做四层硬负载;第二层为Nginx集群,做七层硬负载。

三、两层负载

大众点评对网络流量采用两层负载。那么,这两层负载是如何分工的呢?

我们结合一个具体的请求来分析这个问题:

假设有一条请求,访问www.dianping.com/citylist:

  1. 首先,浏览器寻找该域名对应的公网IP。电脑接入的运营商不同,对应的公网IP就不同。如果接入电信的网络,解析该域名对应的公网IP为**.**.**.**。
  2. 由于该IP是F5的对外IP,请求发送到F5上。
  3. F5将此请求反向代理到一台Nginx服务器。
  4. 该Nginx服务器根据网址路径"/citylist"找到对应的负载规则,转发到规则中配置的业务服务器。
  5. 业务服务器响应该请求。

F5只做四层负载,不同的公网IP接受的流量,转发到不同的Nginx集群;

Nginx集群做七层负载,根据URL的路径、cookie等,转发到真正响应服务的业务服务器。

域名、IP、Nginx集群、业务集群的对应关系如下:

一个域名或一个泛域名 对应 一个公网IP

多个公网IP 对应 一个Nginx集群

一个Nginx集群 对应 多个业务

四、详细资料:

github地址:https://github.com/leonindy/camel

文档:http://leonindy.coding.me/camel_in_action/

本文分享自微信公众号 - nginx(nginx-study),作者:leonindy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx和F5区别

    Nginx:高性能的 HTTP和反向代理服务器,同时支持作为IMAP/POP3/SMTP代理服务器。目前被很多网站应用为其HTTP软负载均衡器。高效的性能、良好...

    后端技术探索
  • Nginx和F5区别

    Nginx:高性能的 HTTP和反向代理服务器,同时支持作为IMAP/POP3/SMTP代理服务器。目前被很多网站应用为其HTTP软负载均衡器。高效的性能、良好...

    后端技术探索
  • 四层和七层负载均衡的区别

    ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换...

    后端技术探索
  • nginx负载均衡实验

    超蛋lhy
  • 来个科普 | Nginx 和 F5 区别是什么?

    1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

    用户6543014
  • Nginx和F5区别

    Nginx:高性能的 HTTP和反向代理服务器,同时支持作为IMAP/POP3/SMTP代理服务器。目前被很多网站应用为其HTTP软负载均衡器。高效的性能、良好...

    后端技术探索
  • Nginx和F5区别

    Nginx:高性能的 HTTP和反向代理服务器,同时支持作为IMAP/POP3/SMTP代理服务器。目前被很多网站应用为其HTTP软负载均衡器。高效的性能、良好...

    后端技术探索
  • Nginx 除了负载均衡,还能干啥?

    Nginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。那除了...

    江南一点雨
  • 浅谈Nginx负载均衡与F5的区别

    笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Ng...

    java架构师
  • 十分钟搞懂负载均衡

    我们知道负载均衡层的作用是“将来源于外部的处理压力通过某种规律/手段分摊到内部各个处理节点上”,那么不同的业务场景需要的负载均衡方式又是不一样的,架构师还要考虑...

    黄泽杰

扫码关注云+社区

领取腾讯云代金券