Redis 클러스터 아키텍처와 비교를 살펴보겠습니다.

coldplay.xixi
풀어 주다: 2021-03-12 11:17:05
앞으로
2054명이 탐색했습니다.

Redis 클러스터 아키텍처와 비교를 살펴보겠습니다.

1、Redis3.0

· 이점

a.

중앙 노드 없음

b.

데이터는 슬롯 에 따라 여러 Redis 인스턴스에 저장되고 배포됩니다. c. 노드 축소

/

원활하게 확장 d. 자동 장애 조치(

Gossip 프로토콜을 통해 노드 교환 상태 정보 , 투표 메커니즘이 완료 슬레이브 에서 마스터 역할 승격 )运E 운영 및 유지관리 비용 절감 , 시스템의 확장성과 고가용성을 향상시킵니다(권장(무료): Redis

) a

외부

Redis-Tribb. 의 모니터링 및 관리

c.

스마트 클라이언트(연결 유지 관리 ,

캐시 라우팅 테이블

, MultiOp 파이프라인 에 의존해야 함)

지원

)

d. 장애 조치

노드 감지가 너무 느리고 "중앙 노드 ZooKeep er”timely e. 가십 메시지 오버헤드 f 통계를 기반으로 핫 데이터와 콜드 데이터를 구분할 수 없습니다

g. 읽기 부담을 완화할 수 없는 슬레이브 "콜드 대기" 2、Proxy +Redis Cluster

·Advantages 스마트 클라이언트

: a. 비교 프록시를 사용하므로 네트워크 전송 계층이 더 효율적입니다.

Proxy:

a.

은 기본 저장소를 격리하기 위한 HTTP Restful 인터페이스 세트를 제공합니다. 클라이언트에게 완전히 투명하며 언어 간 호출이 가능합니다.

b. 업그레이드 및 유지 관리가 비교적 쉽습니다. Redis 클러스터를 유지하려면 프록시만 원활하게 업그레이드하면 됩니다.

c. 계층적 스토리지, 기본 스토리지는 핫 및 콜드 이기종 스토리지입니다.

d. 권한 제어, 프록시 는 일부 불법 요청을 필터링하기 위해 비밀 키를 통해 화이트리스트를 제어할 수 있습니다. 또한 사용자가 요청한 초대형 을 제어하고 필터링할 수도 있습니다.

e 보안, Keys, Save, Flush All 등과 같은 일부 위험한 명령을 차단할 수 있습니다.

f. 용량 제어, 다양한 사용자 용량 애플리케이션에 따른 용량 제한.

g. 다른 사용자의 와 리소스를 격리하는 접두사를 기반으로 하는 논리적 리소스 격리.

h. 숨겨진 지점을 모니터링하고, 숨겨진 지점과 다양한 인터페이스에 대한 기타 정보를 모니터링하세요.

· 단점

Smart Client:

a. 클라이언트의 미성숙은 애플리케이션의 안정성에 영향을 미치고 개발의 어려움을 증가시킵니다.

b. MultiOp

Pipeline 은 지원이 제한됩니다.

c.

연결 유지 관리, 클러스터의 각 노드에 연결된 소켓 의 스마트 클라이언트 유지 관리. Proxy

:

a.

프록시 레이어에 전달이 하나 더 있어 성능이 저하됩니다.

b

. 확장

/축소시 운영 및 유지관리 요구사항이 높고 원활한 확장 및 축소가 어렵습니다3,

기술선정redis

공식문서 redis-cli 클러스터 지원은 매우 기본적이므로 Redis 클러스터 노드가 클라이언트를 올바른 노드로 리디렉션할 수 있다는 사실을 항상 사용합니다. 진지한 클라이언트는 그보다 더 나은 작업을 수행할 수 있으며 해시 슬롯과 노드 주소 간의 맵을 캐시합니다. 올바른 노드에 대한 올바른 연결을 직접 사용하려면 클러스터 구성에서 내용이 변경된 경우(예: 장애 조치 후 또는 시스템 관리자가 노드를 추가하거나 제거하여 클러스터 레이아웃을 변경한 경우)에만 맵이 새로 고쳐집니다.

일반적인 개념은 다음과 같습니다. 현재 redis 클러스터

공식 클라이언트는 간단한 기능을 가지고 있으며

redis

노드 리디렉션을 사용하여 데이터가 있는 클러스터에서

redis 인스턴스를 찾습니다. 일관성 hash, failover 및 클러스터 관리 기능을 달성할 수 있는 보다 완전한 클라이언트가 필요합니다. 따라서 공식 redis 클러스터 클라이언트를 사용하는 것은 현명한 선택이 아닙니다. 이 문서에서는 참고할 수 있는 3 솔루션을 제공합니다.

Scheme 1 Usingnginx개발(OpenResty way)

이유는 다음과 같습니다:

싱글 Master 여러 Work 모드, 각 WorkRedis과 동일한 단일 프로세스 단일 스레드 모드이며 둘 다 Epoll 이벤트 기반 모드를 기반으로 합니다.

b. Nginx는 효율적인 비동기 프레임워크인 요청을 처리하는 비동기 및 비차단 방식을 채택합니다.

c. 메모리 사용량이 낮고 자체 메모리 풀 관리 방법이 있습니다. 다수의 소형 메모리 애플리케이션을 함께 모으는 것이 Malloc보다 빠를 수 있습니다. 메모리 조각화를 줄이고 메모리 누수를 방지합니다. 메모리 관리 복잡성을 줄입니다.

d. Nginx 의 액세스 속도를 향상시키기 위해 Nginx 는 자체 연결 풀 세트를 사용합니다.

e.

가장 중요한 것은 맞춤형 모듈 개발을 지원하는 것입니다.

f.

업계에서는 NginxRedis을 두 가지 훌륭한 유물로 간주할 수 있습니다. 성능이 매우 좋습니다.

솔루션 2 codis (Wandoujia에서 채택한 에이전트 기반 redis클러스터 솔루션)

reference

codis 공식문서https://github . com/CodisLabs/codis

Codis

은 고가용성, 데이터 샤딩, 모니터링, 동적 확장을 포함한 완전한 캐싱 솔루션 세트입니다.

Apps->Agent->rediscluster를 사용합니다. 이 방법은 기본적으로 일정 규모 이후에 채택됩니다.

Scheme3 독립적으로 개발된 redis스마트 클라이언트

주로

redis 슬롯관리를 구현합니다. failover , 일관성 hash 기능.

4, Redis 3.0Cluster

Redis 3.0 클러스터는 P2P 모델을 채택하고 완전히 분산되어 있습니다.所有Redis는 모든 Key16384 하나의 Slot으로 나누고 각 Redis 인스턴스는 slot 중 일부를 담당합니다. 클러스터 내 모든 정보(노드, 포트, 슬롯)은 노드 간 정기적인 데이터 교환을 통해 업데이트됩니다. Redis

클라이언트는

Redis 인스턴스에 요청을 보냅니다. 필요한 데이터가 인스턴스에 없으면 리디렉션 명령을 통해 클라이언트를 필요한 인스턴스로 리디렉션합니다. Redis 3.0

클러스터의 워크플로는 아래 그림과 같습니다.

Redis

클러스터의 시스템은 정기적으로 데이터를 교환합니다. 워크플로는 다음과 같습니다.

(

1

) Redis 켜기 Redis2 인스턴스 Redis2에서 발견된

(2)에 액세스합니다. 이 데이터는 Redis3에서 발견되었습니다. Redis 클라이언트 지시 명령; (

3

) Redis클라이언트는 리디렉션된 명령을 받은 후 Redis3 인스턴스에 액세스하여 필요한 데이터를 얻습니다. Redis 3.0

의 클러스터 솔루션에는 다음과 같은 두 가지 문제가 있습니다.

1)

A

Redis 인스턴스에는 "data Storage"이 있습니다. 그리고 " Route Redirect, 완전히 분산된 디자인. 이것의 장점은 배포가 매우 간단하다는 것입니다. 구성 요소와 종속성이 너무 많은 Codis와 달리 Redis을 직접 배포하기만 하면 됩니다. 하지만 문제는 비즈니스를 원활하게 업그레이드하기 어렵다는 것입니다. 어느 날 Redis클러스터에 심각한 Bug이 발생하면 전체 Redis클러스터만 롤백할 수 있습니다. 2) ​​

은 프로토콜을 크게 변경했으며 해당

Redis 클라이언트도 업그레이드해야 합니다. Redis 클라이언트를 업그레이드한 후 Bugs가 없음을 누가 확인할 수 있나요? 그리고 이미 온라인에서 대규모로 운영되고 있는 기업의 경우 코드에서 Redis 클라이언트를 업그레이드하는 것도 매우 귀찮은 일입니다.

5, Redis4.0

(1)모든 redis노드는 서로 연결되어 있습니다(PING-PONG 메커니즘) , 전송 속도와 대역폭을 최적화하기 위해 내부적으로 바이너리 프로토콜이 사용됩니다.

Fail

Fail 클러스터의 노드 중 절반 이상이 오류를 감지한 경우에만 적용됩니다. (3)Customer 터미널은 중간

proxy

레이어가 필요 없이 redis 노드에 직접 연결됩니다. 클라이언트는 클러스터의 모든 노드에 연결할 필요가 없으며 클러스터에서 사용 가능한 노드에 연결하기만 하면 됩니다. (4)redis-cluster모든 물리적 노드를

[0-16383] 슬롯(

슬롯 삽입 ), cluster 노드<->슬롯<->값을 유지하는 역할을 담당합니다.

위 내용은 Redis 클러스터 아키텍처와 비교를 살펴보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿