【서문】
데이터가 일정 양에 도달하면 데이터베이스가 전체 시스템의 병목 현상이 되며, 최적화 전략은 일반적으로 읽기와 쓰기 분리로 채택되며, 데이터베이스는 메인 데이터베이스를 데이터베이스에서 분리하여 읽기와 쓰기 분리를 실현합니다(메인 데이터베이스에서 쓰기 요청 작업, 데이터베이스에서 읽기 요청 작업);
【데이터 지연 해결 아이디어】
1. 마스터-슬레이브 동기화 원리(여기서 가장 인기 있는 MySQL을 예로 들자)
다음은 binlog를 통한 고전적인 MySQL 마스터-슬레이브 데이터 동기화의 회로도입니다:
2. 문제는 어떻게 발생하는가?
1. 위 회로도에서 마스터-슬레이브 동기화에는 일정한 지연이 있으며, 이는 지연 크기에 영향을 미친다는 것을 쉽게 알 수 있습니다:
(1) 지연의 크기는 마지막 동기화부터 현재까지 생성된 데이터의 양에 따라 달라집니다
(2) 서버 간 현재 네트워크 상황
(3) 마스터-슬레이브 서버 자체의 압력(CPU, 메모리, IO 등)
2. 데이터베이스 서비스는 일반적으로 인트라넷에 위치하며, 서버는 구매 시 실제 필요 수준보다 더 높은 구성에 위치하기 때문에 동기화가 기본적으로 매우 빠르며, 일반적으로 밀리초 단위입니다;
3. 일반적인 비즈니스 시나리오에서는 밀리초 지연을 무시할 수 있습니다;
4. 일반적인 경우와 특수한 경우가 있으며, 일부 특수 상황은 실시간 밀리초 시차가 필요합니다. 이러한 특별한 상황에 대한 일반적인 해결책을 소개합니다.
3. 데이터 지연 시간 해결책:
1. 스킴 1: 프로그램 더블 작성(메인 데이터베이스를 쓰고 동시에 데이터베이스를 읽음)
2. 계획 2: 프로그램을 읽어 메인 데이터베이스를 확인한다
3. 방식 3: 메인 데이터베이스를 쓰고 캐시를 쓰기(일반적으로 데이터베이스 동기화의 최대 지연보다 약간 더 긴 만료 시간을 설정), 프로그램을 읽고, 캐시를 읽고, 슬레이브 데이터베이스를 읽습니다
4. 세 가지 방식의 장단점:
1. 스킴 1: 이중 쓰기는 일정 수준의 성능을 소모하는데, 이는 구현이 비교적 간단하고 고동시 쓰기 시나리오에는 적합하지 않습니다;
2. 방식 2: 읽기 프로그램은 메인 라이브러리의 성능에 영향을 미치며, 이는 구현이 비교적 간단하고 고동시 읽기 상황에는 적합하지 않습니다.
3. 방식 3: 대부분의 경우, 읽기와 쓰기가 쓰기 성능을 더 많이 소모하여 구현이 더 복잡하고, 높은 동시 읽기와 쓰기 모두에 적합합니다(캐시 읽기와 쓰기가 매우 빠릅니다);
【요약】
1. 실행이 중요하지만, 더 중요한 것은 아이디어입니다;
2. 많은 근본 원칙과 아이디어가 보편적이다 원문 언어:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|