分布式缓存GemFire架构介绍
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">
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 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











DNS(DomainNameSystem)는 인터넷에서 도메인 이름을 해당 IP 주소로 변환하는 데 사용되는 시스템입니다. Linux 시스템에서 DNS 캐싱은 도메인 이름과 IP 주소 간의 매핑 관계를 로컬로 저장하는 메커니즘으로, 도메인 이름 확인 속도를 높이고 DNS 서버의 부담을 줄일 수 있습니다. DNS 캐싱을 사용하면 시스템이 매번 DNS 서버에 쿼리 요청을 보낼 필요 없이 이후에 동일한 도메인 이름에 액세스할 때 IP 주소를 신속하게 검색할 수 있으므로 네트워크 성능과 효율성이 향상됩니다. 이 문서에서는 Linux에서 DNS 캐시를 보고 새로 고치는 방법과 관련 세부 정보 및 샘플 코드에 대해 설명합니다. DNS 캐싱의 중요성 Linux 시스템에서 DNS 캐싱은 중요한 역할을 합니다. 그 존재

SpringDataJPA는 JPA 아키텍처를 기반으로 하며 매핑, ORM 및 트랜잭션 관리를 통해 데이터베이스와 상호 작용합니다. 해당 리포지토리는 CRUD 작업을 제공하고 파생 쿼리는 데이터베이스 액세스를 단순화합니다. 또한 지연 로딩을 사용하여 필요한 경우에만 데이터를 검색하므로 성능이 향상됩니다.

논문 주소: https://arxiv.org/abs/2307.09283 코드 주소: https://github.com/THU-MIG/RepViTRepViT는 모바일 ViT 아키텍처에서 잘 작동하며 상당한 이점을 보여줍니다. 다음으로, 본 연구의 기여를 살펴보겠습니다. 기사에서는 경량 ViT가 일반적으로 시각적 작업에서 경량 CNN보다 더 나은 성능을 발휘한다고 언급했는데, 그 이유는 주로 모델이 전역 표현을 학습할 수 있는 MSHA(Multi-Head Self-Attention 모듈) 때문입니다. 그러나 경량 ViT와 경량 CNN 간의 아키텍처 차이점은 완전히 연구되지 않았습니다. 본 연구에서 저자는 경량 ViT를 효과적인

Go 프레임워크 아키텍처의 학습 곡선은 Go 언어 및 백엔드 개발에 대한 친숙도와 선택한 프레임워크의 복잡성, 즉 Go 언어의 기본 사항에 대한 올바른 이해에 따라 달라집니다. 백엔드 개발 경험이 있으면 도움이 됩니다. 다양한 복잡성의 프레임워크는 다양한 학습 곡선으로 이어집니다.

Dogecoin은 고정된 공급 한도가 없고, 빠른 거래 시간, 낮은 거래 수수료, 대규모 밈 커뮤니티가 있는 인터넷 밈을 기반으로 만들어진 암호화폐입니다. 용도로는 소액 거래, 팁, 자선 기부 등이 있습니다. 그러나 무제한 공급, 시장 변동성, 조크 코인으로서의 지위 역시 위험과 우려를 불러일으킵니다. 도지코인이란 무엇입니까? Dogecoin은 인터넷 밈과 농담을 기반으로 만들어진 암호화폐입니다. 기원과 역사: Dogecoin은 2013년 12월 두 명의 소프트웨어 엔지니어 Billy Markus와 Jackson Palmer에 의해 만들어졌습니다. 당시 인기 있었던 "Doge" 밈에서 영감을 받아, 영어가 서툰 시바견이 등장하는 코믹한 사진입니다. 특징 및 이점: 무제한 공급: 비트코인과 같은 다른 암호화폐와는 달리

CPU(중앙 처리 장치), 메모리(Random Access Memory), 캐시 사이에는 긴밀한 상호 작용이 있으며, 이들은 함께 컴퓨터 시스템의 중요한 구성 요소를 형성합니다. 이들 간의 조정은 컴퓨터의 정상적인 작동과 효율적인 성능을 보장합니다. CPU는 컴퓨터의 두뇌로서 다양한 명령 실행과 데이터 처리를 담당합니다. 메모리는 데이터와 프로그램을 임시로 저장하여 빠른 읽기 및 쓰기 액세스 속도를 제공하고, 캐시는 버퍼링 역할을 하여 데이터 액세스 속도를 높입니다. 속도와 향상 컴퓨터의 CPU는 컴퓨터의 핵심 구성요소로 각종 명령, 산술연산, 논리연산 등을 수행하는 역할을 담당합니다. 컴퓨터의 '브레인'이라 불리며, 데이터를 처리하고 작업을 수행하는 데 중요한 역할을 합니다. 메모리는 컴퓨터에서 중요한 저장 장치이다.

1. Llama3의 아키텍처 이 기사 시리즈에서는 llama3을 처음부터 구현합니다. Llama3의 전체 아키텍처: Llama3의 모델 매개변수 그림: Llama3 모델에서 이러한 매개변수의 실제 값을 살펴보겠습니다. 그림 [1] 컨텍스트 윈도우(context-window) LlaMa 클래스를 인스턴스화할 때 max_seq_len 변수는 context-window를 정의한다. 클래스에는 다른 매개변수도 있지만 이 매개변수는 변환기 모델과 가장 직접적으로 관련됩니다. 여기서 max_seq_len은 8K입니다. 그림 [2] 어휘의 크기와 주의력L

PHP 개발에서 캐싱 메커니즘은 자주 액세스하는 데이터를 메모리나 디스크에 임시 저장하여 데이터베이스 액세스 횟수를 줄여 성능을 향상시킵니다. 캐시 유형에는 주로 메모리, 파일 및 데이터베이스 캐시가 포함됩니다. 캐싱은 내장 함수나 캐시_get() 및 Memcache와 같은 타사 라이브러리를 사용하여 PHP에서 구현할 수 있습니다. 일반적인 실제 응용 프로그램에는 쿼리 성능을 최적화하기 위한 데이터베이스 쿼리 결과 캐싱과 렌더링 속도를 높이기 위한 페이지 출력 캐싱이 포함됩니다. 캐싱 메커니즘은 웹사이트 응답 속도를 효과적으로 향상시키고, 사용자 경험을 향상시키며, 서버 부하를 줄입니다.
