Kang's Blog

疯狂创作中···

集群与日志

MySQL集群与日志

均衡分库分表方案-参考阅读 MHA   在 MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性。 MHA Manager(管理节点)   MHA Manager 可以单独部署在一台独立的机器上管理多个 master/slave 集群,也可以部署在一台 slave 节点上; MHA...

事务隔离级别-MVCC

只想说的通俗易懂

写在前面 Read View 、MVCC和 Next-Key Locks 配合的方式如下: 1、创建事务时,构建Read View确认活跃事务表; 2、MVCC会为事务操作(读/写)期间涉及到的数据都创建一个版本进行管理,后续都读这个快照; 3、当产生一个写动作时,则要去判断这个记录的锁情况(更新、当前读等加锁了),冲突时进行排队等待。   **其实MVCC本来的用途是解决写时加锁不...

事务隔离级别、锁与日志操作

只想说的通俗易懂

触发当前读: select…lock in share mode , select…for update update , delete , insert 在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。 快照读,读取的是记录的可见版本 (有可能是历史版本),不用加锁。 当前读,读取的是记录的最新...

以太坊

以太坊简介

mining puzzle(挖矿方式)   区块链:计算密集型,导致挖矿设备趋于专业化。   以太坊:为避免挖矿专业化,采用了memory hard(对内存要求高)的方式,在一定程度上限制ASIC芯片的使用。 Double spending   交易发布者在交易head中维护一个nonce计数器(故参与了签名),记录了这个交易账户有史以来一共发布过多少个交易。在系统所...

区块链

区块链

    非对称加解密:   存在私钥签名则证明是本人发出。 比特币中所有的交易都包含输入和输出两部分,输入部分需要存在签名(也就是私钥签名),说明币的来源,输出部分要给出收款人的公钥的hash(也就是公钥加密)。 merkle proof:必须先给出需要验证节点的位置,然后返回该节点的Merkle路径。Merkle Proof包括一个数据块,Merkle Root,以及从数据块到根...

中间件-RocketMQ

中间件RocketMQ之Producer(三)

  路由管理是RocketMQ的核心功能之一,涵盖了订阅管理,连接管理,负载均衡等一系列功能,代码分布在NameServer、Broker、Producer和Consumer等各组件实现中。RocketMQ有一个特色功能:支持灵活的集群工作方式。Broker、Producer和Consumer都能够在运行时动态扩容或缩容,这都要依赖于强大的路由管理模块。 Producer如何投递消息  ...

中间件-RocketMQ

中间件RocketMQ之Rebalance(二)

Rebalence过程   RocketMQ的consumer负载均衡依赖于RebalanceImpl类。我们仍然以Pull模式进行讲解。在DefaultMQPullConsumerImpl中存在RebalanceImpl属性,关键方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

中间件-RocketMQ

中间件RocketMQ之Offset(一)

集群管理总结   1、主独立NameServer(元数据管理,相互独立,与每个Broker通讯);   2、RebalanceService,位于每个消费端,之间也不存在通讯,从NameServer获取Topic路由和消费者组成员元数据动态计算当前实例应消费的队列。   3、考虑到RebalanceService和NameServer均独立,所以允许心跳、锁检测和Rebalance再平衡...

分布式-2pc示例简介

2p示例简介

前面分布式-2pc、3pc、TCC已经介绍分布式相关的事务。本文接上文,提供一个可简单学习的2PC示例。 1. 基于XAResource底层接口实现 1 2 3 4 5 6 7 8 9 10 11 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector...

其它-关于领域驱动模型

领域驱动模型的学习与思考(V1)

推荐阅读-领域驱动设计到底难在哪? 推荐阅读-领域驱动设计系列 领域驱动设计的概念   在开发前通常需要进行大量的业务知识梳理,然后才到软件设计的层面,最后才是开发。在业务知识梳理的过程中,必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计(DDD,Domain-Driven Design)的基本概念 。DDD首先应该是一种软件开发过程,它拥抱与发展了敏捷开发方法,采...