|
|
2024-3-28 18:00:42에 게시됨
|
|
|
|

가넷은 마이크로소프트 리서치에서 개발한 새로운 유형의 원격 캐시 저장소로, 여러 가지 독특한 이점을 제공합니다:
- 가넷은 인기 있는 RESP 라인 프로토콜을 출발점으로 삼아, 오늘날 대부분의 프로그래밍 언어에서 사용 가능한 수정되지 않은 Redis 클라이언트(예: C#의 StackExchange.Redis)에서 가넷을 사용할 수 있게 합니다.
- 가넷은 동급 오픈 소스 캐시 스토리지에 비해 많은 클라이언트 연결과 소규모 배치로 더 나은 처리량과 확장성을 제공하여 대규모 애플리케이션과 서비스의 비용을 절감합니다.
- 가넷은 가속 TCP가 활성화된 Commodity Cloud(Azure) VM을 사용해 매우 낮은 클라이언트 지연(일반적으로 300마이크로초 미만, 99.9%)을 보여주었는데, 이는 실제 상황에서 매우 중요합니다.
- Garnet은 최신 .NET 기술을 기반으로 하며, 크로스 플랫폼, 확장 가능, 현대적입니다. 일반적인 상황에서 성능을 희생하지 않으면서 쉽게 개발하고 진화할 수 있도록 설계되었습니다. 우리는 .NET의 풍부한 라이브러리 생태계를 활용해 API를 확장하고 오픈 최적화 기회를 제공합니다. .NET을 신중하게 활용한 덕분에 Garnet은 리눅스와 윈도우 모두에서 최첨단 성능을 달성합니다.
오픈 소스 주소:하이퍼링크 로그인이 보입니다. 문서조사:하이퍼링크 로그인이 보입니다.
가넷은 다음과 같은 주요 이점을 가지고 있습니다:
- 서버 처리량(초당 연산수)은 소규모 배치와 많은 클라이언트 세션에서 유사한 오픈 소스 캐시 저장소에 비해 수십 배 증가합니다.
- Windows와 Linux에서 가속 TCP가 활성화된 상품 클라우드(Azure) 기기에서는 작업당 지연 시간이 매우 낮습니다(일반적으로 99.9%에서 300마이크로초 미만).
- 클라이언트 수가 증가할수록 클라이언트 배치 유무에 따라 더 나은 확장성을 달성합니다.
- 서버 컴퓨터의 모든 CPU/메모리 자원을 단일 공유 메모리 서버 인스턴스를 통해 사용할 수 있는 능력(노드 내 클러스터링 불필요).
- 온프레미스 및 클라우드 스토리지 장치로 오버플로우되는 메모리 이상의 대규모 데이터셋 지원.
- 빠른 체크포인트, 복구, 게시/구독과 같은 데이터베이스 기능.
- 다중 노드 샤드 해시 파티셔닝(Redis "클러스터" 모드), 상태 마이그레이션 및 복제 지원.
- Garnet과 그 저장 계층인 Tsavorite에 대한 수천 건의 유닛 테스트 포함 종합 테스트 스위트로 잘 테스트되었습니다.
- 진화와 확장이 쉬운 C# 코드베이스입니다.
Garnet은 모든 Redis 명령어를 지원하지 않으며, 특히 다음을 볼 수 있는 명령을 지원합니다:하이퍼링크 로그인이 보입니다. Garnet 프로젝트에는 다양한 클라이언트, 다양한 워크로드, 정책을 사용하여 처리량, 성능, 지연 시간을 측정하는 RESP 벤치마크 벤치마크 도구를 포함하고 있습니다. 주소:하이퍼링크 로그인이 보입니다. RESP 프로토콜:하이퍼링크 로그인이 보입니다.
이 글은 간단한 테스트를 위해 Redis의 내장 벤치마킹 도구를 사용하며, 테스트 환경은 다음과 같습니다:
| 캐시 | 버전 | | 레디스 | Redis 3.0.504 (0000000/0) 64비트 | | 석류 석 | 가넷 1.0.2 64비트; 독립형 모드 |
Redis 벤치마크
먼저, 명령줄을 사용하여 다음 명령어로 Redis 캐시를 실행하세요:
테스트 명령어는 다음과 같습니다:
결과는 다음과 같습니다:
====== ====== 50만 건의 요청이 24.38초 만에 완료됨 100개의 병렬 클라이언트 3바이트 페이로드 생존 유지: 1
0.03% <= 1밀리초 0.25% <= 2밀리초 2.65% <= 3밀리초 16.49% <= 4밀리초 59.95% <= 5밀리초 99.09% <= 6밀리초 99.76% <= 7밀리초 99.86% <= 8밀리초 99.93% <= 9밀리초 99.98% <= 10밀리초 99.99% <= 11밀리초 100.00% <= 12밀리초 초당 20512.82 요청
====== ====== 50만 건의 요청이 27.41초 만에 완료됨 100개의 병렬 클라이언트 3바이트 페이로드 생존 유지: 1
0.03% <= 1밀리초 0.19% <= 2밀리초 6.44% <= 3밀리초 25.82% <= 4밀리초 45.65% <= 5밀리초 98.79% <= 6밀리초 99.98% <= 7밀리초 99.98% <= 8밀리초 99.98% <= 9밀리초 100.00% <= 9밀리초 초당 18238.86 요청
가넷 벤치마크
새로운 .NET 8 콘솔 프로젝트를 만들고 다음 명령어로 먼저 Microsoft.Garnet 패키지를 참조하세요:
코드는 다음과 같습니다:
시작 명령은 다음과 같습니다:
같은 벤치마크 명령을 사용하면 결과는 다음과 같습니다:
====== ====== 50만 건의 요청이 11.51초 만에 완료됨 100개의 병렬 클라이언트 3바이트 페이로드 생존 유지: 1
75.51% <= 1밀리초 88.24% <= 2밀리초 92.04% <= 3밀리초 99.46% <= 4밀리초 99.98% <= 5밀리초 99.99% <= 6밀리초 100.00% <= 12밀리초 100.00% <= 12밀리초 초당 43448.04 요청
====== ====== 50만 건의 요청이 31.50초 만에 완료됨 100개의 병렬 클라이언트 3바이트 페이로드 생존 유지: 1
0.01% <= 1밀리초 0.90% <= 2밀리초 27.25% <= 3밀리초 97.65% <= 4밀리초 99.82% <= 5밀리초 99.94% <= 6밀리초 99.98% <= 7밀리초 99.98% <= 9밀리초 99.98% <= 10밀리초 99.99% <= 11밀리초 100.00% <= 12밀리초 100.00% <= 12밀리초 초당 15872.01 요청 테스트 도구, 소프트웨어 버전, 테스트 매개변수 등에 따라 결과가 다르며, 이 테스트들은 참고용일 뿐입니다. 이 글의 간단한 테스트를 통해 Garnet이 Redis보다 지연 시간이 현저히 낮다는 것을 알 수 있습니다.
(끝) |
이전의:.NET/C# 반사 속성으로, null 타입으로 판단할 수 있습니다다음:SSE (1)는 ASP.NET 코어를 SSE 서버로 사용합니다
|