PolarDB无感切换特性助力游戏领域高可用实践

news2024/11/25 22:30:40

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

文章目录

  • 零:前言
  • 特性一:PolarDB无感切换丝滑体验
    • 1.1、数据库高可用演进
    • 1.2、无感切换核心技术
      • 全新的高可用系统VDS
      • 全局预热系统
      • 保持连接
      • 事务保持
      • 核心技术的优势
    • 1.3、适用场景
      • 游戏行业的痛点
      • 对应的解决方案
      • 实战演练
    • 1.4、丝滑体验
  • 特性二:PolarDB透明分布式无损应用最佳实践
    • 2.1、PolarDB(PolarDB-X)透明分布式发展史
    • 2.2、产品特点
      • 云原生+MySQL生态
      • 存储计算分离架构
      • 透明分布式体验
    • 2.3、适用场景
      • 高负载低延时交易
      • 大峰谷差流量
      • 分布式快速改造
      • 数据库国产化替换
      • 混合负载访问
      • 实战演练
    • 2.4、丝滑体验
  • 三、总结:

零:前言

最近虚竹哥受阿里云邀请,坐客飞天技术沙龙,跟大家直播分享了体验PolarDB的新特性的过程和感受。整理下干货内容,分享给粉丝们,大家一起学习进步。

特性一:PolarDB无感切换丝滑体验

1.1、数据库高可用演进

在这里插入图片描述

我们先了解下数据库高可用的演进之路,传统主备模式、共享存储高可用和 PolarDB 云原生高可用都是数据库高可用性解决方案的演进过程。传统主备模式虽然在实现数据备份和恢复方面表现稳定,但面对业务规模扩张时容易面临扩展性和效率问题。随着分布式系统技术的发展,共享存储高可用性成为一种更灵活的解决方案,通过分布式架构和数据分片技术,实现了数据的高可用性和可扩展性。然而,这种方案仍需关注数据一致性和故障转移等方面的问题。

PolarDB 云原生高可用性方案则是基于云原生技术的进一步演进,通过无DDL影响、事务续传等方式,实现了非一体化高可用性。这种方案具有更高的可靠性和可扩展性,同时简化了数据迁移和备份等操作,降低了运维成本。对于架构选择来说,选择合适的高可用性方案需要根据业务需求和技术环境进行综合考虑,同时需要关注方案的可靠性和可扩展性,以及数据一致性和故障转移等方面的技术细节。

1.2、无感切换核心技术

接下来我们一起深入了解无感切换核心技术:vds的高可用系统,全局预热系统,还有连接保持和事务保持是怎么实现的。

全新的高可用系统VDS

在这里插入图片描述

我对这种数据库高可用性方案很认同。它将PolarDB的共享存储架构与VDS的节点管理机制完美结合,实现了集群的自治管理、故障检测和选主功能。这一设计前瞻地考虑了数据丢失风险,并赋予系统自动故障检测与恢复的能力,大大提高了系统的可用性和自愈能力。

每个计算节点配备独立的VDS线程,并承担不同角色,如Leader、Follower和Observer。这种角色划分与协作确保了数据操作的一致性和正确性。特别是在并发环境中,CAS操作这一同步原语确保了数据的完整性和一致性,展示了技术的严谨与高要求。

VDS在PolarDB的共享存储上维护了CAS Block和PCR两大关键数据模块。CAS Block为原子数据块,支持CAS操作,有效解决数据竞争问题;PCR则负责维护集群的拓扑状态,使VDS能实时监测集群状态并迅速应对故障,凸显对数据安全与系统稳定性的高度重视。

这种创新架构设计构建了一个高效、可靠的数据库集群系统,满足各种复杂应用场景的需求。它确保数据的完整性和一致性,为企业关键业务提供坚实的数据支撑。这种解决方案展现了技术的先进性,更体现了对业务连续性和数据价值的深度理解与承诺。

全局预热系统

在这里插入图片描述

PolarDB通过将主节点的元信息和关键数据实时同步给热备节点,并提前加载进内存,实现了全局预热系统。这一创新设计确保了在主节点故障时,热备节点能够快速、准确地接管主节点的职责,最大程度地减少服务中断时间,提高系统的可用性和可靠性。

全局预热系统的四个模块协同工作,使得数据库集群在面临主节点故障时能够快速完成热备切换。Buffer Pool模块实时监控主节点的内存使用情况,并将相关信息发送给热备节点,确保热备节点能够进行有针对性的预热操作。Undo预热模块针对事务系统进行预热,通过监控主节点的Undo日志,将相关事务信息提前加载到热备节点,确保在升主切换过程中事务的正确处理。Redo预热模块负责将Redo日志实时缓存在内存的Redo Hash中,确保在升主切换过程中能够快速找到并应用必要的Redo日志,保持数据的一致性。如果数据库集群开启了Binlog功能,Binlog预热模块将发挥作用,确保相关Binlog信息被正确加载和处理。

这种全局预热机制不仅简化了数据库管理员的运维工作,更为企业的关键应用提供了强有力的支持。它确保了业务的连续性,使得企业能够更加专注于核心业务的创新与发展。

保持连接

在这里插入图片描述

在进行主备切换或热升级操作时,确实会面临连接中断、新建连接失败以及存量事务回滚等问题,这些问题不仅增加了开发的复杂性,还带来了额外的风险。为了解决这些问题并提升数据库的高可用性,PolarDB提供了一系列功能,其中连接保持功能是其中一项重要特性。

通过数据库代理,PolarDB能够在主备切换时将新后端连接桥接到原有的前端连接,从而保持会话状态。这意味着系统变量、用户变量和字符集编码等会话信息得以保留,避免了因切换操作导致的应用中断或状态丢失。这一功能在保持连接的持续性方面发挥了重要作用,确保了系统的稳定性和可用性。

PolarDB新推出了“事务保持”功能。这一功能与连接保持相结合,能够在主备切换时确保事务的连续性和一致性,从而实现真正意义上的无感知高可用切换。下面我们来了解一下事务保持。

事务保持

在这里插入图片描述

PolarDB采用了基于物理复制的架构,这一设计在数据库领域并不常见。物理复制方式的优势在于它能够在热备节点上重建与主节点完全一致的事务,确保数据一致性和完整性。这种复制方式比传统的基于Binlog的逻辑复制更高效和准确,为数据库的高可用性提供有力支持。

为了增强数据库的可用性,PolarDB还引入了事务保持功能。这一功能确保事务的连续性和一致性,不受主备切换影响。当应用程序执行begin-insert-update-commit事务时,PolarProxy会缓存相关SQL语句并保存最近语句的Savepoint。一旦获取到这些信息,事务信息会同步到热备节点。

如果主节点在UPDATE过程中发生故障,PolarProxy会挂起该请求并立即启动热备切换流程。新主节点会重建未提交的事务并异步等待提交。一旦切换成功,PolarProxy会桥接事务状态,确保会话和事务信息在新主节点上的连续性。这一过程对应用几乎透明,用户只会感知到操作执行时间略有延长。

核心技术的优势

这几个核心技术完美结合PolarDB的共享存储架构和VDS的节点管理机制,实现故障检测和选主功能,前瞻性地考虑了数据丢失风险。每个计算节点配备独立的VDS线程,承担不同角色,确保数据操作的一致性和正确性。
VDS在PolarDB的共享存储上维护CAS Block和PCR两大关键数据模块,有效解决数据竞争问题,并维护集群的拓扑状态,及时应对故障。这种创新架构设计构建了一个高效、可靠的数据库集群系统,满足各种复杂应用场景的需求。

全局预热系统通过实时同步主节点的元信息和关键数据给热备节点,实现快速、准确的热备切换。这一设计简化了数据库管理员的运维工作,确保业务的连续性。

保持连接和事务保持功能在主备切换时保持会话状态和事务的连续性,确保系统的稳定性和可用性。

接下来进一步扩展无感切换核心技术的适用场景。

1.3、适用场景

游戏行业的痛点

  • 开新服、合服等场景:需要实现快速弹性扩容;
  • 备份恢复:在发布版本时,有可能出现发布失败的情况,导致整个实例需要回滚到之前的版本;
  • 游戏版本发布、服务端重启场景:需要缩短维护时间,快速重启;
  • 跨region 容灾需要:随着游戏行业不断拓展海外市场,用户需要在不同地区建立新的实例。当遇到地区异常情况时,如何进行有效的切换是关键问题;

对应的解决方案

  • 弹性扩容:PolarDB集群采用存储计算分离架构,包含1个主节点和N个只读节点。只读节点可快速增减,适用于新服和合服时的快速弹性扩容需求。
  • 备份恢复:PolarDB采用计存分离架构,利用底层分布式存储的快照能力,实现不超过30秒的快速备份。核心思路是Redirect-on-Write机制,通过创建快照索引而非实际复制数据,仅在数据块修改时保留历史版本并生成新数据块,实现高效备份。
  • 游戏版本发布、服务端重启场景:采用三副本一致性存储技术,确保数据可靠性。具备热备切换核心技术:结合高可用系统VDS、全局预热系统和连接保持、事务保持等技术,在主实例故障时,系统能迅速完成无感秒切,确保在线业务快速恢复并提供正常服务。
  • 跨region 容灾需要:用户依靠云原子能力组合实现容灾需求。为了应对这一场景,PolarDB推出了PolarDB GlobalDatabase解决方案,将跨地域的容灾纳入其中,为用户提供更加简便的解决方案。用户可以专注于自己的业务逻辑,而不必处理容灾相关的问题。PolarDB依靠多通道物理复制能力,确保容灾时间在1秒内完成。

实战演练

业务挑战:
游戏业务快速出海,需要支撑全球化业务的统一部署;
在活动峰值时需要支撑100万级玩家同时在线的高并发压力;
用户存量近亿;
游戏运维发布、游戏服务端软硬件故障导致服务端重启,需要数据库支撑更快的数据读取能力,以实现业务的快速恢复;
不仅要为用户提供流畅的游戏体验,还要提供账号服务、充值服务、历史战绩查询服务等;

解决方案:
在这里插入图片描述

前端多个ECS实例作为各个服务器的入口,接入到后端的PolarDB集群。在开新服、合服时可以增加最多15个只读节点,用来减少主节点压力。PolarDB同时能提供账号服务、充值服务、历史战绩查询服务等。

1.4、丝滑体验

体验传送门:–》
免费在线体验PolarDB MySQL版热备无感秒切的效果
体验环境:
在这里插入图片描述

单击页面下方创建任务按钮,并在弹出框中单击确定开始创建Sysbench压测任务。

在这里插入图片描述

单击查看详情,进入实时压测情况页面。
在这里插入图片描述
在这里插入图片描述

实验结论:
开启了无感秒切的PolarDB集群的TPS没有直接跌零,最低还有176TPS;
只是出现了短暂的下降,4秒后就恢复了正常水平。
而普通切换的PolarDB集群的TPS直接跌零,并持续了近25秒才恢复正常水平。

特性二:PolarDB透明分布式无损应用最佳实践

2.1、PolarDB(PolarDB-X)透明分布式发展史

在这里插入图片描述

PolarDB-X的发展历程是一条不断进步与创新的轨迹。从2009年开始,PolarDB-X经历了多个重要阶段,逐渐发展成为一款高性能、分布式的数据库产品。

在2016年,PolarDB-X 1.0版本正式发布,这款产品以其卓越的性能和分布式能力,为众多企业提供了强大的数据存储和处理支持。随后的2019年,PolarDB-X迎来了2.0版本,该版本在性能、体验和生态方面进行了全面升级。其中,“x”取音“extreme”,寓意着极致的性能和体验,同时通过透明分布式系列能力大幅提升了业务分布式改造效率。

到了2021年,PolarDB-X已经承担了我国大批国计民生工程,用户遍布全球15个国家和地区。这一年的“双十一”峰值交易达到了544,000笔/秒,标志着PolarDB-X在处理大规模并发交易方面取得了质的飞跃。同年,PolarDB-X的线性无感分布式扩展能力也帮助业务实现了TDDL Distribute Relational Database Service的连续性提升。

2.2、产品特点

云原生+MySQL生态

PolarDB-X的云原生+MySQL生态很不错,凭借卓越的性能、灵活性和自动化操作,为用户节省了时间和精力,降低了成本。兼容MySQL生态则为用户提供了更大的灵活性,让他们能够轻松扩展和升级数据库系统。这种全方位的兼容性不仅简化了迁移过程,还为应用提供了无缝的集成体验。

存储计算分离架构

以云数据库的扩展能力为基础,通过创新的架构设计,实现了存储与计算的分离。这种分层规划方式为用户提供了更大的灵活性,使得数据库管理更加高效和智能。同时,PolarDB-X结合CBO优化器,确保了在处理大规模数据时的性能和稳定性。

透明分布式体验

  • 默认主键拆分:让移植到PolarDB-X的数据和业务摆脱对设计“分区键”的依赖;
  • 高性能强一致分布式事务:PolarDB-X采用自研X-Paxos协议,保证数据存储在故障切换过程中RPO=0的基础上,使用TSO策略和分布式的MVCC能力保证了分布式事务的隔离性和一致性。
  • 分布式线性扩展:PolarDB-X基于一致性Hash的分区策略,有效的进行负载均衡和热点抑制,且在扩展过程中保持计算下推和数据一致性的同时实现业务零感知,并行和流控能力为扩展期间业务连续性提供了有力保障。
  • 跨region 容灾需要:分别解决分布式数据库各节点数据库向下游流转的难题及各节点备份时间差造成的恢复一致性问题。

2.3、适用场景

高负载低延时交易

PolarDB-X采用自研多数派共识协议X-Paxos,确保三副本强一致性,RPO=0。基于全局时钟TSO和分布式MVCC多版本,确保事务一致性。已通过信通院评测,连续12年支撑“双十一”,稳定且高性能。

大峰谷差流量

PolarDB-X具备分布式线性扩展机制,确保计算下推和数据一致性,业务零感知。结合流量控制,提升扩展稳定性。提供历史数据清理和归档,有效控制存储成本。

分布式快速改造

PolarDB-X推出"透明分布式"能力,简化分布式改造,保留单机MySQL体验,大幅缩短改造周期,保留技术栈。具备从单机到分布式的平滑演进能力,支持DDL动态调整为分布式分区表,结合分布式事务和数据回流,实现快速改造。

数据库国产化替换

PolarDB-X是阿里云自研的云原生分布式数据库,具备国产化、自主可控能力。支持公有云、专有云、DBStack和软件版多种部署形态。已帮助百余家企业完成商业数据库替换和分布式改造,提供培训与架构咨询。

混合负载访问

PolarDB-X基于并行计算和扩展能力,实时报表分析在线数据。智能读写分离和只读副本保障OLTP和OLAP隔离,统一入口自动选择查询引擎。一份数据完成两种访问,免ETL成本和延时。

实战演练

支付业务挑战:
支付业务数据量大,并发高,已有RDS MySQL实例无法满足性能及扩展需求。
交易、订单表数据量巨大,单表数据量10亿级,需要拆库拆表以缓解数据库压力。
历史存量数据存在RDS MySQL之上,希望迁移后的分布式数据库语法兼容MySQL,迁移成本低。
解决方案:
在这里插入图片描述

采用两个PolarDB-X实例,每个PolarDB-X实例挂载4个RDS MySQL。
通过PolarDB-X分库分表,将数据库水平拆分有效解决了支付订单的存储瓶颈及高并发压力。
使用PolarDB-X升配及平滑扩容满足了业务高速发展过程中PolarDB-X数据库平滑扩展的诉求。

2.4、丝滑体验

体验传送门:–》
免费在线快捷体验PolarDB-X的透明分布式能力
在这里插入图片描述

单击页面下方创建任务按钮。
稍等片刻后,可以看到创建的体验任务已开始
在这里插入图片描述

切换到PolarDB-X主库mydb:use mydb;
查看sbtest1的建表语句。show create table sbtest1;
结果如图所示;
查看表在存储节点的分布情况:show storage;
在这里插入图片描述

查看表的分布:show topology from sbtest1;
在这里插入图片描述

查看压测表数据分布:
根据给定的建表语句,sbtest1没有明确的分区定义。但从它的数据分布情况看,PolarDB-X会自动选择主键作为分区键,并据此对表及其索引进行水平分区。
在这里插入图片描述

将分区方式变更为k列:alter table sbtest1 partition by hash(k) partitions 8;
查看表的分布:show topology from sbtest1;
在这里插入图片描述

再次查看压测表数据分布
可以看到,压测数据发生了重分布。
在这里插入图片描述

在整个过程中可以观测左侧实例的TPS性能变化情况。
在这里插入图片描述

连接从库,看是否有表test_11,结果上是没有

在主库创建test_11表
增加列test_column
主库插入数据
在这里插入图片描述

可以看到主库中创建表、新增列以及插入数据都已自动同步至从库
在这里插入图片描述

主库节点删除test_11表
在这里插入图片描述

库中删除表的语句也已自动同步至从库
在这里插入图片描述
在这里插入图片描述

结果分析:
我很喜欢PolarDB-X的自动分区功能。它通过默认使用主键进行拆分,大大简化了迁移到分布式环境的复杂过程,使得数据和业务无需考虑分区键的设计,实现了从单机MySQL到分布式环境的无缝升级。这种设计为用户带来了极大的便利性,降低了迁移的难度和成本。
PolarDB-X还支持用户自定义分区键进行拆分,这无疑提高了系统的整体性能。用户可以根据实际需求选择合适的分区键,进一步优化数据库的性能和查询效率。
PolarDB-X在数据回流和数据一致性方面也表现出色。作为事务型分布式数据库,它能够应对高并发写入,并确保数据同步至下游系统。下游业务对事务日志的要求非常严格,需要保证事务顺序、原子性和DDL同步。PolarDB-X通过实时同步数据至下游MySQL,实现了数据的一致性,满足了下游业务的严格要求。

三、总结:

在本文中,虚竹哥带大家深入了解了PolarDB的两个关键特性:无感切换和透明分布式能力。通过内容的介绍,得以一窥PolarDB在实际应用中的表现和优势。

PolarDB的无感切换特性为数据库的高可用性提供了强有力的保障。这一特性主要依赖于全新的高可用系统VDS和全局预热系统。在游戏行业中,这一特性尤为重要,因为它能够解决开新服、合服等场景下的高并发压力和数据读取需求。通过与云原子的结合,用户可以轻松实现跨region的容灾需求。在实战演练中,我们看到了PolarDB在面对业务挑战时的强大表现,证明了其在高并发压力下的稳定性和快速恢复能力。

PolarDB的透明分布式能力为用户提供了最佳的应用实践。这一能力基于创新的存储计算分离架构,为用户提供了默认主键拆分、高性能强一致分布式事务和分布式线性扩展等功能。这使得PolarDB能够应对高负载低延时交易、大峰谷差流量、分布式快速改造以及数据库国产化替换等场景。在实战演练中,我们看到了PolarDB在支付业务中的成功应用,通过分库分表解决了存储瓶颈和高并发压力,满足了业务的高速发展和扩展需求。

PolarDB凭借其无感切换和透明分布式能力,为用户提供了一种高效、可靠、经济的数据库解决方案。无论是需要处理大规模数据的应用程序,还是希望降低数据库管理成本的企业,PolarDB都能够满足其需求,成为值得信赖的数据库伙伴。祝PolarDB发展越来越好,带给我们更多惊喜。

我是宠粉的虚竹哥,请继续支持我,哈哈哈~

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

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

相关文章

《WebKit 技术内幕》学习之六(2): CSS解释器和样式布局

2 CSS解释器和规则匹配 在了解了CSS的基本概念之后,下面来理解WebKit如何来解释CSS代码并选择相应的规则。通过介绍WebKit的主要设施帮助理解WebKit的内部工作原理和机制。 2.1 样式的WebKit表示类 在DOM树中,CSS样式可以包含在“style”元素中或者使…

依托物联网、互联网,建立云端大数据管理平台,形成“端+云+大数据”的智慧工地

概述: 智慧工地,是将物联网应用到建筑工地中,从施工现场源头抓起,最大程度的收集人员、安全、环境、材料等关键业务数据,依托物联网、互联网,建立云端大数据管理平台,的业务体系和新的管理模式…

Linux下用树莓派DS18B20温度传感器读取温度并上传至服务端

目录 一、DS18B20温度传感器 二、逻辑分析 三、实战操作 1、服务端 2、客户端 3、运行结果 一、DS18B20温度传感器 DS18B20是比较常用到的温度传感器,采用单总线控制。是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。关于该温度传感…

Leetcode刷题笔记题解(C++):LCR 153. 二叉树中和为目标值的路径

思路:利用回溯的思想,回溯的退出条件为当前节点为空,是符合路径的判断条件为路径和为目标值且叶子节点包含了,代码如下: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *…

Elasticsearch 常用信息

简述 本文针对 Elasticsearch(简称ES)集群6.x版本出现故障时,可通过提供的命令进行排查。 1、集群健康状态 集群健康状态状态说明red不是所有的主要分片都可用。表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失…

Vue2:全局事件总线

一、场景描述 之前我们学习了,通过props实现父子组件之间的通信。通过自定义组件,实现了子给父传递数据。 那么,兄弟关系的组件,如何通信了?任意组件间如何通信了? 这个时候,就要学习全局事件总…

测试工程师必看!测试用例设计全解析,让你彻底掌握

测试工程师在入行时,都会接触到一个名词——测试用例,都知道测试用例是干什么用的,提到设计测试用例的方法,大部分测试工程师都会侃侃而谈:等价类法、边界值法、判定表法、正交分解法……这些方法说起来都如数家珍&…

8-Python 工匠:使用装饰器的技巧

Python 工匠:使用装饰器的技巧 前言 这是 “Python 工匠”系列的第 8 篇文章。[查看系列所有文章] 装饰器 (Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 符号的神奇帽子&#x…

仰暮计划|“说是操场,那就是个土坡,我们在那儿上边种种树啊,拔拔草,有的时候还会有同学来喂喂羊啥的,这都是我们的娱乐”

我是1948年农历二月份在河南省许昌市五女店镇的一个乡村里边出生的。从我记事的时候,中华人民共和国就已经成立了。当时是好多年,经历了三大改造呀、生产队呀、大队呀,乱七八糟的很多,估计你们现在这些孩子们啊,都没有…

浪花 - 更新队伍信息

一、接口设计 1. 请求路径:/team/update 2. 请求参数:TeamUpdateRequest 有些数据不允许修改,封装一个请求类,只存放允许修改的参数列表 package com.example.usercenter.model.request;import lombok.Data;import java.io.Se…

9款最新文生图模型汇总!含华为、谷歌、Stability AI等大厂创新模型(附论文和代码)

2023年真是文生图大放异彩的一年,给数字艺术界和创意圈注入了新鲜血液。从起初的基础图像创作跃进到现在的超逼真效果,这些先进的模型彻底变革了我们制作和享受数字作品的途径。 最近,一些大公司比如华为、谷歌、还有Stability AI等人工智能巨…

软件工程实验报告(完整)

博主介绍:✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦! 🍅附上相关C语言版源码讲解🍅 &#x1f44…

c语言编译链接

目录 目录 前言 一.c语言的编译链接 1.翻译环境 编译阶段可以分为预处理,编译,汇编三个阶段 预处理阶段 编译阶段 词法分析 语法分析 语义分析 汇编阶段 链接阶段 2.运行环境 二.预处理详解 #define定义常量 #define定义宏 宏和函数的对比 #和##运算符…

ETL概念

ETL ETLELT 技术原理ETL 模式应用场景常见工具ETL未来发展方向 ETL 在BI项目中ETL会花掉整个项目至少1/3的时间, ETL设计的好坏直接关接到BI项目的成败。ETL(Extract-Transform-Load) : 用来描述将数据从来源端经过抽取(extract)、转换&…

VS2019配置Reshaper

参考VisualStudio神级插件。一JetBrains Resharpera2023.3.2学习版 拉到下面下载主程序,下载就点下一步就好了 然后不要打开VS2019,再按上面的地址下载学习补丁,下载好如图: 查看ReadMe 我们已经装好Reshaper了,然后点…

gmpy2与一些python库在vscode下没有自动补全的一种缓解方案

经过一定的研究,该问题的原因初步判断是gmpy2这个库天生没有把补全的函数doc说明附在pip包中。且因gmpy2是由C编译而来,以dll或so的形式作为动态链接库给python调用,这意味着无法从源码薅到可用的源码注释。 接下来先讲解决方案,再…

el-table样式错乱解决方案

bug: 图片的椭圆框住的地方,在页面放大缩小之后就对不齐了。 原因: 主要原因是当你对页面放大缩小的时候,页面进行了重构,页面的宽高及样式进行了变化,但是在这个更新的过程中,table的反应并没…

Python爬虫之协程

Python爬虫之协程 为什么要用协程 协程声明 await aiohttp aiofiles 案例修改 案例完整代码 为什么要用协程 轻量级:协程是轻量级的执行单元,可以在同一个线程中并发执行。相比于多线程或多进程,创建和切换协程的开销更小。高效利用资源&…

78.网游逆向分析与插件开发-背包的获取-背包类的C++还原与获取物品名称

内容参考于:易道云信息技术研究院VIP课 上一个内容:77.网游逆向分析与插件开发-背包的获取-物品类的C还原-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&…

影响ETL数据传输性能的9大因素及主流ETL应对策略

前言 现在很多企业在选择ETL工具时都特别关注ETL的数据传输性能,而有很多开源ETL工具都说自已是性能如何如何快,而事实上数据传输性能是不是这些工具说的那样快呢? 数据传输性能受制于哪些因素呢?企业在自身数据库性能受制的情况…