0

0

分布式缓存GemFire架构介绍

php中文网

php中文网

发布时间:2016-06-07 16:10:38

|

2629人浏览过

|

来源于php中文网

原创

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

1什么是GemFire

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

\

喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD5HZW1GaXJltcTW99KqzNjQ1NPQo7o8L3A+PHA+PyAgtuDW1s34wufN2MbLPC9wPjxwPj8gILjfsqK3orXExNq05sr9vt294bm5o6yx3MPiy/jV+bbhPC9wPjxwPj8gIL/J0aG1xEFDSUQ8L3A+PHA+PyAg0PLB0LuvKG5hdGl2ZSBzZXJpYWxpemF0aW9uKbrN1sfE3Lu6s+Uoc21hcnQgYnVmZmVyaW5nKbGj1qTP+8+iv+zL2bfWt6I8L3A+PHA+PyAgzayyvbvy0uyyvdC0tMXFzDwvcD48cD4/ICDI39PgxNq05r+9sbQ8L3A+PGgyPjLN+MLnzdjGy7rNu7q05rzcubk8L2gyPjxwPr+8wse1vc7KzOK24NH50NS6zbzcubnB6bvu0NSjrEdlbUZpcmXM4bmpwcu24NbW0aHP7sC0xeTWw9TaxMQod2hlcmUp0tS8sNT10fkoaG93KbncwO27urTmyv2+3aOs1eK+zcq5vNy5ucqmxNy5u7TTUDJQKHBlZXItdG8tcGVlcimhokNTKGNsaWVudC1zZXJ2ZXIpoaJXQU7I/dbW1+m8/rm5vaiz9rrPysq1xLu6tOa83Lm5oaM8L3A+PGgzPjIuMSBQMlDN2MbLPC9oMz48cD7U2lAyULfWsrzKvc+1zbPW0KOs06bTw7PM0PLKudPDR2VtRmlyZbXEvrXP8ShtaXJyb3JpbmcpuabE3MC0vau088G/yv2+3b/nveG147fWx/goc2hhcmRpbmcp0tS8sNTa1eLQqb3hteO85L340NDK/b7duLTWxs2ssr2ho8/Cw+bW99KqvbLSu8/CR2VtRmlyZbXEUDJQzdjGy9bQtcTBvbj21vfSqr3HyaujujxzdHJvbmc+bWlycm9yZWS+tc/xveG147rNcGFydGl0aW9uZWS31sf4veG14zwvc3Ryb25nPii+38zlvPszLjLW0G1pcnJvci10eXBltcTF5NbDt73KvSmhozwvcD48cD7S8s6q1NpQMlDN2MbL1tC7urTmyv2+3dPr06bTw9Ta0rvG8KOsy/nS1MrXz8jLtdK7z8LHtsjryr27urTmoaPL+c69x7bI68q9u7q05ihlbWJlZGRlZCBjYWNoZSnG5Mq1vs3Kx8u1u7q05rrN06bTw7PM0PLU2tK7xvCjrNaxvdPA+9PD06bTw7f+zvHG97XExNq05r/VvOSho9Kyvs3Kx87Sw8ezo8u1tcTA4MvGRWhjYWNoZbXExMfW1rG+tdi7urTmKGxvY2FsIGNhY2hlKaGjPC9wPjxwIGFsaWduPQ=="center">\

citySHOP 多用户商城
citySHOP 多用户商城

citySHOP是一款集CMS、网店、商品、系统,管理更加科学快速;全新Jquery前端引擎;智能缓存、图表化的数据分析,手机短信营销;各种礼包设置、搭配购买、关联等进一步加强用户体验;任何功能及设置都高度自定义;MVC架构模式,代码严禁、规范;商品推荐、促销、礼包、折扣、换购等多种设置模式;商品五级分类,可自由设置分类属性;商品展示页简介大方,清晰,图片自动放大,无需重开页面;商品评价、咨询分开

下载

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

\

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

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

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

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

\

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

2.2 Client-Server拓扑

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

\

2.3 WAN拓扑

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

\

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

\

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

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

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

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

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

\

4持久化和溢出

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

4.1持久化

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

\

4.2溢出

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

\

4.3混合使用

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

\

5事务

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

5.1缓存事务

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


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

6查询

(待补充:OOL)

7数据可用性和Failover

(待补充)

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java 微服务与 Spring Cloud 实战
Java 微服务与 Spring Cloud 实战

本专题讲解 Java 微服务架构的开发与实践,重点使用 Spring Cloud 实现服务注册与发现、负载均衡、熔断与限流、分布式配置管理、API Gateway 和消息队列。通过实际项目案例,帮助开发者理解 如何将传统单体应用拆分为高可用、可扩展的微服务架构,并有效管理和调度分布式系统中的各个组件。

0

2026.02.05

C++ 多线程编程与线程池设计
C++ 多线程编程与线程池设计

本专题深入讲解 C++ 中的多线程编程与线程池设计,涵盖 C++11/14/17 的线程库、线程同步机制(mutex、condition_variable、atomic)、线程池设计模式、任务调度与优化、并发瓶颈分析与解决方案。通过多个实际案例,帮助开发者掌握 如何设计高效的线程池管理系统,提升 C++ 程序在高并发场景下的性能与稳定性。

0

2026.02.05

微信网页版文件传输助手教程合集
微信网页版文件传输助手教程合集

本专题整合了微信网页版文件传输助手教程、入口等等内容,阅读专题下面的文章了解更多详细内容。

15

2026.02.04

微信文件过期恢复教程
微信文件过期恢复教程

本专题整合了微信文件过期恢复方法、技巧教程,阅读专题下面的文章了解更多详细内容。

10

2026.02.04

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

95

2026.02.04

学习通网页版入口与在线学习指南 学习通官网登录与使用方法
学习通网页版入口与在线学习指南 学习通官网登录与使用方法

本专题详细汇总了学习通网页版入口与登录方法,提供学习通官方网页端入口、学生登录平台、网页版使用指南等内容,帮助用户快速稳定地登录学习通官网,顺利进入学习平台,提升学习效率和体验。

17

2026.02.04

Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

13

2026.02.04

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

6

2026.02.04

Golang 容器化与 Docker 实战
Golang 容器化与 Docker 实战

本专题深入讲解 Golang 应用的容器化与 Docker 部署,涵盖 Docker 基础概念、容器构建与镜像管理、Go 应用的 Dockerfile 编写、跨平台容器部署与优化、Docker Compose 和 Kubernetes 部署工具。通过实际案例,帮助学习者掌握 如何将 Golang 应用容器化并实现高效部署与管理,提升系统的可扩展性与运维效率。

7

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5.2万人学习

Git 教程
Git 教程

共21课时 | 3.3万人学习

Excel 教程
Excel 教程

共162课时 | 15.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号