蘑菇街交易平台 数据库架构演进历程

  从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层结构。这是数据库外部体系结构。物理存储结构、逻辑存储结构、内存结构和实例进程结构。这是内部体系结构。

  单数据库架构:一个项目在初期的时候,为了尽可能快地验证市场,其对业务系统的最大要求是快速实现。在这个阶段,代码开发人员为了能快速实现业务系统,一般都是将所有层级(MVC)的业务代码都写在同一个项目中,所有的业务数据都存放在同一个数据库中。但随着项目的不断推进,用户量不断增长,单台应用服务器已经无法承受如此巨大的流量了。此时常见的做法是把项目进行分布式部署,分散单台服务器的流量,从而可以暂时缓解用户增长带来的应用服务器压力。

  主从数据库架构:这个时候常用的解决方案就是将原本单台数据库服务器变成主从模式的数据库服务器,即一台数据库作为主库支持写入数据,一台数据库作为读库支持查询数据。

  我们通过数据库主从同步实现了读写分离,将所有读操作都引导到从库进行,将所有写操作都引导到主库进行。因为我们对数据库层进行了改造,规定所有读数据库操作要访问从库,所有写数据库操作要访问主库,那么我们就必须对原来的代码进行改造。当我们使用了主从数据库架构之后,我们会发现我们能支撑更多的用户访问和请求了。但随着业务的进一步发展,其实可以发现会存在一些问题:当我们修改了注册模块的时候,我们需要整个项目都发布一次,这样会影响到登录、购物模块的正常使用。即使每次改动的代码即使很小,我们还是需要发布整个项目包,这使得每次发布的代码包非常巨大。随着业务量的不断增长,我们会发现即使实现了主从的读写分离,数据库的压力也是非常大,似乎快要承受不了了。上面说的这些问题只是实战中遇到的一部分问题,事实上遇到的问题只会更多不会更少,而且随着业务的不断发展会愈加凸显。

  垂直切分数据库架构

  此时为了各个业务模块不互相影响,我们把应用层进行垂直拆分,即把注册模块、登陆模块、购物模块都单独作为一个应用系统,分别读写独立的数据库服务器。实现了垂直拆分之后,我们可以成功解决上面说到的三个问题:业务模块相互影响问题、单数据库压力问题。但是随着业务的进一步扩大,我们又增加了许多业务模块:客服模块、钱包模块、个人中心模块、收藏夹模块、订单模块等。按照我们之前所设计的数据库架构,我们会存在许多个数据源,这些数据源分散在各个项目中。

  总结:从单一的数据库架构,到主从读写分离的数据库架构,再到垂直拆分、水平拆分的数据库架构。我们可以看到 MyCat 帮我们解决了读写数据源判断、繁杂数据源地址、分表判断这三个机械的重复性的问题。但 MyCat 发展至今,其功能已经远远超过上面说的这三个。例如 MyCat 支持主从切换功能,当数据库主库发生网络问题或其他故障时,MyCat 可以自动切换到从库,从而保证正常读写功能的进行。MyCat 的定位是一个数据库中间件,但凡所有处于应用层和数据层之间的事情,MyCat 都可以做。

文章来源:https://www.cnblogs.com/adeng/p/9012301.html

转载于:https://www.cnblogs.com/zhangliqiangvictory/p/11029014.html

蘑菇街交易平台 数据库架构演进历程相关推荐

  1. 阿里巴巴数据库架构演进分析

    阿里巴巴数据库架构演进分析 阿里巴巴架构的发展历程 (1999-2010) 数据架构日益复杂,和一个简单的页面所拥有的数据分析 大型互联应用的问题: 解决方案 UDSL热点缓存 阿里巴巴架构的发展历程 ...

  2. 微众银行数据库架构演进及 TiDB 实践经验

    作者介绍: 胡盼盼,微众银行数据平台室室经理.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数据库相关的研发与运营工作:2014 年加入微众银行,负责微众银行的数据库平台的建 ...

  3. 巨杉TechDay回顾 | 微服务下的分布式数据库架构演进与实践

    内容整理自2019年6月2日巨杉TechDay技术沙龙活动. 演讲概述 当前,微服务架构已经成为应用架构转型的主流方向.本次分享,将深入解析在应用架构微服务化的趋势下,底层数据架构如何演进,分布式数据 ...

  4. 京东无线服务端架构演进历程

    京东无线服务端 首先,在大会上统计一下数据,不知道多少人的手机上安装了京东手机APP,从举手的比例来看,大家也能猜到.就像这个图画的一样,京东无线服务端的流量像这个瀑布一样,汹涌不绝.服务端就是APP ...

  5. 迈向更灵活,贝壳 OLAP 平台架构演进历程

    导语 |为了满足贝壳日益复杂.多样化业务场景下的多维数据分析需求,贝壳 OLAP 平台经历了从早期基 于Hive+MySQL 原始阶段,到基于 Kylin单一引擎的平台化建设,再到支持多种不同OLAP ...

  6. 微服务 OLTP 分布式数据库架构演进

    开源分布式数据库 不用自己实现分库分表 分布式数据库选型 日均7亿交易量,如何设计高可用的MySQL架构? 每秒7亿次请求,阿里新一代数据库如何支撑? 云上应用系统数据存储架构演进

  7. 荔枝架构演进历程读后感

    荔枝,致力于打造声音处理平台,帮助人们展现自己的声音才华.荔枝集录制.编辑.存储.收听.分享于一体,依托声音底层技术积淀,具有声音节目录制功能,可在手机内完成录音.剪辑.音频上传和语音直播.简单理解, ...

  8. 【精品】服务端 架构演进 历程

    概述 以淘宝作为例,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 单机架构 ...

  9. 大数据处理架构演进历程,文末留言有机会获取Flink图书

    关注 iteblog_hadoop 公众号并在本文末评论区留言(认真写评论,增加上榜的机会).留言点赞数排名前6名的粉丝,各免费赠送一本<深入理解Flink - 实时大数据处理实战>,活动 ...

  10. 大型网站架构演进历程

    目录 一.单体应用架构 二.垂直应用架构 三.分布式架构 四.SOA(面向服务)架构 五.微服务架构 六.总结 一.单体应用架构 最原始的架构 二.垂直应用架构 在原始架构上做了改良 三.分布式架构 ...

最新文章

  1. android上传视频 断点续传,断点续传上传
  2. 【通知】《深度学习之图像识别》再版工作启动,欢迎指导和提出建议
  3. 江苏省计算机一级在线考试,2020江苏省一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...
  4. mysql 有empty_blob()_【原创】操作Blob类型的方法
  5. 【ES6-11(2015-2020)】特性总览与开发环境准备
  6. 持续集成及部署利器:Go
  7. vue-router实现根据用户权限显示不同菜单-动态路由
  8. 国内计算机刊物标准写作规范和标准
  9. 各大网站和app是如何实现黑白页面效果?
  10. js事件冒泡和传播详细解释
  11. UVM验证方法学之一验证平台
  12. 计算机毕业设计Javaweb实验室课表管理系统(源码+系统+mysql数据库+lw文档)
  13. 第八届蓝桥杯B组国赛总结
  14. 整理的一篇iOS面试题大全
  15. 第四章 MPT 现代组合理论
  16. 点餐系统的开发,php后台+微信小程序 实现完整的餐厅点餐系统。
  17. 京东7亿美元投资兴盛优选,买到了什么?
  18. Libreoffice 启动或重启命令
  19. 【有限元分析】风力发电机塔筒筒体校核——matlab雨流计数法
  20. 智慧农业顶层设计与解决方案

热门文章

  1. WorkMan学习篇:三
  2. 计算机导论.mobi,计算思维:计算学科导论
  3. 人体红外传感器(HC_SR051)实现 人体感应灯
  4. Python PyAutoGUI模块自动化控制鼠标和键盘
  5. 李开复--生命是最严厉的导师
  6. 霍普金斯计算机专业研究生如何,约翰霍普金斯大学计算机科学研究生项目详情!_托普仕留学...
  7. 5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇
  8. c语言括号里三种字符,c语言的基本数据类型都有什么,麻烦知道用大括号分类,非常感谢...
  9. 邮件协议POP3/IMAP/SMTP服务的区别 常用邮箱的 IMAP/POP3/SMTP 设置
  10. 小公司需要企业邮箱么?小企业用什么企业邮箱?