0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

互联网领域常见的数据库架构方案

jf_uPRfTJDa 来源: 移动Labs 2023-08-25 10:39 次阅读

Labs 导读

数据库设计是数据库系统中的重要组成部分。一个良好的数据库可以给系统带来清晰的数据统计与数据的详细分析,同时给后续的开发、拓展和维护带来极大的便捷。本文通过列举出当下互联网领域常见的数据库架构方案,结合数据库架构的设计原则,对各个方案场景初步浅析,帮助大家知晓各方案优劣及适用场景;并结合实践经验,给出各个方案后续典型的演化方向,供大家作为今后数据库架构选型参照。

作者:薛建正

单位:中国移动智慧家庭运营中心智慧互联产品

Part 01数据库架构原则

高可用

高可用指的是数据库应尽可能地使其服务持续可用,以消除或最小化停机时间。这可以通过减少单点故障、故障切换解决方案、数据冗余等方式实现。

高性能

这指的是数据库在查询和数据操作上的处理速度。高性能数据库系统能迅速响应查询请求,甚至在处理大量数据时也能保持高性能。这在互联网场景下尤为重要,因为用户通常期望快速响应。

一致性

在数据库领域,一致性指的是在任何给定时间点,所有的复制数据都必须相同。数据库系统采取多种策略来保证一致性,比如操作的原子性(一个操作要么全部成功,要么全部失败,不会出现部分完成的情况)和事务的隔离性(通过锁和其他并发控制机制来防止多个事务交叉执行产生的数据不一致问题)。

扩展性

扩展性指的是数据库在增加硬件资源(如存储和处理能力)时能有效提升性能的能力。水平扩展(增加更多服务器)和垂直扩展(增强单个服务器能力)是两种常见的扩展策略。一个具有高扩展性的数据库能够应对数据增长和查询量的增长,保证数据库系统的性能和稳定性。

Part 02常见的架构方案

方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用

ae7d6940-4261-11ee-a2ef-92fbcf53809c.png

jdbc//vip:3306/xxdb

1、高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备库。这个过程对业务层是透明的,无需修改代码或配置。

2、高性能分析:读写都操作主库,很容易产生瓶颈。大部分互联网应用读多写少,读会先成为瓶颈,进而影响写性能。另外,备库只是单纯的备份,资源利用率50%,这点方案二可解决。

3、一致性分析:读写都操作主库,不存在数据一致性问题。

4、扩展性分析:无法通过加从库来扩展读性能,进而提高整体性能。

5、可落地分析:两点影响落地使用。第一,性能一般,这点可以通过建立高效的索引和引入缓存来增加读性能,进而提高性能。这也是通用的方案。第二,扩展性差,这点可以通过分库分表来扩展。

方案二:双主架构,两个主库同时提供服务,负载均衡

ae9a6e5a-4261-11ee-a2ef-92fbcf53809c.png

jdbc//vip:3306/xxdb

1、高可用分析:高可用,一个主库挂了,不影响另一台主库提供服务。这个过程对业务层是透明的,无需修改代码或配置。

2、高性能分析:读写性能相比于方案一都得到提升,提升一倍。

3、一致性分析:存在数据一致性问题。一致性解决方案。

4、扩展性分析:当然可以扩展成三主循环,但笔者不建议(会多一层数据同步,这样同步的时间会更长)。如果非得在数据库架构层面扩展的话,扩展为方案四。

5、可落地分析:两点影响落地使用。第一,数据一致性问题,一致性解决方案可解决问题。第二,主键冲突问题,ID统一地由分布式ID生成服务来生成可解决问题。

方案三:主从架构,一主多从,读写分离

aeaea79e-4261-11ee-a2ef-92fbcf53809c.png

jdbc//master-ip:3306/xxdb
jdbc//slave1-ip:3306/xxdb
jdbc//slave2-ip:3306/xxdb

1、高可用分析:主库单点,从库高可用。一旦主库挂了,写服务也就无法提供。

2、高性能分析:大部分互联网应用读多写少,读会先成为瓶颈,进而影响整体性能。读的性能提高了,整体性能也提高了。另外,主库可以不用索引,线上从库和线下从库也可以建立不同的索引(线上从库如果有多个还是要建立相同的索引,不然得不偿失;线下从库是平时开发人员排查线上问题时查的库,可以建更多的索引)。

3、一致性分析:存在数据一致性问题。请看,一致性解决方案。

4、扩展性分析:可以通过加从库来扩展读性能,进而提高整体性能。(带来的问题是,从库越多需要从主库拉取binlog日志的端就越多,进而影响主库的性能,并且数据同步完成的时间也会更长)

5、可落地分析:两点影响落地使用。第一,数据一致性问题,一致性解决方案可解决问题。第二,主库单点问题,笔者暂时没想到很好的解决方案。注:思考一个问题,一台从库挂了会怎样?读写分离之读的负载均衡策略怎么容错?

方案四:双主+主从架构,看似完美的方案

aebcc5f4-4261-11ee-a2ef-92fbcf53809c.png

jdbc//vip:3306/xxdb
jdbc//slave1-ip:3306/xxdb
jdbc//slave2-ip:3306/xxdb

1、高可用分析:高可用。

2、高性能分析:高性能。

3、一致性分析:存在数据一致性问题。请看,一致性解决方案。

4、扩展性分析:可以通过加从库来扩展读性能,进而提高整体性能。(带来的问题同方案二)

5、可落地分析同方案二,但数据同步又多了一层,数据延迟更严重。

Part 03一致性解决方案

第一类:主库和从库一致性解决方案

aedd3546-4261-11ee-a2ef-92fbcf53809c.png

注:图中圈出的是数据同步的地方,数据同步(从库从主库拉取binlog日志,再执行一遍)是需要时间的,这个同步时间内主库和从库的数据会存在不一致的情况。如果同步过程中有读请求,那么读到的就是从库中的老数据。如下图:

af0a9626-4261-11ee-a2ef-92fbcf53809c.png

既然知道了数据不一致性产生的原因,有下面几个解决方案供参考:

1、直接忽略,如果业务允许延时存在,那么就不去管它。

2、强制读主,采用主备架构方案,读写都走主库。用缓存来扩展数据库读性能 。有一点需要知道,如果缓存挂了,可能会产生雪崩现象,不过一般分布式缓存都是高可用的。

af2514b0-4261-11ee-a2ef-92fbcf53809c.png

3、选择读主,写操作时根据库+表+业务特征生成一个key放到Cache里并设置超时时间(大于等于主从数据同步时间)。读请求时,同样的方式生成key先去查Cache,再判断是否命中。若命中,则读主库,否则读从库。代价是多了一次缓存读写,基本可以忽略。

af43ae48-4261-11ee-a2ef-92fbcf53809c.png

4、半同步复制,等主从同步完成,写请求才返回。就是大家常说的“半同步复制”semi-sync。这可以利用数据库原生功能,实现比较简单。代价是写请求时延增长,吞吐量降低。

5、数据库中间件,引入开源(mycat等)或自研的数据库中间层。个人理解,思路同选择读主。数据库中间件的成本比较高,并且还多引入了一层。

af5bbdf8-4261-11ee-a2ef-92fbcf53809c.png

第二类:DB和缓存一致性解决方案

af7b2daa-4261-11ee-a2ef-92fbcf53809c.png

先来看一下常用的缓存使用方式:

第一步:淘汰缓存;

第二步:写入数据库;

第三步:读取缓存?返回:读取数据库;

第四步:读取数据库后写入缓存注:如果按照这种方式,图一,不会产生DB和缓存不一致问题;图二,会产生DB和缓存不一致问题,即4.read先于3.sync执行。如果不做处理,缓存里的数据可能一直是脏数据。解决方式如下:

af9b8ea6-4261-11ee-a2ef-92fbcf53809c.png

注:设置缓存时,一定要加上有效时间,以防延时淘汰缓存失败的情况!

Part 04架构演变方案

架构演变一:方案一 -> 方案一+分库分表 -> 方案二+分库分表 -> 方案四+分库分表;

架构演变二:方案一 -> 方案一+分库分表 -> 方案三+分库分表 -> 方案四+分库分表;

架构演变三:方案一 -> 方案二 -> 方案四 -> 方案四+分库分表;

架构演变四:方案一 -> 方案三 -> 方案四 -> 方案四+分库分表;

Part 05结语

1、加缓存和索引是通用的提升数据库性能的方式。

2、分库分表带来的好处是巨大的,但同样也会带来一些问题,详见前日推文。

3、不管是主备+分库分表还是主从+读写分离+分库分表,都要考虑具体的业务场景。绝大部分的数据库架构还是采用方案一和方案一+分库分表,只有极少部分用方案三+读写分离+分库分表。另外,阿里云提供的数据库云服务也都是主备方案,要想主从+读写分离需要二次架构。

4、记住一句话:不考虑业务场景的架构都是耍流氓。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    11085

    浏览量

    102670
  • 数据库
    +关注

    关注

    7

    文章

    3754

    浏览量

    64258
  • 代码
    +关注

    关注

    30

    文章

    4736

    浏览量

    68297

原文标题:浅析:数据库之互联网常用架构方案一览及应用场景

文章出处:【微信号:5G通信,微信公众号:5G通信】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    联想将进军互联网

    互联网电视领域,并将其与智能手机、平板电脑等同时列入联想移动互联网战略。  本报记者牛颖惠  联想集团持股49%  昨天,联想集团宣布与SMG旗下新媒体公司百视通在上海成立名为“视云网络科技”的合资企业
    发表于 03-18 10:48

    互联网电视迅速崛起

    3月17日,联想集团与上海广播电视台、东方传媒集团有限公司签署战略合作协议,正式切入互联网电视领域,并将其与智能手机、平板电脑等同时列入联想移动互联网战略。2008年互联网电视斩露头角
    发表于 03-22 11:31

    工业互联网

    系统操作提供全新视野。机器分析则为分析流程开辟新维度,各种物理方式之结合、行业特定领域的专业知识、信息流的自动化与预测能力相互结合可与现有的整套“大数据”工具联手合作。最终,工业互联网将涵盖传统方式与新的混合方式,通过先进的特定
    发表于 01-25 09:29

    工业互联网

    工业互联网是全球工业系统与高级计算、分析、感应技术以及互联网连接融合的结果。它通过智能机器 间的连接并最终将人机连接,结合软件和大数据分析,重构全球工业、激发生产力,让世界更美好、更快速、更安全、更
    发表于 04-17 15:56

    诚征自动化(硬件、嵌入式)、互联网数据库数据安全技术合伙人

    和手机客户端,机器人具备互联网和移动互联网协同工作能力机器人在烹饪技术方面,领先国内知名同行,而且已经实现了更低成本目前诚征自动化(硬件、嵌入式)、互联网数据库
    发表于 05-31 14:39

    互联网与工业物联网之间的区别与联系

    通过对于海量数据的分析和利用,以起到对于一个工业物联网应用场合的运作流程以及结果的优化作用。通过简单的描述,我们可以发现互联网和工业物联网最根本区别在于,
    发表于 06-14 10:18

    什么是产业互联网

    2018年10月,腾讯宣传进军产业互联网;2019年9月,腾讯完成了史上最大的组织架构调整,新成立云与智慧产业事业群,正式发力产业互联网;2020年1月,腾讯发布《2020产业安全报告:产业
    发表于 01-18 11:40

    labview软件连接云数据库,实现文件管理,版本更新,物联网搭建~~~

    本帖最后由 SevenLi8408 于 2021-1-4 13:10 编辑 互联网时代,如何实现软件的自动更新,物联网搭建~~~步骤1:搭建一个云数据服务器。方案A: 付费的阿里
    发表于 12-28 09:44

    工业互联网面临的挑战

    工业互联网面临的挑战新一代工业控制网解决方案的重要性全光纤工业传输控制网的系统架构
    发表于 02-22 09:17

    图模型和图数据库

    应用。图模型与面向对象的模型相比更加能够描述事物之间的数据脉络(Data Context)。在互联网,物联网,智能制造,工业4.0 等诸多领域,采纳了图模型和图
    发表于 09-02 07:18

    在ARM9上用轻型WEB服务器可以不接入互联网

    小型数据库SQlite。请问下,在ARM9linux系统平台上 采用BOA 服务器,也使用数据库SQlite,可以在不用接入互联网的情况下,提供RJ45网口 接网线 到PC,此时PC可以 “脱网”访问
    发表于 07-22 14:10

    ARM上实现不用接入互联网的WEB服务器可以吗

    小型数据库SQlite。请问下,在ARM9linux系统平台上 采用BOA 服务器,也使用数据库SQlite,可以在不用接入互联网的情况下,提供RJ45网口 接网线 到PC,此时PC可以 “脱网”访问
    发表于 10-28 10:53

    基于互联网的触摸屏数据库远程监控系统

      以生产中配方数据安全通信为例,介绍了一种基于互联网的触摸屏数据库远程安全传输与监控系统。该系统将触摸屏的通信功能与网络安全通信模块相结合,通过互联网实现了对远
    发表于 05-28 13:49 3837次阅读
    基于<b class='flag-5'>互联网</b>的触摸屏<b class='flag-5'>数据库</b>远程监控系统

    数据库有哪些常见的应用结构数据库应用结构的使用资料概述

    本文档的主要内容详细介绍的是数据库有哪些常见的应用结构数据库应用结构的使用资料概述 数据库常见的应用结构有:1.集中式结构2.文件服务器结构
    发表于 10-31 16:57 11次下载
    <b class='flag-5'>数据库</b>有哪些<b class='flag-5'>常见</b>的应用结构<b class='flag-5'>数据库</b>应用结构的使用资料概述

    工业互联网时代,我们为什么需要一个时序数据库

    ,关键字:互联网监控系统,大家就会发现小米、饿了吗等互联网巨头也都在用时序数据库实现企业级的互联网监控系统。更别提目前所有国内外主流工业互联网
    的头像 发表于 01-28 13:02 6163次阅读
    工业<b class='flag-5'>互联网</b>时代,我们为什么需要一个时序<b class='flag-5'>数据库</b>?