现有系统中存在的问题:

1. 慢连接、瞬时访问慢。

场景一:

如果后端新增加机器,cache命中率低,因此响应速度慢,但是能连接上且不超时。如果ui持续访问就会把uiCheap sunglasses wholesale夯住。

场景二:

如果后端模块某一台机器响应较慢。如果前端持续访问就会被夯住。

2. 死机。

场景一:

能断断续续响应请求,不过速度很慢。造成ui夯住。

3. 混合部署。

场景一:

多个模块在同一机器上,项目影响。

4. 机器权重。

场景一:

老机器,性能差;新机器,性能彪悍。因此他们应该承载不同的压力。

5. 跨机房冗余。

场景一:

后端对cache依赖很高的模块,因为采用的是一致hash算法,如果挂掉一台机器,对另外的机器cache命中率冲击很大。因此希望将对这个机器的请求均衡到另外一个机房。

6. php和c使用同样的策略。

现在php和c希望能使用的策略实际上是有很大的一致。为了避免重复开发,php和c希望采用同样的负载均衡库。

要解决的问题:

设计思路:

2. 负载选择。对步骤1排序后的Server按以下顺序进行选择:

a、按连接失败概率进行选择。

注:横轴代表失败次数,纵轴代表选择的概率。

Cconn:一段区间内失败次数

f(Cconn):连接概率,取值范围在(0,100]

b、按健康状态选择。

整个模型基于服务处理时间的收敛性。

分析:

1) 如果机器状态良好,则平均处理时间会保持在一个稳定水平;即使是小波动,也会较快平稳在一个状态。

2) 如果机器开始出现问题,处理时间会开始增长。如果增长持续超过一段时间,则说明有可能会影响服务;如果一段时间后稳定了,说明对请求没有太多影响。

f(healthy):机器健康状态,取值范围[0,1]

select(healthy):机器选择概率,取值范围[R,1]

c、如果所有机器都没选中,则随机选择一台机器进行服务。

3. 机器流量均分。

不同的机器处理能力是不一样的。当按照步骤2选择了某台机器,需要将其他处理时间为他的1/T(T>=2)的机器也选取出来,将部分压力分给对应的机器。

设 k台机器的处理时间分别是t1, t2,…,tk,选中的机器id=i,比该机器处理能力高的机器时间分别为p1,p2,..,pr,(其中pj × T <= ti)。设一段时间总访问量为Y,每台机器理论上的访问量应该为Vg=Y/k。而实际的Vr=Y/(ti * (1/t1+1/t2+…+1/tk))。则应该分出Vg-Vr的流量给pj。pj的流量比例为1/p1:1/p2:…:1/prWenZhou Sunglasses

算法设计:

A、均衡算法

1. 一致hash算法。

将每个server的ip和port加上balance_key三者做字符串拼接后,做md5签名。

value(server) = md5(server_ip + server_port + balance_key)

2. 随机算法。

value(server) = random();

3. 轮询算法。

value(server) =((server.id – (rounds %server_count)) + server_count) % server_count

4. 多个选一算法。

rank初始化为1, 如果默认的server失败,则rank+1

value(server) =((server.id – (rank %server_count)) + server_count) % server_count

B、负载算法

1. 连接状态算法。

a、对每一个server开辟一个状态队列。bool queue[K]用来统计失败次数。每次有坏状态进队,计数加一。如果有坏状态出队,则计数减一。

b、按照f(Cconn)公式计算出选择概率。

c、利用rand()%100是否在[0,f(Cconn)]来决定是否选择该机器。

2. 健康状态算法。

a、每台机器维持一个一秒钟内的处理时间T和次数C。

b、当一秒过去以后,将T、C计算为平均处理时间R。

c、每M秒,统计每台机器最近一段时间的平均处理时间, 按照公式select(healthy)算出选择概率。

d、利用rand()%100是否在[0, select(healthy)*100]来决定是否选择该机器。

C、流量均分

按照策略选出满足要求的机器,按照流量均分公式进行流量分配。

分配时按照balance_key+server方式和Reading Glasses with Case()来分配机器, 尽量保证请求落在同一台机器。

php负载均衡原理_PHP超级负载均衡相关推荐

  1. L4和L7负载均衡原理和常用负载均衡架构实现

    L4和L7负载均衡原理 四层负载均衡原理 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器.以常见的TCP为例,负载均衡设备在接 ...

  2. java负载均衡插件_超级负载均衡

    超级负载均衡旨在为解决服务不断扩展.机器不断增多.机器性能差异等问题,以增强系统的稳定性,自动分配请PHP 超级负载均衡旨在为解决服务不断扩展.机器不断增多.机器性能差异等问题,以增强系统的稳定性,自 ...

  3. java负载均衡原理_多种负载均衡算法及其 Java 代码实现

    首先给我们介绍下什么是负载均衡 负载均衡 树立在现有网络结构之上,它供给了一种廉价有用通明的办法扩展 网络设备和 效劳器的带宽.添加 吞吐量.加强网络数据处理才能.进步网络的灵敏性和可用性. 负载均衡 ...

  4. linux在多核处理器上的负载均衡原理

    原文出处:http://donghao.org/uii/ [原理] 现在互联网公司使用的都是多CPU(多核)的服务器了,Linux操作系统会自动把任务分配到不同的处理器上,并尽可能的保持负载均衡.那L ...

  5. php负载均衡原理_Java开发大型互联网架构深入负载均衡原理之方案分析

    引言 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balan ...

  6. 想实现高可用?先搞定负载均衡原理

    在互联网大行其道的今天,随着业务的迅猛增长,技术上我们常常要面对高并发,大流量. 图片来自 Pexels 为了实现高可用,高性能我们采用了很多的技术手段,负载均衡就是其中之一.作为外部流量与内部应用的 ...

  7. Docker Swarm服务发现和负载均衡原理

    Docker Swarm服务发现和负载均衡原理 Docker使用的是Linux内核iptables和IPVS的功能来实现服务发现和负载均衡.Iptables是Linux内核中可用的包过滤技术,可根据数 ...

  8. 搞懂分布式技术8:负载均衡原理剖析

    负载均衡的重要性无需多说,今天带来:负载均衡原理的解析. 开头先理解一下所谓的"均衡". 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可 ...

  9. SpringCloud LoadBalancerClient 负载均衡原理

    LoadBalancerClient 是 SpringCloud 提供的一种负载均衡客户端,Ribbon 负载均衡组件内部也是集成了 LoadBalancerClient 来实现负载均衡.那么 Loa ...

最新文章

  1. 奖牌分配/Median Pyramid Hard
  2. Mybatis的一对一查询以及延迟加载
  3. django的数据库名字和models.py中类名的对应关系
  4. 《Windows Communication Foundation之旅》系列之二
  5. android:layout_gravity和android:gravity属性的区别(转)
  6. shell 脚本返回上级目录_cmd返回上级目录
  7. php 网站实例,php网站实例【货币问答】- php网站实例所有答案 - 联合货币
  8. 必备技能10:管理学类重要期刊名录 -- UTD24 和 FT50
  9. 2021年全球与中国测光表行业市场规模及发展前景分析
  10. 大学语文 · 期末复习知识点汇总
  11. 调用百度API实现人脸识别
  12. 数据结构期末考试错点汇总
  13. AI轻松入门,AI零基础入门,AI初级教学,
  14. JAVA操作Word合并、替换占位符、Word插入富文本、生成水印
  15. Linux生成校验文件asc,使用 GnuPG 加密签名来验证下载文件的可靠性和完整性
  16. 【NLP】自然语言处理学习笔记(一)语音识别
  17. 作为一个精神病人是一种怎样的体验?
  18. padStart(),padEnd()方法
  19. 战地4 网页服务器地址,战地4修改的服务器地址
  20. 铃铛子训练营 | 我的感悟(二)

热门文章

  1. 我是如何在SQLServer中处理每天四亿三千万记录的
  2. 设置oracle服务自动启动
  3. 点击form 表单中的button导致页面刷新问题
  4. 开源 java CMS - FreeCMS2.8 数据对象 guestbook
  5. 发挥主观能动性,才可以能常人之所不能 - 阿里云MVP 杨洋专访
  6. 【转】POJ 1177 Picture(1)
  7. 网络营销再掀波澜,微博独领风骚
  8. Google推出的新服务:Docs Spreadsheets
  9. mysql中括号_mysql进阶知识点,启动项、系统变量、字符集介绍!
  10. linux从源码编译软件,linux软件包管理——源码包编译安装