腾讯云微服务平台 TSF 异地多活单元化能力重磅升级
导语
2023腾讯全球数字生态大会已于9月7-8日完美落幕,40+专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。
微服务与消息队列专场,腾讯云微服务平台 TSF 产品经理张桢带来了《腾讯云微服务平台 TSF 异地多活单元化能力重磅升级》的精彩演讲。本篇文章详细回顾了腾讯云微服务单元化最佳实践。
单元化架构的概述
什么是单元化
从目前的服务化架构看起,传统的架构下服务是分层的,每一层使用不同的分区算法,每一层都有不同数量的节点,上层节点随机选择下层节点。这种不确定性,就会导致上层节点访问下层节点时有可能跨区或者跨地域。而跨区跨地域的调用代价是很高的,不仅要解决时延的问题,还要保证数据同步,这两点在技术实现上都具有很大的挑战性。
那换一个思路,事先设计好调用的路径,让请求沿着规划好的路径进行调用,这样的设计路径就可以解决以上的挑战。单元化架构的出现,就是遵循这样的设计,在单元化架构下,接入层、服务层、数据层使用相同的分区算法,实现计算资源与数据资源进行逻辑上的绑定,最终形成一个个标准化的处理单元。
单元的特征与类型
了解了什么是单元化,接下来再看下单元的特征与类型。
单元的特征
1. 每个单元都包括一组计算资源和一组数据资源,并使用相同的规则进行逻辑关联,比如他们都使用相同的标签。
2. 根据系统业务的规模不同,一个系统可能会规划多个单元,常见的可能会有 4-12 个,甚至更多。
3. 原则上一个单元内部只会有一组数据资源。
单元的类型
单元的类型原则上是按照单元内承载业务的不同来分类的,比如用于承载入口流量的为网关或接入单元,处理业务的就叫做业务单元。这里面能进行单元化拆分,拥有自己的数据,能完成所有业务,而不需要依赖其他业务的叫做标准业务单元,不能进行拆分并且读多写少的业务就叫做本地技术单元。另外,在整个系统中,一般都会有一些配置型的业务,他们被很多单元依赖,也不能进行拆分,这种情况下,就把他们放在全局单元中。
由此可以看出,如果我们想要使用单元化架构,并不是一件特别轻松的事情,需要进行一系列的架构规划与业务改造。
那么,实现单元化能带来什么好处呢?这就要说到单元化的价值了。
单元化的价值
一般来说,当业务规模逐渐扩大,架构复杂性越来越高时,数据库连接数、标准化扩容、跨机房稳定性和性能问题就会逐渐凸显。
数据库连接数问题
先来看数据库连接数的问题。在云原生背景下,应用可以轻松实现横向扩容,但每个扩容出来的实例都会对数据库产生连接数,随着业务量的增大,数据库连接数上限往往成为集群扩容的瓶颈。在没有使用分布式数据库时,可以通过单元化来解决这个问题的。在数据资源与逻辑资源进行绑定后,每个单元的数据资源就是确定的,连带着计算资源也就确定下来。我们可以通过单元来控制数据库的连接数,并通过单元扩容的方式来实现分布式系统的整体扩容。
分布式运维与扩容问题
接下来看第二个问题——分布式运维与扩容。一般分布式系统都是通过监控告警配合人工干预的方式进行扩容,扩容的时机和容量需要依据经验判断,不一定能做到准确及时。如果采用单元化架构,那么以单元维度进行标准化扩容能够做到架构上整齐统一、运维动作标准化,也能够通过一个单元的业务量实现提前扩容的规划,真正做到操作前心里有数,操作时整齐划一。
跨机房性能问题
第三个问题——跨机房性能问题。在微服务集群中,应用通常是无状态的,这就意味着流量会进行无差别分发,那么接入层网关往服务层分发流量时,就会产生跨中心的访问,这极大影响了系统的稳定性和性能,如果使用单元化架构,那么单元化的流量闭环特征就能很好的解决这个问题。
异地多活问题
最后一个问题——异地多活。当架构逐渐演进到异地多活时,上述的稳定性和性能问题在异地场景下会被无限放大,因此,单元化也是实现异地多活的一种重要方案。
接下来,看一下腾讯云针对单元化提供的整体解决方案。
单元化架构解决方案
腾讯云单元化设计理念
腾讯云通过广泛的实践经验,归纳提炼出了腾讯云单元化架构,自上而下分为接入层、应用层、数据层和设施层。
接入层负责接收流量、识别流量、转发流量。识别后的流量被转发到应用层对应单元进行处理,单元按照客户维度进行拆分,在大多数场景下,单客户交易实现单元内闭环处理,少量的跨客户交易会进行跨单元处理。
整个体系的单元化架构是一个复杂的系统工程,涵盖了各个层面的综合设计,腾讯各产品提供对单元化原子能力的支持,ISV 伙伴基于原子能力实现服务封装。因此,腾讯单元化的设计始终秉承开放、轻量、灵活交付的设计与交付理念。
腾讯云应用单元化架构
站在整体核心系统应用的视角,我们可以按照业务逻辑将应用分为不同单元,最上面是接入层的接入单元 ADU, 负责接入接出能力。在应用层,按照业务可拆分性,分为 SDU、LDU 和 RDU。最底层为公共组件 GDU。在业务进行单元化改造的过程中,可按照此规则进行单元定义和拆分。
接入单元(ADU):负责接入接出能力。
标准处理单元(SDU):负责业务处理能力。
本地单元(LDU):提供单AZ共享服务能力。
同城单元(RDU):提供同城共享服务能力。
全局单元(GDU):异地多活架构中的全局类型服务。
腾讯云微服务平台(TSF)介绍
有了单元化的整体概念,接下来看看单元化在微服务层面的最佳实践。
TSF:开箱即用的微服务平台
腾讯云微服务平台( Tencent Service Framework,TSF)是一个兼容 Spring Cloud 和 Service Mesh 等多种微服务架构的商业化 PaaS 平台框架,提供一站式微服务全生命周期管理能力、数据化运营支持,提供多维度应用和服务治理。具有无代码改造迁移、业务快速部署、细粒度服务治理、快速问题定位排查、轻量化运维等功能。
TSF 核心特性与价值——标准化与多元化
使用标准化
TSF 提供标准化的服务接入规范、统一的标准操作体验、统一的注册和配置中心服务,标准化的部署管理,能够给客户带来接入、操作、配置一致体验。
技术多元化
TSF 兼容 SpringCloud, Dubbo、Service Mesh、GRPC、Spring Cloud 等主流框架。
能力全栈化
TSF 微服务平台拥有完备的权限管控体系,提供多样化的服务治理能力,技术体系自主可控,支持性能调优与运维排障,具有全方位服务治理和全周期管理能力,能够满足用户对微服务平台的诉求。
近年来,随着越来越多的客户进行架构升级,从单体应用改造为微服务应用,从云下迁移上云,能够覆盖开发、测试、发布、生产等各个阶段核心要求就成为了产品必不可少的能力,TSF 在上述各个阶段都提供了全面的管理能力,是众多客户采购一站式微服务平台的首要选择。
TSF 始终保持对高可用与单元化的探索,我们致力于不断优化底层架构以确保平台的稳定性和可靠性。同时,我们也在不断研究和实践高可用,提供标准化产品能力,带给客户更加稳定、可靠和愉悦的体验。
TSF单元化产品能力
TSF 伴随客户一起成长,根据不同的客户诉求,从单中心、同城多活、两地三中心到异地多活演进的各个阶段,都提供了相应的解决方案。如今,在大型金融机构纷纷尝试异地多活单元化架构时,我们也发布了 TSF 异地多活单元化的产品能力,辅助用户进行单元化架构的探索与实践。
接下来对几个关键的阶段简单介绍一下。
同城多活
TSF 很早就具备了同城多活的能力,这也是大多数微服务客户对于高可用的诉求。
什么是多活呢?
同城多活其实就是在云原生架构下的一个多活的解决方案,我们在同一个地域通常会有多个可用区,比如说有可用区 A 和 B,我们在两个可用区都部署了相同的服务,同城双活互为主备。
同城双活的架构实施起来较为容易,但是他只能应对机房故障,当整个地域都挂的时候,服务依旧是不可用的,这时候就需要两地三中心。
两地三中心(单元化)
一般来讲,两地三中心有两种方式可以做到,异地灾备和单元化,这两种架构目前都有客户在使用,区别是,单元化的模式能够获得单元化带来的一些优势,比如单元灰度,单元整体扩容等,但由于异地都用于灾备,因此资源闲置问题严重。
异地多活
异地多活的挑战就是为了让闲置异地资源也活起来,那么单元化就是解决异地场景下数据同步和访问时延的最好方式。在异地多活单元化下,多地的服务都能提供业务服务,同时由于单元流量闭环的特性,异地访问的概率大大降低,数据也无需实时全量同步,能够实现跨地域的高可用单元化多活容灾。
TSF 单元化产品能力矩阵
为了帮助我们的客户使用单元化架构,TSF 发布了对应的产品能力,涵盖单元化管理、高可用容灾、高效运维三大核心场景。
在实施单元化前,首先需要进行架构规划,设计好单元数量、添加好单元化产品,包括接入层的单元化网关、应用层的微服务平台、消息队列和数据层的数据库。在实施时,需要配置单元化规则,并将其推送给各个组件。如果需要进行单元灰度,还支持配置灰度单元与灰度规则。
除了基本的能力,单元化下的容灾与可观测也是单元化建设的重点。在容灾场景下,TSF 提供容灾单元配置,容灾一键切换、容灾仿真演练等多项容灾能力。在运维方面,支持统一的单元化监控与告警,监控并追踪跨单元或跨机房的请求。
下面,来看几个核心设计要点。
● 单元化路由
客户端请求携带标签路由到单元化网关,网关根据标签计算出目标单元。TSF 会识别本次调用是单元内调用还是跨单元调用,再将请求转发到对应的单元。对于相同服务的调用顺序为:优先单元内调用,其次本中心调用,最后同城中心调用。
● 单元灰度
以上是单元化路由的主要过程,接下来再看单元灰度的实现方式。在标准微服务架构中,灰度发布主要依靠框架能力实现。通过应用之间版本隔离,流量能按照版本标记发送到指定的应用版本集群中,通过流量比例的控制,来实现生产流量中的一部分请求由灰度的应用集群处理。
在单元化场景下,可以首先设定1-2个灰度单元,然后明确灰度维度有哪些,比如常见的有按指定客户号或者客户标签灰度等等。在网关进行单元路由计算前,优先查询灰度表,如果请求特征命中灰度规则,那么直接按照表中定义好的单元进行路由,转发到对应的灰度单元,完成单元灰度。
● 单元化容灾
接下来看单元化容灾。
在异地多活场景下,当一个单元出现故障时,需要将该单元的流量尽快切换到其他单元以保证服务连续性。可以在架构规划时配置好互备单元表来建立单元间的互备关系。当其中一个单元出现故障时,通过更新状态,将流量指向互备单元从而进行路由调整。当发生切换时,数据库会将备单元下的副本调整为主本以提供服务。
比如这张图所展示的,当单元1发生故障时,停用单元1的流量,并获取单元1对应的互备单元信息(单元5),等待数据库主备切换完成,更新全局路由将流量转发至单元5。此时单元5除了承载自身业务流量还会承载单元1的业务流量。当单元1 故障恢复时,再通过回切调整网关层路由到单元 1。这样,就完成了灾备时的单元切换与回切。
总结
本篇文章从单元化讲起,首先介绍了单元化的概念与价值,以及腾讯单元化的整体解决方案。然后聚焦在微服务领域,介绍了腾讯微服务平台 TSF 以及 TSF 对单元化支持的产品能力,并重点介绍了单元路由、单元灰度和容灾切换三种核心场景。
乘骐骥以驰骋兮,来吾道夫先路。腾讯云微服务平台TSF异地多活单元化能力升级只是产品发展的一小步,微服务团队希望未来能把产品打磨的更好,满足客户更多的需求。
相关文章:

腾讯云微服务平台 TSF 异地多活单元化能力重磅升级
导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕,40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场,腾讯云微服务平台 TSF 产品经理张桢带来了《腾讯云微服务平台 TSF 异地多活单元化能力重磅升级》的精彩演讲。本…...
01贪心:算法理论知识
贪心:01算法理论知识 什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额࿰…...

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
文章目录 一、演示多分类效果二、PaddleClas介绍三、代码获取四、数据集获取五、环境搭建六、数据格式分析七、模型训练7.1 模型恢复训练7.2 多卡训练7.3 其他训练指标 八、模型预测九、模型评估十、PaddleClas相关博客 一、演示多分类效果 二、PaddleClas介绍 PaddleClas主要…...

PageHelp插件在复杂sql下引起的Having无法识别错误及其解决方案
1: 问题出现的场景 系统中有一个复杂SQL内嵌套了多个子查询.在改动时需要将SQL的最后一行加上having来做额外的过滤处理. 添加完having语句后发现SQL能够正常执行就直接将代码提交到了测试环境.结果在测试环境报错Unknown column ‘xxx‘ in ‘having clause. 2: 分析问题 1…...

linux中的开发工具
在刚开始使用linux的时候,我们需要在系统上写一些简单的代码,来熟悉环境以及各种指令 并且熟悉属于linux的一套开发的环境,而这对于c来说需要三个软件就可以进行简单的编码 和使用,让我们来认识一下下列工具,以及工具的…...

2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望
目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…...

【小沐学NLP】关联规则分析Apriori算法(Mlxtend库,Python)
文章目录 1、简介2、Mlxtend库2.1 安装2.2 功能2.2.1 User Guide2.2.2 User Guide - data2.2.3 User Guide - frequent_patterns 2.3 入门示例 3、Apriori算法3.1 基本概念3.2 apriori3.2.1 示例 1 -- 生成频繁项集3.2.2 示例 2 -- 选择和筛选结果3.2.3 示例 3 -- 使用稀疏表示…...

对话ChatGPT:AIGC时代下,分布式存储的应用与前景
随着科技的飞速发展,我们正步入一个被称为AIGC时代的全新阶段,人工智能、物联网、大数据、云计算成为这个信息爆炸时代的主要特征。自2022年11月以来,ChatGPT的知名度迅速攀升,引发了全球科技爱好者的极大关注,其高超的…...

java多线程学习笔记一
一、线程的概述 1.1 线程的相关概念 1.1.1 进程(Process) 进程(Process)是计算机的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。 可以把进程简单的理解为操作系统中正在有运行的一…...

BOM与DOM--记录
BOM基础(BOM简介、常见事件、定时器、this指向) BOM和DOM的区别和联系 JavaScript的DOM与BOM的区别与用法详解 DOM和BOM是什么?有什么作用? 图解BOM与DOM的区别与联系 BOM和DOM详解 JavaScript 中的 BOM(浏览器对…...

Docker安装MongoDB
一、docker安装mongodb MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。 二、安装步骤 1.docker 拉取mysql镜像 docker pull mongo:latest 2.运行容器 docker run -itd --name mongo -p 27017:27017 mongo --auth参数说明: -p 27017:27017 &#…...
不要对正则表达式进行频繁重复预编译
背景 在频繁调用场景,如方法体内或者循环语句中,新定义Pattern会导致重复预编译正则表达式,降低程序执行效率。另外,在 JDK 中部分 入参为正则表达式格式的 API,如 String.replaceAll, String.split 等,也…...
vue入门及小项目小便签条
vue 框架:是一个半成品软件,是一套可重用的,通用的,软件基础代码模型。基于框架进行开发,更加快捷 ,更加高效 v-bind为HTML标签绑定属性值,如设置href,css样式等 v-model在表单元素上创建双向数…...

详解TCP/IP协议第四篇:数据在网络中传输方式的分类概述
文章目录 前言 一:面向有连接型与面向无连接型 1:大致概念 2:面向有连接型 3:面向无连接型 二:电路交换与分组交换 1:分组交换概念 2:分组交交换过程 三:根据接收端数量分…...

SpringMvc决战-【SpringMVC之自定义注解】
目录 一、前言 1.1.什么是注解 1.2.注解的用处 1.3.注解的原理 二.注解父类 1.注解包括那些 2.JDK基本注解 3. JDK元注解 4.自定义注解 5.如何使用自定义注解(包括:注解标记【没有任何东西】,元数据注解)? 三…...

【MySQL集群一】CentOS 7上搭建MySQL集群:一主一从、多主多从
CentOS 7上搭建MySQL集群 介绍一主一从步骤1:准备工作步骤2:安装MySQL步骤3:配置主服务器步骤4:创建复制用户步骤5:备份主服务器数据,如果没有数据则省略这一步步骤6:配置从服务器步骤7…...

RGB格式
Qt视频播放器实现(目录) RGB的使用场景 目前,数字信号源(直播现场的数字相机采集的原始画面)和显示设备(手机屏幕、笔记本屏幕、个人电脑显示器屏幕)使用的基本上都是RGB格式。 三原色 RGB是…...

认识面向对象-PHP8知识详解
面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。…...

毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计
基于51单片机的空气质量检测PM2.5粉尘检测温度设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 LED信号指示灯电路设计2.2 LCD1602显示电路2.3 PM2.5粉尘检测电路设计 3、部分代码展示3.1 串口初始化3.1 定时器初始化3.2 LCD1602显示函数 4 演示视频及代码资料获…...

星闪空口技术初探
星闪技术设计目标 在星闪技术的应用场景中,最低的时延要求达到了20us量级,比如智能座舱的主动降噪。最高的可靠性要求达到了99.9999%,比如智能制造的传感器与执行器的消息收发。除了低时延和高可靠之外,高精度同步、多并发和信息…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...