mycat

1.Mycat

号称中国第一开源数据库中间件,支持高性能的读写分离,最大的百亿级的达标水平分片并行计算,支持数据整合输入和整合输出

2.Mycat的原理

实现的是对客户端发起的sql访问做拦截,计算分片的位置,计算读写分离的逻辑,获取一个要执行的sql语句的后端数据库连 接,获取数据,返回客户端。

3.同类的产品

cobar:存在后端数据库假死的情况,在高并发环境中,由于后端开发的技术基于阻塞线程的逻辑,极易出现由于献策韩国都被占用,没有空闲的线程处理请求sql逻辑,导致中间件判断本应该访问的某个数据库后端节点宕机(实际上没有宕机)–假死
amoeba(变形虫):支持读写分离,支持垮裤查询数据,但是一旦跨库性能受到影响

4.分布式事务知道么?如何解决?TCC?如果出现网络原因连不通怎么办?

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务节点上,分布式事务需要保证这些小操作要么全部成功,要么全部失败;本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
分布式系统事务要素(cap理论)
** 一致性:分布式环境下多个节点的数据是否强一致。
** 可用性:分布式服务能一直保证可用状态。当用户发出一个请求后,服务能在有限时间内返回结果。
** 分区容忍性:特指对网络分区的容忍性。
三者只能取其二,而且分区容忍性是不可或缺的
eurke更加变相与ap ,zookeeper更加偏向于cp
BASE 理论
核心思想:
** 基本可用(BasicallyAvailable):指分布式系统在出现故障时,允许损失部分的可用性来保证核心可用。
** 软状态(SoftState):指允许分布式系统存在中间状态,该中间状态不会影响到系统的整体可用性。
** 最终一致性(EventualConsistency):指分布式系统中的所有副本数据经过一定时间后,最终能够达到一致的状态。
一致性分类
** 强一致性:数据更新成功后,任意时刻所有副本中的数据都是一致的,一般采用同步的方式实现。
** 弱一致性:数据更新成功后,系统不承诺立即可以读到最新写入的值,也不承诺具体多久之后可以读到。
** 最终一致性:弱一致性的一种形式,数据更新成功后,系统不承诺立即可以返回最新写入的值,但是保证最终会返回上一次更新操作的值。
分布式事务解决方案:一般有以下几种
** 两阶段提交(2PC, Two-phase Commit)方案
强一致性
2PC的核心原理是通过提交分阶段和记日志的方式,记录下事务提交所处的阶段状态,在组件宕机重启后,可通过日志恢复事务提交的阶段状态,并在这个状态节点重试,如Coordinator重启后,通过日志可以确定提交处于Prepare还是PrepareAll状态,若是前者,说明有节点可能没有Prepare成功,或所有节点Prepare成功但还没有下发Commit,状态恢复后给所有节点下发RollBack;若是PrepareAll状态,需要给所有节点下发Commit,数据库节点需要保证Commit幂等。
** eBay 事件队列方案
最终一致性
它的核心思想是将需要分布式处理的任务通过消息或者日志的方式来异步执行,消息或日志可以存到本地文件、数据库或消息队列,再通过业务规则进行失败重试,它要求各服务的接口是幂等的。
** TCC 补偿模式
最终一致性
某业务模型由服务 A、服务B、服务C、服务D 共同组成的一个微服务架构系统。服务A 需要依次调用服务B、服务C 和服务D 共同完成一个操作。当服务A 调用服务D 失败时,若要保证整个系统数据的一致性,就要对服务B 和服务C 的invoke 操作进行回滚,执行反向的revert 操作。回滚成功后,整个微服务系统是数据一致的。
要求
** 服务调用链必须被记录下来。
** 每个服务提供者都需要提供一组业务逻辑相反的操作,互为补偿,同时回滚操作要保证幂等。
** 必须按失败原因执行不同的回滚策略。
** 缓存数据最终一致性
在我们的业务系统中,缓存(Redis 或者Memcached)通常被用在数据库前面,作为数据读取的缓冲,使得I/O 操作不至于直接落在数据库上。以商品详情页为例,假如卖家修改了商品信息,并写回到数据库,但是这时候用户从商品详情页看到的信息还是从缓存中拿到的过时数据,这就出现了缓存系统和数据库系统中的数据不一致的现象。
解决方案:
为缓存数据设置过期时间。当缓存中数据过期后,业务系统会从数据库中获取数据,并将新值放入缓存。这个过期时间就是系统可以达到最终一致的容忍时间。更新数据库数据后同时清除缓存数据。数据库数据更新后,同步删除缓存中数据,使得下次对商品详情的获取直接从数据库中获取,并同步到缓存。

5.玩转server.xml schem.xml配置文件

逻辑表 分片表 全局表 ER表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值