热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用分布式数据库“你配吗”

最近在某个“群”,经常看到吐槽某分布式数据库的“流言蜚语”,主要提到一些问题,如系统

最近在某个“群”, 经常看到吐槽某分布式数据库的“流言蜚语”,主要提到一些问题, 如系统不稳定,系统运行缓慢,等一些问题,细究大部分问题不在分布式数据库,而在于本身使用者不具备使用分布式数据库的最基本的“能力”。 

现在大部分企业都在搞虚拟机,系统上云的工作,认为所有的设备应用都建立在虚拟的主机上,很方便也很便于管理. 尤其单体的数据库产品,部署在虚拟机上的不少,并且也大多工作的状态还可以. 

分布式数据库尽量不要使用虚拟机, 大白话的意思就是分布式数据库, 如  TIDB , OCEANBASE, 等分布式数据库都不应该部署在虚拟机上. 

我们以OB 为例, 这是官方OB推荐的最小安装 (最小安装是不能应用到实际的生产环境的)

相关阿里推荐使用的机器配置如下 

上面是TIDB的最小硬件主机数量配置. 从上面主流的两个分布式数据库重量级选手的推荐配置(也是最低的配置),看出每个分布式数据库都是需要强有力的硬件设备支持的。

这里就会产生一个疑问, 为什么主流的分布式的系统要求的硬件都如此的"高深莫测".  很多企业还在为一台虚拟的数据库主机是32GB 还是 64GB的内存纠结, 而分布式数据库产品的硬件要求让这样的企业感到 "臣妾做不到".

是数据库企业虚张声势,因为本身产品的能力不足用硬件来凑, 还是本身分布式数据库就需要大量的硬件作为保证数据库整体运行最正常的基础工作.

从分布式数据库设计的初衷来进行 "寻根溯源", 无论是 OB, TIDB, 本身分布式数据库要解决的核心问题是, 巨量数据的存储, 以及高并发的数据访问. 这是分布式数据库系统的核心需求. 

基于这样的核心需求, 虚拟机本身就不应该是承载分布式数据库的主体, 虚拟机本身对下层硬件资源消耗以及在操作系统层 和 数据库系统本身之下多加了一层 "消耗".  分布式数据库本身设计的目的就是要用尽所采用的硬件资源, 在高并发和使用硬件资源时,不需要被限制.

分布式数据库在本身的设计初衷是为大数据量拆分,将不同的数据存储在不同的数据节点,同时将性能在多节点之间进行均分, 将分布式数据库架设在虚拟机上是违反分布式数据库设计的初衷,人为的制造新的性能瓶颈点和不稳定的因素.  当然这里的不稳定和性能瓶颈点都和“解耦” 有关, 分布式数据库本身是要解耦,使用虚拟主机完全达不到解耦的根本需求。

另外一点, 分布式数据库对于网络的稳定性以及网络的带宽的要求,万兆网是必须的配置. 基本上没有分布式数据库的厂商不要求千兆和万兆网络,以及网络的稳定性,有人说不就是网络吗, 有那么重要吗?

呵呵, 我们举一个例子, 单机的情况下,你的信息是从你的应用端发送到数据库端进行信息交互.  而分布式数据库是有多个组件组成,并且在每个组件的布置需要分离部署, 每个组件之间信息是要求频繁进行通讯的.

以TIDB 为例, PD 和 TIKV  , TIDB 一定是分开部署的, 那如果你的网络不稳定或者或者带宽不够,TIDB 与TIKV 交互时信息频繁丢失(网络丢包), 很难想象你 TIDB 还能稳定运行, 一个分布式数据库系统的运行良好, 最基础的是由你的硬件资源和配置决定的, 所以分布式数据库部署硬件就是你的第一个门槛.

从分布式数据库的设计中是包含两段式提交的, 两阶段提交中,网络频繁丢包,或由于带宽的原因,造成数据传输拥塞, 分布式数据库会频繁的触发纠错机制,极端情况下会造成数据丢失和错误。

下面这张图中,在2PC 提交中在 5 号步骤中出现网络数据丢包,或者某一个节点,在事务提交时失效, 会造成整体每个节点的事务会回滚,事务执行失败,网络的稳定与可靠对于分布式数据库是另一道保证系统稳定运行的门槛。

对于一个分布式数据库的部署切记有几点要满足

1  硬件资源充足, 不要使用虚拟机作为分布式数据库的承载端,避免在部署阶段就已经在给后面使用埋坑,导致后期系统不稳定。附加在分布式数据库系统下的系统层尽量要少。

2  网络的资源与稳定性要高, 分布式数据库对网络的依赖程度要高于单体数据库产品, 网络的带宽和稳定性一定要高, 出现网络不稳定,或网络长时间不联通后,对分布式数据库系统是毁灭性的打击. 

在使用分布式数据库时的门槛,比单体数据库要高,无论从硬件资源,网络资源,以及使用人员对分布式数据库的理解,都是需要“门槛” 的,千万别把单机的经验直接搬到。使用类似 OB , TIDB 这样的数据库先看看自己的“斤两”,在去决定分布式数据库是否适合你,当然首先是观念要更新。



推荐阅读
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 如果你对项目管理和系统架构感兴趣,欢迎关注微信订阅号“softjg”,加入我们这个PM和架构师的大家庭。本文将探讨编写高质量软件架构文档的重要性及其优势。良好的架构文档不仅能够促进不同利益相关者之间的沟通与理解,还能为项目的长期维护和扩展提供坚实的基础。通过详细记录系统的设计决策和关键组件,架构文档能够确保团队成员在项目周期内保持一致性和高效协作。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 数据结构与算法:HyperLogLog 统计、布隆过滤器应用、缓存机制挑战及解决方案、Redis 性能优化与监控、哨兵模式、版本控制工具 Git
    本文探讨了数据结构与算法在实际应用中的多个方面。首先介绍了HyperLogLog算法,用于高效地进行基数统计,能够准确估算大规模数据集中的唯一元素数量。接着讨论了布隆过滤器的应用,该过滤器在空间效率和查询速度上具有显著优势,适用于大数据场景下的快速成员检测。此外,文章分析了缓存机制面临的挑战及其解决方案,包括LRU和LFU等策略,并详细阐述了Redis的性能优化与监控方法,如使用哨兵模式实现高可用性。最后,介绍了版本控制工具Git的基本操作和最佳实践,帮助开发者有效管理代码版本。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • 深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析
    深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析 ... [详细]
  • ActiveMQ是由Apache开发的一款广受欢迎且功能强大的开源消息中间件。作为完全符合JMS 1.1和J2EE 1.4规范的JMS Provider实现,尽管JMS规范已问世多年,但ActiveMQ依然保持了其在消息队列领域的领先地位。本文将带你初步了解ActiveMQ的核心概念及其应用场景,帮助你快速入门这一重要的消息传递技术。 ... [详细]
author-avatar
572370080_8f9421
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有