我们继续来讲分布式, 回到我们的创业游戏.
我们的业务规模上来了, 客户也越来越忠诚了. 很多客户都通过我们的订票服务, 来方便自己的行程.
那对这些老客户, 我们的宗旨是: 要不断超越客户的期待.
所以, 我们要建立我们的客户数据库.
我们要记录下每个客户的偏好的航空公司, 偏爱的酒店. 下次服务, 才能直接更好地服务客户.
怎么办?
最简单的办法, 每个客服小姐姐各自用自己的记事本, 记录下客户的号码, 偏好等信息.
这些记事本就是我们的 "客户数据库".
这些数据都记录在记事本上, 会有一个问题, 如里同一个客户, 每个客服小姐姐都记录一次. 是不是很费时费力, 还重复记录, 浪费资源.
怎么办?
还是跟之前一样, 拆分! 水平拆分.
再拆分一组, 就叫: 客户信息记录组.
如果客户小姐姐要记录客户信息, 就把信息写在纸条上, 然后直接扔给: 客户信息记录组, 让这个小组自行处理: 去除重复, 更新信息.
当然, 我们的客户信息记录组, 可以用 execl 把客户信息上记录下来. 这样, 也方便数据处理.
现在我们的业务架构是这样的:
有同学说, 这个架构图好像跟我们的 IT 软件架构图很像.
没错. 其实, 所有的 IT 软件架构, 遵从从业务架构设计的.
技术只是工具, 业务才是核心.
回到我们的客户信息记录组. 这个组也有多个小姐姐记录, 如果大家都各自用自己的 Excel, 怎么保证大家的信息没有重复, 都是一致的呢?
这个时候, 我们就要上数据库系统了. 什么是数据库系统, 简单来说, 就是记录数据的仓库.
好, 我们买了一台电脑, 招了一个程序员, 下载了个 MySQL, 写了一个简单程序, 给客户信息记录组的姐姐用.
刚开始, 数据不大, 问题不大.
当数据越来越多时, 一台数据库明显支持不下. 怎么办?
很简单, 多买几台数据库. 能用钱解决的问题, 就不是问题.
那现在问题又来了, 这些数据库怎么保持数据一致性?
这个就是分布式数据库要解决的问题. 什么是分布式数据库?
简单来说, 它就是用多台数据库组成一个 "整体", 给外界提供数据库服务的数据仓库系统.
有同学会说了, 你要很大很大的数据量才能用分布式数据库. 你一家小公司, 用这个是不是浪费了?
有道理! 一般情况下, 小公司是用不上分布式. 但我们做为有梦想的企业家, 一定要提前规划, 站在未来看现在! 我们才有机会成功!
马云说过: 梦想还是要有的, 万一实现了呢?
所以, 叫那个程序员开始干活!
首先我们要分析一下业务.
客户小姐姐大部分情况下, 都 是查询客户信息的比较多, 占了 80%. 新增, 和更新信息的情况比较少, 占了 20%.
如果查询和记录都在一个数据库, 经常会造成冲突, 造成 "锁表".
很自然, 我们可以想到, 那是不是可以分开两个库, 一个用来记录, 一个用来查询.
这就是读写分离, 读写分离是很重要的设计原则. 可以极大地提高查询的效率. 如下:
尽管采取了读写分离的方式, 但随着数据库的压力继续增加, 数据库的瓶颈越来越突出.
来源: http://www.bubuko.com/infodetail-3102184.html