所谓的正向代理(proxy),我的理解就是在客户端处的代理 。如浏览器中的可以配置的访问某些网站的代理,就属于正向代理,但是一般而言不会说正向代理而是代理,即默认代理都是正向的 。
而反向代理(reverse proxy)就是挡在服务器端前面的代理,比如前面LVS中的DS服务器就属于一种反向代理 。为什么需要反向代理,大体的原因有以下的考量:
- 负载均衡:希望在这个反向代理的服务器中,将请求均衡的分发到后面的服务器中 。
- 安全:不想向客户端暴露太多的服务器地址,统一接入到这个反向代理服务器中,在这里做限流、安全控制等 。
- 由于统一接入了客户端的请求,所以在反向代理的接入层可以做更多的控制策略,比如灰度流量发布、权重控制等等 。
Nginx应该是现在用的最多的HTTP 七层负载均衡软件,在Nginx中 , 可以通过在配置的server块中定义一个域名,然后将该域名的请求绑定到对应的Upstream中,而实现转发请求到这些Upstream的效果 。
如:
upstream hello { server A:11001; server B:11001;}location / { root html; index index.html index.htm; proxy_pass http://hello;}这是最简单的Nginx反向代理配置,实际线上一个接入层背后可能有多个域名,如果配置变动的很大,每次域名以及对应的Upstream的配置修改都需要人工干预,效率会很慢 。这时候就要提到一个叫DevOps的名词了,我的理解就是开发各种便于自动化运维工具的工程师 。有了上面的分析,此时一个提供七层HTTP访问接口的服务架构大体是这样的:

文章插图
服务发现与RPC
前面已经解决单机服务器对外提供服务的大部分问题 , 来简单回顾:
- 域名系统解决了需要记住复杂的数字IP地址的问题 。
- PB类软件库的出现解决协议定义解析的痛点 。
- 网关类组件解决客户端接入以及服务器横向扩展等一系列问题 。
面向公网的服务,一般都是以域名的形式提供给外部调用者,然而对于服务内部之间的互相调用 , 域名形式还不够,其原因在于:
- DNS服务发现的粒度太粗,只能到IP地址级别 , 而服务的端口还需要用户自己维护 。
- 对于服务的健康状况的检查,DNS的检查还不够 , 需要运维的参与 。
- DNS对于服务状态的收集很欠缺,而服务状态最终应该是反过来影响服务被调用情况的 。
- DNS的变更需要人工的参与,不够智能以及自动化 。
- 服务发现系统:用于提供服务的寻址、注册能力,以及对服务状态进行统计汇总 , 根据服务情况更改服务的调用情况 。比如,某个服务实例的响应慢了,此时分配给该实例的流量响应的就会少一些 。而由于这个系统能提供服务的寻址能力,所以一些寻址策略就可以在这里做 , 比如灰度某些特定的流量只能到某些特定的实例上,比如可以配置每个实例的流量权重等 。
- 一套与该服务系统搭配使用的RPC库 , 其提供以下功能:
- 服务提供方:使用RPC库注册自己的服务到服务发现系统,另外上报自己的服务情况 。
- 【服务调用流程 服务调用异常请检查业务参数】
推荐阅读
- 烧结工艺流程 烧结工艺
- 酒店针对高考期间的服务 酒店疫情期间高考该做什么
- 做包子的方法与步骤,开店做包子的流程?
- 个人咨询服务如何缴税
- 蜜丸的制作方法 蜜丸的制作方法与流程
- 曝二字影帝出轨,在KTV卫生间与嫩模亲热,被服务员撞见一丝不挂
- 乌龟的养殖方法 乌龟的养殖方法与流程
- 特殊病种门诊报销办理方法流程 特殊病种门诊怎么报销?特殊病种门诊报销比例是多少
- 免费dns解析服务器地址
- 失能老人补贴怎么申请流程 失能老人补贴怎么申请
