一 中间件传统模式下会被存储所有的逻辑(会制约应用吞吐量和弹性扩张的能力)
二 微服务:把紧耦合在中间件里的应用拆散到微服务里面,同时提供分布式的服务
三 每组微服务都是可以弹性扩展不断伸缩的框架,每组微服务大部分都会自带一组自己的数据库
面临问题:
1弹性扩展:从每个微服务看起来,微服务可以通过增加数量来扩大计算能力,但数据存储如果使用一个独立的,可能会因无法扩展成为瓶颈。
2数据碎片化:从应用程序本身框架来看,我们把整个数据库拆散成几十个微服务的小数据库里面,如果我希望做统一的管理,那么我就需要跨几十个库关联,这样对DBA和运营管理是一个挑战
四 如何解决这微服务面临的问题:
- 集中式存储(一个数据库,多个微服务):
方便底层管理 但数据紧耦合,无法弹性扩展,单点故障
2.碎片化存储(多个微服务,每个微服务独立使用一个子库): 数据碎片化,数据无共享,运维成本高
3.分布式存储(数据被均匀分布在集群中,每一个数据库实例作为独立的IP地址和端口):
微服务对应独立实例,物理分散管理,逻辑集中管理
分布式存储的优点:
(1)完全符合mysql协议,完全和mysql兼容
(2)在整个集群里,创建交易型实例和分析型实例,分析型实例可以创建映射,直接把在线交易表映射到分析表中,可以跨微服务数据关联
五 分布式数据库
(一)传统技术兼容性
1.ACID安全性(数据不丢)
2.SQL完整性(兼容已有的MySQL等传统数据库),减少技术人员负担(学习新技术,开发新技术)
(二)新技术前瞻性
1.分布式与扩展性:弹性扩展
2.HTAP:既保证交易又保证分析 互不干扰 同时进行
3.Multi-model与多租户:适应多种应用场景
六 分布式数据库类型
1.应用垂直分库:把紧耦合应用分成一个个子服务,每个服务使用一个独立的小数据库
缺点:(1)改动时维护成本较高
2.分库分表:从应用到数据库之间有一个中间件来解析请求
缺点:
(1)对上层应用往往做不到100%透明,(比如视图)有些命令支持起来非常复杂
(2)增删改查的时候,中间件是否会自动进行数据搬迁存在疑问
(3)数据化碎片管理存在问题,集中管理会面临问题
3.原生分布式数据库:
优点:
(1)上层应用对mysql完全兼容
(2)对数据整合可以直接映射,统一进行分析管理
具体优缺点:
七 巨杉分布式数据库简单构图
八 三大核心应用场景
1 联机交易:交易型业务场景,替换mysql,pgsql等传统关系型数据库
2 数据中台:一般来说做只读的系统,数据量大于联机交易,比如登录网银查询历史账单,查询剩余资产。可以增加速度,减少不必要浪费
3 内容管理:音频,图片等对象存储类业务
九 支持的数据库实例(多种)
1 关系型:mysql(主要负责oltp),postgresql(主要负责htap),sqarksql(主要负责olap)
2 文档型:json
3 对象型:s3,posix文件系统