| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 单元化架构之流量调度篇 -> 正文阅读 |
|
[系统运维]单元化架构之流量调度篇 |
在之前的文章中,我们了解了单元化架构的一些基本理论和原理,没看过的小伙伴可以再次阅读哈。流量管控调拨和服务请求路由是LDC架构中的一个关键设计主题,本篇文章将向大家详细介绍核心原理和实现。 整个流量调度的架构我们可以分为四层架构,分别是DNS、接入层、服务调用和DAO层。 DNS比如用户在打开百度首页时,浏览器会先请求DNS解析 DNS根据规则,将域名解析到其中一个机房的IP。目前常用的规则有:
有些应用采用了一种多域名优化技术,可以将路由选择前推到 DNS 层,避免了后面层的跨机房转发。比如百度的域名是 接入层得到具体接受服务请求的IP地址后,请求就被发送给目标服务器,接入服务请求处理。 接下去,我们来看下一次用户请求的整个接入和处理过程,如下图所示:
服务调用层用户请求进入web层后,就进入了业务处理环节,主要涉及各个系统间的服务调用、消息处理等。虽然绝大部分调用都应该收敛在单元内部,但是跨单元的调用无法避免。应该调用哪个单元,是业务数据 + LDC 规则决定的,比如GZone需要调用Rzone内的服务,需要根据uid路由到能处理该uid请求的Rzone。 RPCRPC框架本身是不理解业务逻辑的,要想知道应该调哪个单元的服务,信息只能从业务参数中来。 解决方案是框架定义一个接口,由服务提供方给出一个实现类,描述如何从业务参数中获取两位 uid。服务提供方在接口上打注解,告诉框架实现类的路径。框架就可以在执行RPC调用的时候,根据注解的实现,从参数中截出分片ID。再结合 LDC 路由规则中 uid与逻辑单元之间的映射关系,就知道该选择哪个单元的服务提供方了。 消息消息这层是LDC架构中的一个难点,因为涉及到broker之间的连接,但是在LDC中本着一下原则实现消息的通信。 客户端只跟本 Zone 的
DAO层数据访问层的 uid 映射规则跟应用层保持一致。正常情况下,一笔业务请求访问的数据,刚好就在同机房。数据访问层是最后的兜底保障,即使前面所有的防线都失败了,一笔请求进入了错误的单元,在访问数据库的时候也一定会去正确的库表,最多耗时变长,但绝对不会访问到错误的数据。 流量调度场景蓝绿发布在LDC架构体系下,灰度发布是最典型的一个应用场景,我们接下来看一下灰度发布的一个过程。
容灾切换这里后面会整理成单独的文章。 总结流量调度是LDC架构中的一个关键设计主题,主要涉及的技术包括DNS域名解析、“接入层”请求处理、Cookie中的路由标识设置、路由计算、数据层的数据源访问范围约束等。正是因为LDC单元化部署架构下的流量管控调拨和请求路由处理能力,才使得灰度发布、容灾切换、快速容灾等成为可能。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:46:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |