我们继续来讲分布式,回到我们的创业游戏。

我们的业务规模上来了,客户也越来越忠诚了。很多客户都通过我们的订票服务,来方便自己的行程。

那对这些老客户,我们的宗旨是:要不断超越客户的期待。

所以,我们要建立我们的客户数据库。

我们要记录下每个客户的偏好的航空公司,偏爱的酒店。下次服务,才能直接更好地服务客户。

怎么办?

最简单的办法,每个客服小姐姐各自用自己的记事本,记录下客户的号码,偏好等信息。

这些记事本就是我们的“客户数据库”。

这些数据都记录在记事本上,会有一个问题,如里同一个客户,每个客服小姐姐都记录一次。是不是很费时费力,还重复记录,浪费资源。

怎么办?

还是跟之前一样,拆分!垂直拆分。

再拆分一组,就叫:客户信息记录组。

如果客户小姐姐要记录客户信息,就把信息写在纸条上,然后直接扔给:客户信息记录组,让这个小组自行处理:去除重复,更新信息。

当然,我们的客户信息记录组,可以用execl把客户信息上记录下来。这样,也方便数据处理。

现在我们的业务架构是这样的:

有同学说,这个架构图好像跟我们的IT软件架构图很像。

没错。其实,所有的IT软件架构,遵从从业务架构设计的。

技术只是工具,业务才是核心。

回到我们的客户信息记录组。这个组也有多个小姐姐记录,如果大家都各自用自己的excel,怎么保证大家的信息没有重复,都是一致的呢?

这个时候,我们就要上数据库系统了。什么是数据库系统,简单来说,就是记录数据的仓库。

好,我们买了一台电脑,招了一个程序员,下载了个mysql,写了一个简单程序,给客户信息记录组的姐姐用。

刚开始,数据不大,问题不大。

当数据越来越多时,一台数据库明显支持不下。怎么办?

很简单,多买几台数据库。能用钱解决的问题,就不是问题。

那现在问题又来了,这些数据库怎么保持数据一致性?

这个就是分布式数据库要解决的问题。什么是分布式数据库?

简单来说,它就是用多台数据库组成一个“整体”,给外界提供数据库服务的数据仓库系统。

有同学会说了,你要很大很大的数据量才能用分布式数据库。你一家小公司,用这个是不是浪费了?

有道理!一般情况下,小公司是用不上分布式。但我们做为有梦想的企业家,一定要提前规划,站在未来看现在!我们才有机会成功!

马云说过:梦想还是要有的,万一实现了呢?

所以,叫那个程序员开始干活!

首先我们要分析一下业务。

客户小姐姐大部分情况下,都 是查询客户信息的比较多,占了80%。新增,和更新信息的情况比较少,占了20%。

如果查询和记录都在一个数据库,经常会造成冲突,造成“锁表”。这会造成严重的性能问题,会造成对客户体验严重的损害!

很自然,我们可以想到,那是不是可以分开两个库,一个用来记录,一个用来查询。

这就是读写分离,读写分离是很重要的设计原则。可以极大地提高查询的效率。如下:

尽管采取了读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出。怎么办?

我们分别对读写库的表进行水平拆分,也就是分表。

比如,可以按表中的唯一ID的hash值来分,如果hash值是偶数,就放在“偶数表”,如果hash值是奇数,就放在奇数表。

如下图:

讲到这里,我们基本上就建立了分布式数据库系统。

明天继续讲分布式架构的演进。

转载于:https://www.cnblogs.com/gyc567/p/11075381.html

轻松学习分布式|系列3|分布式数据库。相关推荐

  1. 【分布式系列】分布式事务:TX-LCN分布式事务框架整合实践

    热门系列: [分布式系列]分布式锁原理篇-Redisson.Zookeeper.Database 程序人生,精彩抢先看 目录 1.前序 2.过程 2.1 TX-LCN框架介绍 2.2 环境搭建 2.2 ...

  2. 轻松学习LINUX系列教程推出

    本系列多媒体教程已完成的博文: 1.轻松学习Linux之入门篇 http://chenguang.blog.51cto.com/350944/449214 2.轻松学习Linux之本地安装系统 (分区 ...

  3. 数字人轻松学习Blender系列之八:建模-6

    https://www.jianshu.com/p/95955aaab1c1 [前言] 这一篇研究一下如何把两个对象合成一个对象:把一个元素从一个对象中分离出来(但还是一个对象):把一个对象不同元素拆 ...

  4. 高阶程序员之路-轻松学习分布式锁

    前言 随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机 ...

  5. 软件开发随笔系列一——分布式架构实现

    软件开发随笔系列一--分布式架构实现 文章目录 软件开发随笔系列一--分布式架构实现 理论基础 分布式架构的实现 内核框架 应用开发 基础设施 服务接入 监控 日志监控 调用链监控 度量指标监控 健康 ...

  6. 分布式深度学习:神经网络的分布式训练

    分布式深度学习:神经网络的分布式训练 2016-10-09 14:05:04     深度学习    神经网络   http://www.jiqizhixin.com/article/1611  0  ...

  7. Git 学习笔记:5 分布式工作流程

    Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...

  8. 微服务系列:分布式文件存储之 MinIO 入门指南

    经过前面多篇文章我们学习了服务网关.服务调用.服务注册.服务监控等微服务系列的的相关知识,今天开始我们来学习一下分布式文件的相关知识. 首先我们从学习 MinIO 对象存储服务开始,后面还会学习下其他 ...

  9. java 分布式 redis缓存技术_JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载...

    课程名称 JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载 课程目标 本课程从0基础开始,对redis的方方面面进行细粒度的讲解:包括基础操作.高级命令.各种集群模式.动态增减节点 ...

最新文章

  1. sklearn FutureWarning: numpy not_equal will not check..., The comparison did not return the same
  2. 知乎多场景内容匹配方案荣获CSDN AI优秀案例奖
  3. jsp/servlet与ajax实现简单局部日期时间更新
  4. PHP大文件上传问题
  5. SVN提交时强制用户写日志
  6. 阿里巴巴云游戏平台荣获首届高新视频创新应用大赛一等奖
  7. python 自动收集经济数据_完结】数据分析思维案例实战92 用Python自动办公,做职场高手【更新中】91.一课经济...
  8. Dumpsys Input Diagnostics
  9. 李飞飞夫妇打造了两件秘密武器,让机器人快速学习人类技能
  10. 测试员最好跳槽频率是多少?进来看看你是不是符合
  11. Data truncation: Out of range value for column ‘quanity‘ at row 问题解决方案
  12. 谈如何边做事,边提高
  13. 【DIOCP-DEMO说明】所有演示DEMO的简要说明
  14. 1.2 数值分析 误差的来源和分类
  15. Java经典程序编程50题(较适合初学者)
  16. git-commit-amend踩坑
  17. 项目沟通管理和项目干系人管理
  18. 【codevs2853】方格游戏 DP
  19. linux还原环境,Linux环境利用恢复被rm意外删除数据文件
  20. Linux脚本:Bash脚本看这一篇就够了

热门文章

  1. 部署php项目到linux
  2. flask内置session原理
  3. 踩坑 net core
  4. 周记随笔-php5.6与apache2.4的windows32安装
  5. RUNOOB python练习题2
  6. 新Rider预览版发布,对F#的支持是亮点
  7. arm处理器的历史及现状
  8. AutoLayout 浅析动画
  9. PureMvc学习笔记
  10. Yii2.0 ActiveForm Input Fields