做网站抄代码数据线厂家东莞网站建设

张小明 2026/1/10 1:41:32
做网站抄代码,数据线厂家东莞网站建设,网站建设对电子商务中的作用,wordpress 机主题点击关注公众号#xff0c;Java 干货及时推送↓推荐阅读#xff1a;今年的 Java 后端行情太逆天了。。作者#xff1a;蚊子squirrel来源#xff1a;https://www.jianshu.com/p/9131edd8fd2c最近与同行科技交流#xff0c;经常被问到分库分表与分布式数据库如何选择#x…点击关注公众号Java 干货及时推送↓ 推荐阅读今年的 Java 后端行情太逆天了。。作者蚊子squirrel来源https://www.jianshu.com/p/9131edd8fd2c最近与同行科技交流经常被问到分库分表与分布式数据库如何选择网上也有很多关于中间件传统关系数据库分库分表与NewSQL分布式数据库的文章但有些观点与判断是我觉得是偏激的脱离环境去评价方案好坏其实有失公允。本文通过对两种模式关键特性实现原理对比希望可以尽可能客观、中立的阐明各自真实的优缺点以及适用场景。NewSQL数据库先进在哪儿首先关于“中间件关系数据库分库分表”算不算NewSQL分布式数据库问题国外有篇论文pavlo-newsql-sigmodrec如果根据该文中的分类Spanner、TiDB、OB算是第一种新架构型Sharding-Sphere、Mycat、DRDS等中间件方案算是第二种文中还有第三种云数据库本文暂不详细介绍。基于中间件包括SDK和Proxy两种形式传统关系数据库分库分表模式是不是分布式架构我觉得是的因为存储确实也分布式了也能实现横向扩展。但是不是伪分布式数据库从架构先进性来看这么说也有一定道理。伪主要体现在中间件层与底层DB重复的SQL解析与执行计划生成、存储引擎基于BTree等这在分布式数据库架构中实际上冗余低效的。为了避免引起真伪分布式数据库的口水战本文中NewSQL数据库特指这种新架构NewSQL数据库。NewSQL数据库相比中间件分库分表的先进在哪儿画一个简单的架构对比图传统数据库面向磁盘设计基于内存的存储管理及并发控制不如NewSQL数据库那般高效利用。中间件模式SQL解析、执行计划优化等在中间件与数据库中重复工作效率相比较低NewSQL数据库的分布式事务相比于XA进行了优化性能更高新架构NewSQL数据库存储设计即为基于paxos或Raft协议的多副本相比于传统数据库主从模式半同步转异步后也存在丢数问题在实现了真正的高可用、高可靠RTO30sRPO0NewSQL数据库天生支持数据分片数据的迁移、扩容都是自动化的大大减轻了DBA的工作同时对应用透明无需在SQL指定分库分表键。这些大多也是NewSQL数据库产品主要宣传的点不过这些看起来很美好的功能是否真的如此接下来针对以上几点分别阐述下的我的理解。插播一条如果你近期准备面试跳槽点击Java面试库小程序刷题吧共 3000 道几乎覆盖了所有主流 Java 技术面试题。分布式事务这是把双刃剑。CAP限制想想更早些出现的NoSQL数据库为何不支持分布式事务最新版的mongoDB等也开始支持了是缺乏理论与实践支撑吗并不是原因是CAP定理依然是分布式数据库头上的颈箍咒在保证强一致的同时必然会牺牲可用性A或分区容忍性P。为什么大部分NoSQL不提供分布式事务那么NewSQL数据库突破CAP定理限制了吗并没有。NewSQL数据库的鼻主Google Spanner目前绝大部分分布式数据库都是按照Spanner架构设计的提供了一致性和大于5个9的可用性宣称是一个“实际上是CA”的其真正的含义是系统处于 CA 状态的概率非常高由于网络分区导致的服务停用的概率非常小究其真正原因是其打造私有全球网保证了不会出现网络中断引发的网络分区另外就是其高效的运维队伍,这也是cloud spanner的卖点。详细可见CAP提出者Eric Brewer写的《Spanner, TrueTime 和CAP理论》推荐一篇关于分布式系统有趣的文章站在巨人的分布式肩膀上其中提到分布式系统中您可以知道工作在哪里或者您可以知道工作何时完成但您无法同时了解两者两阶段协议本质上是反可用性协议。完备性两阶段提交协议是否严格支持ACID各种异常场景是不是都可以覆盖2PC在commit阶段发送异常其实跟最大努力一阶段提交类似也会有部分可见问题严格讲一段时间内并不能保证A原子性和C一致性待故障恢复后recovery机制可以保证最终的A和C。完备的分布式事务支持并不是一件简单的事情需要可以应对网络以及各种硬件包括网卡、磁盘、CPU、内存、电源等各类异常通过严格的测试。之前跟某友商交流他们甚至说目前已知的NewSQL在分布式事务支持上都是不完整的他们都有案例跑不过圈内人士这么笃定也说明了分布式事务的支持完整程度其实是层次不齐的。分布式事务的四种解决方案推荐看下。但分布式事务又是这些NewSQL数据库的一个非常重要的底层机制跨资源的DML、DDL等都依赖其实现如果这块的性能、完备性打折扣上层跨分片SQL执行的正确性会受到很大影响。性能传统关系数据库也支持分布式事务XA但为何很少有高并发场景下用呢因为XA的基础两阶段提交协议存在网络开销大阻塞时间长、死锁等问题这也导致了其实际上很少大规模用在基于传统关系数据库的OLTP系统中。NewSQL数据库的分布式事务实现也仍然多基于两阶段提交协议例如google percolator分布式事务模型 采用原子钟MVCC Snapshot IsolationSI这种方式通过TSO(Timestamp Oracle)保证了全局一致性通过MVCC避免了锁另外通过primary lock和secondary lock将提交的一部分转为异步相比XA确实提高了分布式事务的性能。SI是乐观锁在热点数据场景可能会大量的提交失败。另外SI的隔离级别与RR并非完全相同它不会有幻想读但会有写倾斜。但不管如何优化相比于1PC2PC多出来的GID获取、网络开销、prepare日志持久化还是会带来很大的性能损失尤其是跨节点的数量比较多时会更加显著例如在银行场景做个批量扣款一个文件可能上W个账户这样的场景无论怎么做还是吞吐都不会很高。Spanner给出的分布式事务测试数据虽然NewSQL分布式数据库产品都宣传完备支持分布式事务但这并不是说应用可以完全不用关心数据拆分这些数据库的最佳实践中仍然会写到应用的大部分场景尽可能避免分布式事务。既然强一致事务付出的性能代价太大我们可以反思下是否真的需要这种强一致的分布式事务尤其是在做微服务拆分后很多系统也不太可能放在一个统一的数据库中。尝试将一致性要求弱化便是柔性事务放弃ACID(Atomicity,Consistency, Isolation, Durability)转投BASE(Basically Available,Soft state,Eventually consistent)例如Saga、TCC、可靠消息保证最终一致等模型对于大规模高并发OLTP场景我个人更建议使用柔性事务而非强一致的分布式事务。关于柔性事务笔者之前也写过一个技术组件最近几年也涌现出了一些新的模型与框架例如阿里刚开源的Fescar限于篇幅不再赘述有空再单独写篇文章。解决分布式事务是否只能用两阶段提交协议oceanbase1.0中通过updateserver避免分布式事务的思路很有启发性 不过2.0版后也变成了2PC。业界分布式事务也并非只有两阶段提交这一解也有其它方案its-time-to-move-on-from-two-phase(国内有翻译版https://www.jdon.com/51588)HA与异地多活主从模式并不是最优的方式就算是半同步复制在极端情况下半同步转异步也存在丢数问题目前业界公认更好的方案是基于paxos分布式一致性协议或者其它类paxos如raft方式Google Spanner、TiDB、cockcoachDB、OB都采用了这种方式基于Paxos协议的多副本存储遵循过半写原则支持自动选主解决了数据的高可靠缩短了failover时间提高了可用性特别是减少了运维的工作量这种方案技术上已经很成熟也是NewSQL数据库底层的标配。当然这种方式其实也可以用在传统关系数据库阿里、微信团队等也有将MySQL存储改造支持paxos多副本的MySQL也推出了官方版MySQL Group Cluster预计不远的未来主从模式可能就成为历史了。分布式一致性算法本身并不难但具体在工程实践时需要考虑很多异常并做很多优化实现一个生产级可靠成熟的一致性协议并不容易。例如实际使用时必须转化实现为multi-paxos或multi-raft需要通过batch、异步等方式减少网络、磁盘IO等开销。需要注意的是很多NewSQL数据库厂商宣传基于paxos或raft协议可以实现【异地多活】这个实际上是有前提的那就是异地之间网络延迟不能太高。以银行“两地三中心”为例异地之间多相隔数千里延时达到数十毫秒如果要多活那便需异地副本也参与数据库日志过半确认这样高的延时几乎没有OLTP系统可以接受的。数据库层面做异地多活是个美好的愿景但距离导致的延时目前并没有好的方案。之前跟蚂蚁团队交流蚂蚁异地多活的方案是在应用层通过MQ同步双写交易信息异地DC将交易信息保存在分布式缓存中一旦发生异地切换数据库同步中间件会告之数据延迟时间应用从缓存中读取交易信息将这段时间内涉及到的业务对象例如用户、账户进行黑名单管理等数据同步追上之后再将这些业务对象从黑名单中剔除。由于双写的不是所有数据库操作日志而只是交易信息数据延迟只影响一段时间内数据这是目前我觉得比较靠谱的异地度多活方案。另外有些系统进行了单元化改造这在paxos选主时也要结合考虑进去这也是目前很多NewSQL数据库欠缺的功能。插播一条如果你近期准备面试跳槽点击Java面试库小程序刷题吧共 3000 道几乎覆盖了所有主流 Java 技术面试题。Scale横向扩展与分片机制paxos算法解决了高可用、高可靠问题并没有解决Scale横向扩展的问题所以分片是必须支持的。NewSQL数据库都是天生内置分片机制的而且会根据每个分片的数据负载(磁盘使用率、写入速度等)自动识别热点然后进行分片的分裂、数据迁移、合并这些过程应用是无感知的这省去了DBA的很多运维工作量。以TiDB为例它将数据切成region如果region到64M时数据自动进行迁移。分库分表模式下需要应用设计之初就要明确各表的拆分键、拆分方式range、取模、一致性哈希或者自定义路由表、路由规则、拆分库表数量、扩容方式等。相比NewSQL数据库这种模式给应用带来了很大侵入和复杂度这对大多数系统来说也是一大挑战。分库分表模式也能做到在线扩容基本思路是通过异步复制先追加数据然后设置只读完成路由切换最后放开写操作当然这些需要中间件与数据库端配合一起才能完成。这里有个问题是NewSQL数据库统一的内置分片策略例如tidb基于range可能并不是最高效的因为与领域模型中的划分要素并不一致这导致的后果是很多交易会产生分布式事务。举个例子银行核心业务系统是以客户为维度也就是说客户表、该客户的账户表、流水表在绝大部分场景下是一起写的但如果按照各表主键range进行分片这个交易并不能在一个分片上完成这在高频OLTP系统中会带来性能问题。分布式SQL支持常见的单分片SQL这两者都能很好支持。NewSQL数据库由于定位与目标是一个通用的数据库所以支持的SQL会更完整包括跨分片的join、聚合等复杂SQL。中间件模式多面向应用需求设计不过大部分也支持带拆分键SQL、库表遍历、单库join、聚合、排序、分页等。但对跨库的join以及聚合支持就不够了。NewSQL数据库一般并不支持存储过程、视图、外键等功能而中间件模式底层就是传统关系数据库这些功能如果只是涉及单库是比较容易支持的。NewSQL数据库往往选择兼容MySQL或者PostgreSQL协议所以SQL支持仅局限于这两种中间件例如驱动模式往往只需做简单的SQL解析、计算路由、SQL重写所以可以支持更多种类的数据库SQL。SQL支持的差异主要在于分布式SQL执行计划生成器由于NewSQL数据库具有底层数据的分布、统计信息因此可以做CBO生成的执行计划效率更高而中间件模式下没有这些信息往往只能基于规则RBORule-Based-Opimization这也是为什么中间件模式一般并不支持跨库join因为实现了效率也往往并不高还不如交给应用去做。这里也可以看出中间件分库分表模式的架构风格体现出的是一种妥协、平衡它是一个面向应用型的设计而NewSQL数据库则要求更高、“大包大揽”它是一个通用底层技术软件因此后者的复杂度、技术门槛也高很多。存储引擎传统关系数据库的存储引擎设计都是面向磁盘的大多都基于B树。B树通过降低树的高度减少随机读、进而减少磁盘寻道次数提高读的性能但大量的随机写会导致树的分裂从而带来随机写导致写性能下降。NewSQL的底层存储引擎则多采用LSM相比B树LSM将对磁盘的随机写变成顺序写大大提高了写的性能。不过LSM的的读由于需要合并数据性能比B树差一般来说LSM更适合应在写大于读的场景。当然这只是单纯数据结构角度的对比在数据库实际实现时还会通过SSD、缓冲、bloom filter等方式优化读写性能所以读性能基本不会下降太多。NewSQL数据由于多副本、分布式事务等开销相比单机关系数据库SQL的响应时间并不占优但由于集群的弹性扩展整体QPS提升还是很明显的这也是NewSQL数据库厂商说分布式数据库更看重的是吞吐而不是单笔SQL响应时间的原因。成熟度与生态分布式数据库是个新型通用底层软件准确的衡量与评价需要一个多维度的测试模型需包括发展现状、使用情况、社区生态、监控运维、周边配套工具、功能满足度、DBA人才、SQL兼容性、性能测试、高可用测试、在线扩容、分布式事务、隔离级别、在线DDL等等。虽然NewSQL数据库发展经过了一定时间检验但多集中在互联网以及传统企业非核心交易系统中目前还处于快速迭代、规模使用不断优化完善的阶段。相比而言传统关系数据库则经过了多年的发展通过完整的评测在成熟度、功能、性能、周边生态、风险把控、相关人才积累等多方面都具有明显优势同时对已建系统的兼容性也更好。对于互联网公司数据量的增长压力以及追求新技术的基因会更倾向于尝试NewSQL数据库不用再考虑库表拆分、应用改造、扩容、事务一致性等问题怎么看都是非常吸引人的方案。对于传统企业例如银行这种风险意识较高的行业来说NewSQL数据库则可能在未来一段时间内仍处于探索、审慎试点的阶段。基于中间件分库分表模式架构简单技术门槛更低虽然没有NewSQL数据库功能全面但大部分场景最核心的诉求也就是拆分后SQL的正确路由而此功能中间件模式应对还是绰绰有余的可以说在大多数OLTP场景是够用的。限于篇幅其它特性例如在线DDL、数据迁移、运维工具等特性就不在本文展开对比。总结如果看完以上内容您还不知道选哪种模式那么结合以下几个问题先思考下NewSQL数据库解决的点对于自身是不是真正的痛点强一致事务是否必须在数据库层解决数据的增长速度是否不可预估的扩容的频率是否已超出了自身运维能力相比响应时间更看重吞吐是否必须做到对应用完全透明是否有熟悉NewSQL数据库的DBA团队如果以上有2到3个是肯定的那么你可以考虑用NewSQL数据库了虽然前期可能需要一定的学习成本但它是数据库的发展方向未来收益也会更高尤其是互联网行业随着数据量的突飞猛进分库分表带来的痛苦会与日俱增。当然选择NewSQL数据库你也要做好承担一定风险的准备。如果你还未做出抉择不妨再想想下面几个问题最终一致性是否可以满足实际场景数据未来几年的总量是否可以预估扩容、DDL等操作是否有系统维护窗口对响应时间是否比吞吐更敏感是否需要兼容已有的关系数据库系统是否已有传统数据库DBA人才的积累是否可容忍分库分表对应用的侵入如果这些问题有多数是肯定的那还是分库分表吧。在软件领域很少有完美的解决方案NewSQL数据库也不是数据分布式架构的银弹。相比而言分库分表是一个代价更低、风险更小的方案它最大程度复用传统关系数据库生态通过中间件也可以满足分库分表后的绝大多数功能定制化能力更强。在当前NewSQL数据库还未完全成熟的阶段分库分表可以说是一个上限低但下限高的方案尤其传统行业的核心系统如果你仍然打算把数据库当做一个黑盒产品来用踏踏实实用好分库分表会被认为是个稳妥的选择。很多时候软件选型取决于领域特征以及架构师风格限于笔者知识与所属行业特点所限以上仅为个人粗浅的一些观点欢迎讨论。↓↓↓点下面小程序刷题突击面试↓↓↓推荐阅读1. 我天Java 25 发布了。。炸裂2. Spring Boot 4.0 正式发布王炸3. Spring AI 1.1 正式发布太强了。。4. 突发Spring 宣布弃用 RestTemplate5. 拼夕夕二面Kafka 为什么那么快6. 免费白嫖 Gemini 3 Pro 的 3 种方式7. 各互联网大厂薪资一览表最新版8. 前端已凉测试遇冷全栈彻底称王9. Spring Cloud 微服务实战2025 最新版10. 2026 年跳槽必看的面试题关注公众号学习最主流的 Java 技术↓
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎样做好网站1369免费版街景地图

📋 摘要 本文深度解析华为CANN 8.0异构计算架构的技术革新,以七层软件栈重构为基石,贯穿BiSheng编译器多前端支持、智能算子融合引擎、P-D分离推理架构三大核心技术。核心价值在于:首次系统化揭示如何通过Triton兼容前端将CUDA算子…

张小明 2026/1/9 16:04:58 网站建设

经典网站赏析福州网站怎么做seo

Qwen3-14B技术解析:双模推理架构重塑AI应用效率格局 【免费下载链接】Qwen3-14B-MLX-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-14B-MLX-4bit 阿里巴巴通义千问团队最新发布的Qwen3-14B大语言模型,通过革命性的双模推理架构…

张小明 2026/1/9 19:10:37 网站建设

网站建设的违约责任网站建设装修

深夜11点,某游戏公司的UI设计师小王盯着屏幕上的聊天记录陷入沉思——他半年前为某项目设计的战斗界面UI,如今竟原封不动出现在竞品游戏中。当他尝试联系对方维权时,却被告知"无法证明创作时间在先",连公司内部的设计文…

张小明 2026/1/8 9:10:41 网站建设

网站站欣赏英文版的wordpress能否改中文版

Django基于大数据的健康美食推荐系统是一个结合了大数据技术和Django框架的健康饮食推荐平台。以下是对该系统的详细介绍: 一、系统背景与意义 在现代社会,随着健康意识的提高和人们对个性化健康管理的需求不断增长,基于大数据的健康美食推荐…

张小明 2026/1/9 23:25:48 网站建设

怎么做网站淘宝转换工具潍坊关键词优化服务

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一款基于微信小程序的校园电子请假系统,以提升校园管理效率,优化学生请假流程。具体研究目的如下:提高校…

张小明 2026/1/8 9:06:32 网站建设

云浮罗定哪有做网站的国外有趣的网站

让经典重生:Protel99SE在Win10/Win7上的完美安装实战指南你还记得第一次打开Protel99SE时,那个熟悉的蓝色界面和“File → New Design”弹窗吗?对于很多老电子工程师来说,这不仅是一款软件,更是一段青春的记忆。它轻巧…

张小明 2026/1/8 9:04:30 网站建设