0%

HAProxy

分布式事务实现常见就那几种方案,基于XA协议的两阶段提交、TCC方案、基于消息的最终一致性方案和阿里的产品GTS。其中,基于消息的最终一致性方案最常用的就是用RabbitMQ来处理,当然也有使用RocketMQ。

一、概念

      HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

      HAProxy实现了一种事件驱动单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

二、使用(Mac)

  1. 安装

    • 去官网下载,传送门,博主选择了2.4稳定版本
    • 解压文件
    • cd haproxy-2.4.0
    • sudo make TARGET=osx,见于源码INSTALL文件
    • sudo make install,安装完后会在当前目录产生一个可执行文件haproxy
  2. 启动./haproxy -f examples/quick-test.cfg

  3. 访问http://localhost:8000

  4. 配置详解

    • global:全局配置参数,主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关
    • default:默认配置参数,这些参数可以被用到frontend、backend、listen段,如果frontend等也定义了相同的参数则会覆盖default
    • frontend:1.3版本新增,前端配置参数,可以通过参数直接使用指定的后端backend
    • backend:1.3版本新增,后端配置参数,一个backend对应一个或者多个实体服务器
    • listen:常用于状态页面监控和后端server检查,是fronted和backend的组合体

三、参考

  1. 参考一
  2. 参考二
  3. 参考三