82.反向代理与负载均衡原理

                                                                                                         
                                                           
一、反向代理

                                                                                              
一个请求到达nginx,到转发上游服务,在发到客户端

                                                         
1、负载均衡      

   

                                                                                  
ngx为一个应用服务集群,ngx提升应用服务的可用性.包括容灾和扩容    

                                      
(1)可扩展性如何通过ngx保护的?                                                                             

Nginx在AKF扩展立方体上的应用                                                                           
1]X轴扩展:我们的服务是无状态的,ngx无论启多少个服务,他们是同等为用户请求服务的                          
称为水平扩展,g成本最低.nginx的round-robin/least-conected是基于水平扩展的算法                           
水平扩展不能解决所有问题,ngx尤其是不能解决数据量问题.单台数据量大的时候,无论扩展多少台服务,            
每一台服务数据依然非常大                                                                               
2]Y轴进行拆分:对功能做拆分,原来有一台应用服务处理的功能,ngx分为两台应用服务.分别处理不同的api(处理不同的url)
nginx可以基于URL的location进行配置,ngx有些location可以通过proxy_pass代理到上游服务器中.对功能进行分发
需要更改代码,ngx做大量重构,成本比较高.                                                                 
可以解决数量上升问题,随着拆分数据量会下降                                                             
3]Z轴基于用户信息进行扩展:                                                                             
比如可以基于用户ip地址,我们的cdn.发现某一些ip地址靠近某一个cdn中心.可以把这样的请求引流到这个cdn       
上,                                                                                                    
为了分离减少数据容量,可以根据用户名,某些固定用户引流到固定集群                                         
nginx的hash算法可以用于基于Z轴扩展                                                                     
 这几种负载均衡可以组合起来使用   

(2)反向代理分为两大类

                                                                       
4层:进来是udp,tcp流量转发也是tcp,udp流量,无业务特性                                                 
7层:http中含有大量业务信息,当client发来http请求后,根据http的header,method等等信息,                  
可以转换为不同协议       

http模块7层反向代理                                                                                
stream模块4层反向代理                                                                                
                         

    2.缓存       

1]时间缓存

用户方位 index.html通过internet网,到达nginx,index.html在nginx没有缓存所以访问,所以          
访问应用服务器.应用服务器的响应到达nginx,nginx做两件事,nginx把respose发给用户;把相应缓存在             
这台机器的磁盘上                                                                                       
当另一个用户请求index.html,nginx发现这个页面已经缓存,且在缓存有效期内,直接响应用户.减少环节,           
且nginx比应用服务器性能更好                                                                            
2]空间缓存                                                                                             
当访问应用服务器内容,nginx可以加快速度欲取一些响应的内容,放在nginx上 

 

三、AKF扩展立方体

 

(1)链接:https://www.jianshu.com/p/d08d0c14810f                                                        
AKF扩展立方体(Scalability Cube),是《架构即未来》一书中提出的可扩展模型,这个立方体有三个轴线,每个轴线描述扩展性的一个
维度,他们分别是产品、流程和团队:
X轴 —— 代表无差别的克隆服务和数据,工作可以很均匀的分散在不同的服务实例上;                         
Y轴 —— 关注应用中职责的划分,比如数据类型,交易执行类型的划分;                                     
Z轴 —— 关注服务和数据的优先级划分,如分地域划分。   

 

(2)链接:https://www.cnblogs.com/zhyg/p/9466998.html                                                    
X,gY,Z轴分别代表了不同的扩展方向,下面简单解释一下:                                                
1)X轴代表无差别的克隆服务和数据库。用一个人来说X轴的例子可能是公司很多相同的事情分给多个人来干,简单快捷在每个克隆实体间>
无差别的分配任务,每个克隆实体都可以完成其他克隆实体的任务,无论任务分配给了谁。每个克隆实体都有工具和资源来尽快完成所分>
配的任务。
2)Y轴代表的是按照交易处理的数据类型,交易任务类型或两者组合分割的工作责任。我们一般用动词或资源进行分离,比如:登录,查询
,结算等等。把同样的工作分割成流水线式的工作流或并行的处理流,Y轴代表的更多是对工作的“工业革命”,将耦合紧密的工作进行进行
专门处理。Y轴实质代表责任、行动或数据。实施成本一般比X轴扩展代价高。假如有100个人造100辆车,每个人负责造一辆,完成造车全>
部的任务,不如让100个人执行子任务,如发送机的安装、喷漆、四轮定位。这样就会减少前后交互所需要的上下文信息,更专注做某件事
情。
3)Z轴通常基于请求或客户的信息进行分割。比如我们在分客户时会有 “普通会员”和“vip会员“之分,服务“普通会员”与服务“vip会员”可>
能会有不同。vip会员可能会特殊对待,会有单独的人在处理vip会员的事情。但是他们都是会员。再比如一些客户可能需要专门的账单、>
付款条件和基于业务量的特别互动。我们可能安排最好的财务代表、甚至特别的经理负责一个或多个客户,以专门处理他们的独特需求。>
这样将减少执行绝大多数的计费功能所需的知识量,从而服务好广大客户。Z轴分割是成本最高的分割方向,Z轴分割有助于提高交易和数>
据的可扩展性,如果实施得当也有助于扩展指令集和过程
                                                                                                    
X轴一般就是负载均衡,比如用F5等硬件设备进行端口轮训负载。                                           
Y轴主要体现在我们按业务拆分服务,比如登录服务,订单服务等                                           
Z轴主要是对一些有特殊要求的业务执行单独流程处理,比如按地区提供对应地区客户的服务,根据不同地区不同客户群的生活习惯等进行
差异化服务。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值