• 负载均衡设计


    转自:http://blog.csdn.net/chenggong2dm/article/details/9111309

    最近要搭建一个高并发的网站。所以,得设计负载均衡这一块。从大的方向上讲,负载均衡分为硬负载均衡软负载均衡

    下面依次简要说明一下:

    硬负载均衡

    硬负载均衡,也就是使用专用的负载均衡设备。主流的硬负载均衡器有如下几种:

    F5:最主流的硬负载均衡器。便宜的20万以上,贵的100多万。

    深信服:乞丐版低配12万元起价。

    A10:基本都在100万元以上。

    Array:16-100万。

    看这价格就知道,硬负载均衡,一般的中小公司,都会被价格折磨、然后犹豫、最后放弃。

    软负载均衡

    软软负载均衡,也就是,不使用专用的负载均衡设备,而是通过软件来实现负载均衡。常用的有如下几种:

    DNS:最原始的负载均衡方式,名字就已经说明了一切,百科一下:

      最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
      DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

    LVS:最常用的软件负载均衡。我见过的国内百万级用户的架构,基本都是靠它顶的。

      LVS 是一个开源的软件,可以实现LINUX平台下的简单负载均衡

    优点:

    1 、开源,免费

    2、在网上能找到一些相关技术资源

    3、具有软件负载均衡的一些优点

    缺点:

    1、具有开源产品常有的缺点,最核心的就是没有可靠的支持服务,没有人对其结果负责

    2、功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等。

    3、开启隧道方式需重编译内核

    4、配置复杂

    5、只支持LINUX ,如果应用还包括WINDOWS、SOLIRIS等就不行了

      LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构。

    主要组成:

    A.负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的. B.服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEBMAILFTPDNS等。

    C.共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

    Nginx:也是现在流行的、常用的负载均衡方案之一。

    百科:

      Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发。

      Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。

      反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

  • 相关阅读:
    C++ 类的多态一(virtual关键字--构造函数深刻理解)
    C++ 类的继承六(多继承的二义性--虚基类)
    C++ 类的继承五(类继承中的static关键字)
    C++ 类的继承四(类继承中的重名成员)
    C++ 类的继承三(继承中的构造与析构)
    C++ 类的继承二(赋值兼容性原则)
    C++ 类的继承一(访问控制)
    C++ 匿名对象产生场景
    WPF/ASP.NET:几个Prism中的术语
    Prism 5 + MEF中的ModuleCatalog.CreateFromXaml问题
  • 原文地址:https://www.cnblogs.com/tv151579/p/4276690.html
Copyright © 2020-2023  润新知