腾讯云微服务平台 TSF 异地多活单元化能力重磅升级

news2024/11/26 5:43:56

导语

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异地多活单元化能力升级只是产品发展的一小步,微服务团队希望未来能把产品打磨的更好,满足客户更多的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1023804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode热题100】--48.找到字符串中所有字母异位词

48.找到字符串中所有字母异位词 使用滑动窗口: 由于字符串p的异位词的长度一定与字符串p的长度相同,所以我们可以在字符串s中构造一个长度为字符串p的长度相同的滑动窗口,并在滑动中维护窗口中每种字母的数量;当窗口中每种字母的数…

编译原理 —— 编译器

文章目录 编译原理阶段词法分析器语法分析器语义分析器中间代码生成器代码优化器代码生成器 编译原理阶段 编译器分为9个阶段来将我们所编写的高级代码编译为计算机可执行的机器码 源程序词法分析器语法分析器语义分析器中间代码生成器独立于机器的代码优化器代码生成器依赖于…

activiti流程变量

activiti流程变量 定义 流程变量在Activiti 中是一个十分重要的角色,流程运转时,需要靠流程变量,业务系统和activiti 结合时少不了流程变量,流程变量就是activiti 在管理工作流时根据管理需要而设置的变量。比如:在出…

JADE盲分离算法仿真

JADE算法原理 JADE 算法首先通过去均值预白化等预处理过程得到解相关的混合信号,预处理后的信号构建的协方差矩阵变为单位阵,为后续的联合对角化奠定基础;其次,通过建立四阶累积量矩阵,利用高阶累积量的统计独立性等性…

React+Node——next.js 构建前后端项目

一、安装全局依赖 npm i -g create-next-app二、创建next项目 create-next-app react-next-demo //或 create-next-app react-next-demo --typescript三、加载mysql依赖 npm i -S mysql2四、运行项目 npm run dev五、创建db文件目录,目录下创建index.ts import…

WebRTC系列--sdp协商中的answer编解码协商过程

关于createAnswer的流程在前面的文章WebRTC系列-SDP之CreateAnswer这篇文章中有详细的分析。 这篇文章主要对于MediaSessionDescriptionFactory的AddAudioContentForAnswer做详细的分析,也就是说对于音频编码的匹配也是在这个方法里实现: 首先主要的函数调用如下图: 这篇文…

怒赞,阿里P8推荐的Java面试宝典:41个专题PDF(史上最全+面试必备)

《尼恩Java面试宝典》 40岁老架构师 尼恩 经过对大量 Java面试题 的不断梳理、迭代, 编著成5000页的《尼恩Java面试宝典》,致力于体系化, 系统化,形象化 梳理,形成一个大的知识体系,从而帮助大家 进大厂&a…

20-SpringCloudAlibaba-1

一 Spring Cloud Alibaba简介 什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 为什么要推出Sp…

Python处理英文文档(添加音标和翻译)

Python处理英文文档(添加音标和翻译) Python处理英文文档单词标注音标英文翻译对word文档的操作方法整合待改进之处 Python处理英文文档 上英语课的时候老师总喜欢找人读文章和翻译文章,一点点的准备太浪费时间,就用Python写了一…

已解决 Python Error: ImportError: No module named ‘module_name‘

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

人声分离网站,帮你快速提取视频中的人声和背景音乐

今天给大家带来一个可以分离人声的网站——音分轨,他运用人工智能算法可以将音频中的人声部分和音乐部分分离,使我们的视频制作过程可以更方便。 我们点击右下角“选择文件”上传一个音频,上传好音频后,人工智能就开始处理我们上传…

同步 -- 信号量

本篇文章基于Linux-6.5源码 建议:搭配Linux源码观看更佳 struct semaphore {raw_spinlock_t lock; // 保护信号量的自旋锁unsigned int count; // 最大同时可访问临界区的进程数量struct list_head wait_list; // 等待队列,wait_list指…

linux 磁盘命令之du和df命令

du相关的命令: du -ah 显示所有目录或文件所占空间 du -KG 显示所有目录或文件所占空间 块大小K为单位 du -BM 显示所有目录或文件所占空间 块大小M为单位 du -BG 显示所有目录或文件所占空间 块大小G为单位du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文…

5.2 磁盘CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法,校验算法可以通过计算应用与数据的循环冗余校验(CRC)检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测,…

Java“牵手”天猫商品列表页数据采集+天猫商品价格数据排序,天猫API接口申请指南

天猫开放平台接口获取商品列表和详情数据,具体步骤如下: 在开放平台注册并创建一个应用,获取到 App Key 和 App Secret等信息。使用获取到的信息进行签名和认证,获取 Access Token。调用开放平台提供的接口,传入商品 …

PM3398B-6P-1–3P-E 借助物联网和人工智能解决方案

PM3398B-6P-1–3P-E 借助物联网和人工智能解决方案 油砂中的卡车发动机捕获大量数据,如振动、温度、压力和吞吐量等参数。但是这些数据大部分都没有被使用。借助物联网和人工智能解决方案,您可以轻松利用这些数据获得有用的见解。这些见解有助于您提高发…

1.wifi开发,wifi连接初次连接电脑没有识别,搭建环境

wifi连接初次连接电脑没有识别 1.不识别可能是线的问题,即使wifi的灯亮了,虽然串口却没有找到。所以解决方法就是重新来一个usb的线 一。初步使用 (1)使用ESP烧写工具(选择esp8266) (2&#xf…

TienChin 渠道管理-添加渠道

在我们平时新建一个全新的 Java 类,这个类需要存放的包不存在,可以使用如下的方式进行创建: 含义就是说,将 ChannelVO 这个类放在 vo 这个包当中,如果存在则不创建,存在就将新建的类放入其中。 ChannelVO /…

2000-2018年各省能源消费和碳排放数据

2000-2018年各省能源消费和碳排放数据 1、时间:2000-2018年 2、范围:30个省市 3、指标:id、year、ENERGY、COAL、碳排放倒数*100 4、来源:能源年鉴 5、指标解释: 2018年碳排放和能源数据为插值法推算得到 碳排放…

SpringBoot接口中如何直接返回图片数据

SpringBoot接口中如何直接返回图片数据 目录 接口直接返回图片数据 起因 类似这种 根据个人经验 优雅的实现图片返回 接口直接返回图片数据 起因 最近在做涉及到分享推广的业务,需要由业务员分享二维码进入推广页面,由于是新项目,前期…