(一) MdbCluster分布式内存数据库——基础架构介绍
根据最初的设计方案,在实现的时候我们进一步做了减法。
MdbCluster的服务节点:
a)MdbAgent负责业务和控制消息的接入、校验、推送。
b) MdbRWNode负责管理本地内存数据库,数据同步写入内存,异步写入磁盘。
MdbCluster的客户端节点:
a) MdbClient负责与在App的驱动进行同步交互,并通过http2协议与服务端进行通讯。
二、主备结构
在MdbCluster设计之初,打算通过二阶段提交的方式来实现数据一致性。并且设计了复杂的二阶段提交流程,足有三大页的流程图。难点不在于二阶段提交本身,而在于异常发生时,系统如何保证数据不丢失,如何从故障中恢复。虽然看起来设计方案很宏伟,但一点也不优雅,实现起来一定会是个灾难。看到Redis也从低版本的二阶段提交改为高版本的主备模式。我们也修改了最初的设计方案。

Master节点和Slave节点的MdbRWNode通过异步的方式来同步数据。并且通过心跳的方式来检测对端是否异常。
a) 当Slave节点异常时,数据同步中断。在Slave节点恢复时,先从自己的数据库文件中恢复数据,再对接Master节点,对中断过程中的数据进行恢复。
b) 当Master节点异常时,MDB2检测到MDB1故障,将自己转为Master节点,承担业务消息。当MDB1恢复时,先从自己的数据库文件中恢复数据,再对接Master节点,对中断过程中的数据进行恢复。并做为Slave节点继续工作。
c) 在做主备切换时,MdbAgent会对MdbClient进行广播通知。
(一) MdbCluster分布式内存数据库——基础架构介绍的更多相关文章
- (转)分布式缓存GemFire架构介绍
1什么是GemFire GemFire是一个位于应用集群和后端数据源之间的高性能.分布式的操作数据(operational data)管理基础架构.它提供了低延迟.高吞吐量的数据共享和事件分发.Gem ...
- 分布式缓存GemFire架构介绍
1什么是GemFire GemFire是一个位于应用集群和后端数据源之间的高性能.分布式的操作数据(operational data)管理基础架构.它提供了低延迟.高吞吐量的数据共享和事件分发.Gem ...
- flume1.8 基础架构介绍(一)
1. 系统要求 1. Java运行环境 -- Java 1.8及以上 2. 内存 -- 足够的内存供配置的sources,channels 或者sinks使用 3. 硬盘空间 -- 足够的硬盘空间供配 ...
- ORM,Entity Framework介绍以及其所包含的基础架构介绍
一:entity framework 6.0 ORM (实体关系模型) O: Domain Object 领域模型 R: Relational Database 关系型数据库 M: Mapping 映 ...
- 基础架构之spring cloud基础架构
这篇文章是给公司设计的微服务基础架构,包括架构设计.部署流程.部署架构.开发Tip等等.这里分享出来,如果对看官们有点用,我就非常的高兴了. 首页 2. 架构设计 3. 部署流程 4. 部署架构 5. ...
- AWS EC2+Docker+JMeter构建分布式负载测试基础架构
目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...
- 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
2013年04月19日 14:09:37 MJiao 阅读数:4614 深入浅出node.js游戏服务器开发1——基础架构与框架介绍 游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...
- MemSQL分布式架构介绍(一)
最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...
- MemSQL分布式架构介绍(二)
接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...
- LYNC2013介绍和基础架构准备角色
LYNC2013部署系列PART1:LYNC2013介绍和基础架构准备 前言:LYNC 2013发布已经很久了,本人一直在进行相关的学习和测试,在有限的资源条件下,把能够模拟出来的角色进行了安装部署, ...
随机推荐
- KatalonRecorder系列(一):基本使用+XPath元素定位
一.简介 Katalon Recorder是基于selenium的浏览器插件,支持火狐和chrome.可以录制web上的操作并回放,还能导入导出脚本. 二.安装 可在谷歌商店或者火狐附件组件中搜索并选 ...
- Vue3实现动态导入Excel表格数据
1. 前言 在开发工作过程中,我们会遇到各种各样的表格数据导入,大部分我们的解决方案:提供一个模板前端进行下载,然后按照这个模板要求进行数据填充,最后上传导入,这是其中一种解决方案.个人认为还有另外 ...
- Java 同步锁ReentrantLock与抽象同步队列AQS
AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它.AQS继承了AbstractOwnableSynchronizer类, ...
- Installing ClickHouse-22.10.2.11 on openEuler
一.Installing ClickHouse-22.10.2.11 on openEuler 1 地址 https://clickhouse.com https://packages.clickho ...
- cookie中 防止重复存值 (可用于历史记录等)
function makeCookie($key,$val){ // 查看cookie中是否已经存过键为history_ids if(Cookie::has($key)){ // 已经存过了 $jso ...
- 01-Docker实战,搭建NodeJs环境
目的 实现简单的docker的nodejs容器,使用Dockerfile构建我们的使用nodejs开发的系统 技术栈 Docker Nodejs Express Linux step1 下拉nodej ...
- windows server2016/2019在vmware上安装失败
问题:无法进入装机界面 现象一:打开虚拟机后进入虚拟bios界面,无法引导iso镜像 解决方法1:从虚拟机设置里,修改引导选项,如果需要修改启动盘则设置强制执行BIOS设置 下图为vsphere的截图 ...
- salesforce零基础学习(一百二十一)Limitation篇之Heap Size Limitation
本篇参考: https://help.salesforce.com/s/articleView?id=000384468&type=1 https://help.salesforce.com/ ...
- i春秋Do you know upload?
打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...
- Vscode连接gitee远程仓库
Git初始化项目 1. Git的基础配置 Git的安装配置 下载地址为:http://git-scm.com/downloads 安装完第一步要做的是,设置你的用户名和邮件地址. git config ...