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

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

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

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

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

怎么办?

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

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

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

怎么办?

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

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

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

当然,我们的客户信息记录组,可以用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. python3操作mysql教程_python3操作mysql教程
  2. JSPServlet路径问题
  3. python androidhelper kivy_学习qpython相关
  4. java 图像采集_JAVA B/S通过摄像头采集图片信息解决方案。
  5. asp.net访问被拒绝,程序集无法加载原因与解决方法[摘录]
  6. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据
  7. 聊聊storm的IWaitStrategy
  8. 神经网络调参经验大汇总
  9. mysql数据库存表情报错_mysql数据库存表情报错
  10. log4j升级到logback
  11. html font-family设置无效,css设置中文字体(font-family:黑体)后样式失效问题
  12. 如何清理Virtualbox虚拟机VDI镜像文件的空间大小
  13. 坦克大战 Java版
  14. python怎么让py里面逐行运行_[python]开发环境bug(求助)
  15. Spring Data Jpa中的save和saveAndFlush方法
  16. AD14,原理图绘制引脚以及引脚名称的修改
  17. php开发oa系统的插件下载不了,OA系统安装不了office控件的解决方法
  18. python 知乎接口_python爬虫入门(3)--利用requests构建知乎API
  19. Windows直接访问WSL2路径并直接进行读写操作,权限不足的问题
  20. 以实例分析 IGP中更新源检测失败丢弃路由更新包

热门文章

  1. PHP获取IP地址的方法,防止伪造IP地址注入攻击
  2. Java 微信公众号导出所有粉丝(openId)
  3. Windows Azure移动终端云服务管理(公测版)
  4. js 中null,undefined区别
  5. 昨天添加的clustrMaps,忘了截屏,今天补上,就作为我在园子里的奠基。
  6. ASP.NET 2.0个性化配置(profile)
  7. python入门系列:对象引用、垃圾回收、可变性
  8. 第二轮冲次会议第六次
  9. Toast源码深度分析
  10. [LeetCode]--71. Simplify Path