乐趣区

关于网络请求:一次网络请求中的流量分发过程-京东云技术团队

1. 摘要

古代的企业级或互联网零碎往往须要进行流量布局,达成通明多级分流。流量从客户端收回到服务端解决这个过程里,流经的与性能无关的技术部件有(达成“通明分流”这个指标所采纳的工具与伎俩):客户端缓存、域名服务器、传输链路、内容散发网络、负载均衡器、服务端缓存。通明分流带来的价值:高可用架构、高并发。

本文次要介绍流量布局中的网络申请过程过程及:

第一局部:对一次网络申请的过程作简要介绍,而后介绍本人目前理解到的前端网络组件搭配形式、后端网络组件搭配形式

第二局部:介绍 LB 负载零碎、vip 与 rip 的映射关系

第三局部:介绍内网域名解析及公网域名解析

2. 网络申请过程

通用申请过程及申请过程名词解释来源于: https://cf.jd.com/pages/viewpage.action?pageId=766717554

2.1 通用申请过程

2.2 申请过程名词解释

rip: 实在 ip,指虚拟机或容器 ip

vip: 虚构 ip,不可跨机房,online 申请,负载、主动探活等性能,分公网 vip 与内网 vip

内网: 专指机房外部,严格的防火墙策略,内网之间无防火墙,可申请内网 vip 提供负载平衡供给用间互访;内网≠办公网

办公网: 办公区个人电脑网络,通过反向代理拜访内网机房利用

公网: 互联网用户网络,通过 DNS + 公网 vip 拜访内网机房利用

备注(本人了解,有可能了解不正确):

公网 vip 即公网虚构 ip,虚构 不是说公网上找不到这个 ip,虚构是绝对于服务器 ip(rip)来说的,vip 不间接承当业务逻辑

公网 VIP 在公网实在存在、内网 vip 在公司内网实在存在

2.3 前端网络组件搭配形式

援用链接: http://jdthelp.jdos.jd.com/help/bestpractice/multi-web-demo.html

外网拜访需满足如下图架构:VIP 前面挂 jen-nginx 来代理前端的主利用,jen 代理前面挂动态利用 1\~N

测试环境:多个前端我的项目可能存在下列架构形式:域名 -> VIP -> JEN 代理(依据不同域名拜访不同文件夹下的文件)-> 动态利用

2.4 后端网络组件搭配形式

后端利用从调用形式来说分为两种(http 调用 JSF 调用)

前端利用 —(协定 http 或者 https)— 后端前置利用 –(协定 jsf 公有协定)—-JSF 微服务利用

后端前置利用 —–jsf 微服务利用,之间的负载由消费者来决定,所以个别毋庸关注这两者之间的负载。

形式 1: vip 下的负载(LB 负载零碎)+ Nginx

形式 1 备注:

VIP 下能够间接挂载服务器,这里 Nginx 不是必须的,除非你须要 nginx 提供的性能(除了负载)。

如果你仅仅是用 nginx 来做负载,那么请去除 nginx 组件,没有必要加一这个组件,团体的 vip 的 LB 曾经蕴含负载性能,不要减轻零碎的复杂性。

形式 2:容器 K8S 层面的负载

vip 提供的 LB:

vip 提供的 LB 下是间接挂机器 IP,其中多个 ip 之间没有分组的概念,并且没有探活机制

每次上线须要摘掉负载下的机器,上线实现后,再把机器挂上去

行云部署 - 高级性能 - 负载平衡( 容器 k8s 层面的负载 )长处:

有机器分组的概念: 依照机房或者 机房 + 机房集群的维度分组后,每个分组申请本人的负载平衡。

具备探活机制: 设置衰弱探活门路,针对负载进行探活。每次上线毋庸摘掉负载下的机器。

3. LB 负载零碎简介

其实吧,vip 自身就是个 ip,没有多少真正的价值。vip 能够了解为是团体 LB 负载平衡的入口 ip,而 LB 负载平衡才是真正的分流组件。

vip 是零碎主动调配复用的(vip 资源宝贵,零碎调配的 vip 有可能复用),LB 负载平衡有两种分流规定:

1. 分流规定的实现形式

分流规定两种实现形式,默认规定、专用规定。

默认规定:面向域名,流量接入到后端集群。此为模板,可抉择利用范畴。

专用规定:面向 VIP,可为某 VIP 独立指定后端集群。其中专用规定优先级高。

默认规定、专用规定两者关系:

共同点 不同点
默认规定面向域名的一个端口有且只有一条分流规定 专用规定面向 VIP 的一个端口有且只有一条分流规定 默认规定必须存在;专用规定优先级高;专用规定无设置时,继承默认规定指向的后端

3.1 默认规定: 默认分流规定:域名 + 端口 + 集群,分流规定唯一性

备注: 零碎调配的 vip 有可能复用

在默认规定中,假如零碎调配的 vip 都是 111.111.111

域名 A (www.a.jdcom)+ 域名的一个端口 port(80) 通过配置的 vip(111.111.111)将申请转发到 后端集群 A。

域名 B (www.b.jd.com) + 域名的一个端口 port(443) 通过配置的 vip(111.111.111)将申请转发到 后端集群 B。

3.2 专用规定: 面向 vip 的一个端口有且只有 1 条分流规定

备注:(猜想 不确定):专用规定中的 vip 可能不是复用的。

备注:一个 VIP 也能够用多个端口,比方 HTTP 是 80 和 443,TCP 是 2000-2014

4. vip 和 rip 的映射关系 (重要 十分重要)

一对一:一个机房,一个 vip 对应一个 rip

一对多:一个机房,一个 vip 对应多个 rip

多对多:多个机房,每个机房的 vip 对应 其机房下的多个 rip

4.1 vip 下挂载 rip 的约定

  1. vip(机房入口)是机房维度的,当然如果说 vip 出问题了,个别状况下就是机房出问题了,这个呈现的几率会比拟小。
  2. vip 是机房维度的,然而 vip 下挂哪些机器 是由研发人员决定的,因而 vip 下的机器是有可能跨机房的。然而研发人员应该 依据机房视图( 机器的机房所在地 )来对应此所在地的机房入口( vip ),应尽可能恪守 这个规定。

4.2 为什么要恪守这个约定呢?

1. 尽可能放大问题影响的范畴: 如果你 VIP 下的机器跨机房,如果 Vip 出问题,导致多个机房的机器都无奈接管流量

2. 尽可能匹配断网演练的指标: 机房断网演练,预计 VIP 也不会让流量进入到下一层,如果你 vip 下挂载跨机房的 rip,间接让 机房的断网演练,变成了 跨机房演练(因为多个机房的机器不会接管到流量)

5. 内网域名解析(机房视图与机房入口阐明)

  1. 内网域名解析时:vip 是依据 机房入口(目前有 廊坊 vip 马驹桥 vip 印尼 vip) 走的。
  2. 每个视图必须解析。廊坊视图—> 廊坊 VIP,马驹桥视图—> 马驹桥 VIP,其余的视图—> 抉择马驹桥或者廊坊 VIP(必须指向线上可用 VIP)
  3. 为优化机房内拜访,优先选择本机房 VIP。
  4. 思考到旧的机房已下架或者正在下架,旧机房优先选择廊坊、马驹桥 VIP,国外利用优先选择国外的 VIP。

6. 公网域名解析

pop 入口 在计算机网络中,pop 示意入网点(pop),pop 位于网络企业的边缘外侧,是拜访企业网络外部的进入点,外界提供的服务通过 pop 进入,这些服务包含 Internet 接入,广域连贯以及电话服务(PSTN)。

pop 入口:新利用上线时应该申请入网点(pop)处的 vip。

域名解析:

不须要 VIP: 间接填写本人的公网 IP

须要 VIP:

  1. 请提前申请 POP 入口的 VIP
  2. 解析前请线下绑定 host 测试 VIP 业务可用性
  3. 依照运营商对应的 POP 入口 VIP 进行解析

7. 总结

简略的申请过程最实用,实用的申请过程最简略。

用简略实用的搭配形式满足流量散发,不要随便搭配,减少零碎的复杂性。

作者:京东保险 张江涛

起源:京东云开发者

退出移动版