mysql 与gemfire的同步_(转)分布式缓存GemFire架构介绍

1什么是GemFire

GemFire是一个位于应用集群和后端数据源之间的高性能、分布式的操作数据(operational data)管理基础架构。它提供了低延迟、高吞吐量的数据共享和事件分发。GemFire充分利用网络中的内存和磁盘资源,形成一个实时的数据网格(data fabric or grid)。

fbc81db625641f9f12565ed0fe3c06ca.png

GemFire的主要特性有:

Ø  多种网络拓扑

Ø  高并发的内存数据结构,避免锁争夺

Ø  可选的ACID

Ø  序列化(native serialization)和智能缓冲(smart buffering)保证消息快速分发

Ø  同步或异步写磁盘

Ø  冗余内存拷贝

2网络拓扑和缓存架构

考虑到问题多样性和架构灵活性,GemFire提供了多种选项来配置在哪(where)以及怎样(how)管理缓存数据,这就使架构师能够从P2P(peer-to-peer)、CS(client-server)、WAN三种组件构建出合适的缓存架构。

2.1 P2P拓扑

在P2P分布式系统中,应用程序使用GemFire的镜像(mirroring)功能来将大量数据跨结点分区(sharding)以及在这些结点间进行数据复制同步。下面主要讲一下GemFire的P2P拓扑中的两个主要角色:mirrored镜像结点和partitioned分区结点(具体见3.2中mirror-type的配置方式)。

因为在P2P拓扑中缓存数据与应用在一起,所以首先说一下嵌入式缓存。所谓嵌入式缓存(embedded cache)其实就是说缓存和应用程序在一起,直接利用应用服务器的内存空间。也就是我们常说的类似Ehcache的那种本地缓存(local cache)。

6a14e85f4208fe529cbaab495fab9f98.png

mirrored结点就像一块磁铁一样,将其他数据区域的数据都吸附过来,形成一块完整的数据集合。当一块数据区域被配置为mirrored的结点第一次新建或重建时,GemFire将自动执行初始镜像抓取(initial image fetch)操作,从其他结点的数据子集中还原出完整的状态。如果此时网络中存在另一个mirrored结点,那么将会执行最优直接抓取(optimal directed fetch)。

792becb5daa9bcb7cc9c12e14d28b2fa.png

所以我们很容易看出,mirrored结点主要出于两种目的:

Ø  对于大量读的应用,应用程序通过保存全量数据,使客户端请求可以即时访问到想要数据,而无需经过网络传输

Ø  当发生故障时,mirrored结点可以用来恢复其他结点

不同于mirrored结点,每个partitioned结点都持有唯一的一块数据。应用程序就像操作本地数据一样,GemFire在幕后管理各个分区的数据,并且保证在至多一跳内(at most one network hop)完成数据访问。根据GemFire的哈希算法,分区数据会被自动放入到各个结点的bucket中。同时GemFire也会自动分配出冗余数据的位置并进行复制。当某个结点出错时,客户端请求会自动被重定向到备份结点。并且GemFire会重新复制出一份数据,从而保证数据的冗余拷贝数。最后,我们可以随时向网络中加入新的结点来对GemFire集群进行动态扩容。

2e97fe133e13ab86b39496f78b3e5049.png

P2P系统提供了低延迟、单跳(one-hop)数据访问、动态发现以及透明化的数据存储位置。但是,网络中的每个结点都要维持一个socket连接到其他每个结点。当结点增多时,连接数将成指数级增长。为了提高扩展性,GemFire提供了一种可靠的UDP多播的通信方式。在下一节中我们将看到,P2P数据同步在服务器间复制数据时的作用。

2.2 Client-Server拓扑

Client-Server缓存允许大量结点相连形成客户端-服务器结构。服务器即为客户端提供缓存,也可以为其他服务器提供数据复制或缓存。

8307c60d7850a59114edbae6401b566b.png

2.3 WAN拓扑

P2P集群由于点和点之间的紧耦合而产生了扩展性问题,这种问题在数据中心有多个集群或数据中心跨城市时被放大。GemFire提供另一种模型来解决。

706c0e0d30217bb73f959d687d7e09eb.png

3 GemFire工作原理

3.1发现机制

默认GemFire使用IP多播来发现新成员,然而所有成员间的通信都采用TCP。对于部署环境禁止使用IP多播或者网络跨越多个子网时,GemFire提供备用方法:使用轻量级的定位服务器(locator server)来追踪所有成员的连接。新成员加入集群时,将询问定位服务并建立类似于IP多播的socket到socket的TCP连接。

3.2数据分发

每个成员都会创建一个或多个缓存数据区域(data region),通过区域的划分,我们能给每个区域配置不同的分发属性、内存管理以及数据一致性模型。默认GemFire使用P2P分发模型,每个成员都能和其他任何成员通信。同时根据不同的内网特点,传输层可选TCP/IP或可靠多播(UDP)。在这些配置中,有两个属性很重要,范围(scope)和镜像类型(mirror-type)。

首先,范围(scope)有四种选项:

Ø  Local:不分发。那为什么不直接保存到HashMap中。因为GemFire额外提供了数据自动持久化到磁盘、OQL(Object Query Language)查询数据、数据操作的事务等特性。

Ø  Distribute-no-ack:发送数据给成员1,在发送数据给成员2时不等待成员1的响应。适用于对数据一致性要求不高,并要求低网络延迟的情况。这是GemFire的默认配置,能够提供低延迟、高吞吐,并通过尽快分发来降低数据冲突的概率。

Ø  Distribute-ack:在发送给成员2前,发送数据并等待成员1的响应。这样每条数据都是同步分发的。

Ø  Global:分发前在其他成员上获得锁,再分发数据。适用于悲观的应用场景,通过全局锁服务来管理锁的获得、释放和超时。

9d745fe43ee4a2700361332bb01c4531.png

现在来看一下第二个重要的配置属性镜像类型(mirror-type):

Ø  none:仅当缓存中有此数据时才更新,任何其他成员发来的新数据都会被忽略掉。适用于某一数据区域仅用来保存另一区域数据的子集。

Ø  keys:数据区域仅保存key来节约内存,当真正有请求时再从其他区域抓取数据并保存到本地,之后接受对此数据项的更新。适用于无法预测哪些数据会被某一结点访问的情况。

Ø  keys-values:真正的镜像,将保存全量数据。适用于需要立即访问所有数据的结点,以及数据冗余备份。

这两个属性的配置对数据区域中保存的是什么数据有很大影响:

293b3e02d560a7da18e8ab731174ab99.png

4持久化和溢出

持久化(persistence)将整个数据集拷贝到磁盘,当成员出错时可以用来还原数据。而溢出(overflow)保存key在内存中而value保存到磁盘,达到节省内存的目的。两者既可以单独使用,也可以混合使用。

4.1持久化

GemFire支持两种写磁盘选项:操作内存数据时同步写,或者固定间隔异步写。后一种只当应用在出错时能够容忍不完整的数据还原时使用。

b67fd1710a0021451f7efe684bfebf03.png

4.2溢出

当内存不足时,GemFire使用LRU策略来决定是否对某个数据项溢出。

2611734811e11891546944775de292cc.png

4.3混合使用

持久化与溢出可以混合使用。所有key-value都备份到磁盘,并且当内存不足时,只保留最近使用过的数据。由于LRU而被移除到磁盘的value不会对磁盘有影响,因为所有数据已被持久化到磁盘上了。

290cde49d786f337aad6bca5603153cd.png

5事务

GemFire支持缓存事务与JTA事务两种。

5.1缓存事务

每个事务都有其私有的工作区域。事务开始时,数据将被拷贝到私有区域,直到事务提交。若提交时没有冲突,则数据从私有区域拷贝回原区域。这样事务就可以并发地修改缓存了。

3096a024acb89b3f916a65beafac7bf7.png

对于范围(scope)配置为local的缓存数据区域,事务提交后就算是完成了。但对于分布式(scope=distributed-no-ack or distributed-ack),则在事务提交时要进行缓存同步。

6查询

(待补充:OOL)

7数据可用性和Failover

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

混合云关键技术能力和发展趋势

来源:IDC圈为满足成本、按需、隐私、合规、避免供应商锁定等目的,企业常常会采用多个公有云或私有云,这会造成基础设施资源池多样化,还要面临同时管理物理机、虚拟化等异构资源环境。多云管理由于面临同时管理物理机、虚拟化等异构…

文字竖着写怎么设置_微信置顶文字怎么设置 微信置顶文字的方法介绍|微信|置顶软硬件资讯川北在线...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都会有分享,都是免费订阅,请您放心关注。注:本文转载自网络,不代表本平台立场,仅供…

DOM查找元素的方法总结

按HTML查找:优点:范围可大可小,可设置条件;包括五种方式:1.按id查找;2.按标签名查找:var elems parent.getElementsByTagName();3.按name属性查找:要回传给服务器的元素需要name属性…

2019 NLP大全:论文、博客、教程、工程进展全梳理(长文预警)

来源:机器学习研究会订阅号在整个2019年,NLP领域都沉淀了哪些东西?有没有什么是你错过的?如果觉得自己梳理太费时,不妨看一下本文作者整理的结果。2019 年对自然语言处理(NLP)来说是令人印象深刻…

collection集合 地址_java集合系列(5)LinkedList

这篇文章开始介绍LinkList。他和ArrayList有一些相似,在上一篇文章讲解 ArrayList时,我们知道ArrayList是以数组实现,它的优势是查询性能高,劣势是按顺序增删性能差。如果在不确定元素数量的情况时,不建议使用ArrayLis…

meanshift算法 java_Meanshift,聚类算法

记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流。Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏…

python 数据分析 电信_实例 | 教你用Python写一个电信客户流失预测模型

原标题:实例 | 教你用Python写一个电信客户流失预测模型CDA数据分析师 出品 作者:真达、Mika 数据:真达 【导读】 今天教大家如何用Python写一个电信用户流失预测模型。公众号后台,回复关键字“电信”获取完整数据。 之前我们用Py…

人机融合智能与深度态势感知

来源:人机与认知实验室【“常无欲以观其妙,常有欲以观其徼。”,意思是身处物外可以以旁观者的身份来看待事物,身处事内则要考虑各种极限。】0 引言伴随着深度学习[1]、强化学习[2]等新一代人工智能技术的发展,智能化已…

java大数模板_java大数模板

这几天做了几道用大数的题,发现java来做大数运算十分方便。对acmer来说是十分实用的1.valueOf(parament); 将参数转换为制定的类型比如 int a3;BigInteger bBigInteger.valueOf(a);则b3;String s”12345”;BigInteger cBigInteger.valueOf(s);则c12345;2…

20162317 2016-2017-2 《程序设计与数据结构》第8周学习总结

20162317 2016-2017-2 《程序设计与数据结构》第8周学习总结 教材学习内容总结 1.异常的定义(中断正常指令的事件) 2.异常的特点(异常是对象) 3.异常的分类(CheckedExcception 和 UncheckedException) 4.异…

sql return的用法_【实用技能】Seacms 8.7版本SQL注入分析

有些小伙伴刚刚接触SQL编程,对SQL注入表示不太了解。其实在Web攻防中,SQL注入就是一个技能繁杂项,为了帮助大家能更好的理解和掌握,今天小编将要跟大家分享一下关于Seacms 8.7版本SQL注入分析的内容,一定要认真学习哦。…

国科大UCAS胡包钢教授《信息论与机器学习》课程第二讲:信息论基础一

来源:专知信息论中最为基本的概念就是香农熵(第8页),由此可以导出信息论中其它各种定义,以至我们常规应用的其它经验式定义(以后会提到)。学习信息论基础知识时要避免仅是概念与定义的简单记忆&…

通讯录分组名称大全简单_公司起名取名:建筑公司名称大全简单大气

阅读本文前,请您先点击上面的“蓝色字体”再点击关注,这样您就可以继续免费收取到文章了,每天都有分享,完全是免费订阅,请放心关注。时代在变迁,人们的生活节奏在加快,各类楼盘高低错落&#xf…

美国发布《量子网络战略愿景》

来源:国防科技要闻背景探索如何建立量子网络将促进新兴技术的发展,从而加速当前互联网的发展,提高通信的安全性,并大幅推动计算技术的进步。美国将利用其在量子网络领域的领先地位,加速在国家和金融安全、病人隐私、药…

Jürgen Schmidhuber眼中的深度学习十年,以及下一个十年展望

大数据文摘出品来源:Medium作者:Jrgen Schmidhuber编译:张秋玥、马莉2020年是充满科幻的一年,曾经我们畅想飞行汽车、智能洗碗机器人以及能自动写代码的程序,然而这一切都没有发生。2020迎接我们的是澳洲大火、新冠病毒…

docker pidfile_Zabbix5监控Docker

zabbix_agent配置Zabbix 监控Docker 时 agent 需要使用 zabbix_agent2,而不是zabbix_agent主要模式时配置如下:[rootlocalhost#] cat /etc/zabbix/zabbix_agent2.conf |grep -v ^#|grep -v ^$ PidFile/var/run/zabbix/zabbix_agent2.pidLogFile/var/log…

Gartner:2020 年 AI 平台魔力象限:意外多多

来源:云头条众多企业决策者向市场研究公司Gartner寻求企业软件堆栈方面的建议。魔力象限报告是Gartner发布的最可信、最真实、最权威的研究报告之一。由于它影响企业的采购决策,因此诸多供应商竭力想在报告中占有一席之地。Gartner最近发布了数据科学和机…

CentOS6.9编译安装LNMP环境

CentOS6.9编译安装LNMP环境 今天尝试一下用编译的方式来搭建lnmp运行环境。所有软件都采用当前最新版本,除了CentOS。这是由于目前企业大多数应该都还在使用CentOS6的缘故,并且CentOS7目前还在迭代中。虽说不会有大的改动,但也算不上完全稳定…

生物,AI,心理:目前的大脑/认知/意识/AGI/DRL模型

来源:人工智能前沿讲习一 基于生物和经验的模型首先是 2012 年的 Spaun,基于生物基础(脑图谱),类生物神经元(尖峰放电 SNN)。在训练后可完成多种识别和生成和反应任务。map the visual hierar…