ES 데이터 동기화 방식

비즈니스 볼륨이 때문에 능력 MySQL의 전체 텍스트 검색 또는 퍼지 쿼리 지원, 증가하는 경우 SQL은 종종 성능 저하의 결과로, 다른 시스템 모듈을 아래로 드래그, 느린 표시 등 시스템의 지역 조회는 강하지 않다.

ES를 사용의 증가 인기와 함께, ES는 효과적인 보완 mysql을합니다. 우리는 검색 엔진에 의해 전문적인 서비스를 제공하기 위해 (예 : ES 등) 검색 엔진에 데이터를 보낼 수 있습니다.

다음 장면은 일부 분석가 ES 동기화 MySQL에서 데이터의 실제 사용과 함께 작동합니다.

실제로, 나는 다음과 같은 방법으로 요약.

항목 1 : 동기식 듀얼 쓰기

데이터를 MySQL의에 기록 될 때 데이터가 ES, 이중 쓰기 데이터에 기록되는 동안이, 가장 간단한 방법 중 하나입니다.

장점 :

비즈니스 논리는 간단하다.

단점 :

하드가 구분 : 당신이 쓰기 ES에 코드를 추가 할 필요가 쓰기 MySQL의 장소의 필요성을, 비즈니스 강력한 결합, 이중 오류 데이터 손실의 위험이, 성능 저하 : 원래의 MySQL의 성능이 매우 높은 아니라, 플러스 쓰기 ES는, 시스템 성능은 불가피하게 떨어질 수 밖에 없다. 설명 :

세 가지를 다음과 같은 오류가 언급 한 이중 위험, 위의 포인트 3 :

ES 시스템을 사용할 수 없습니다, 시스템을 다시 시작 응용 프로그램, 너무 늦게 ES 시스템 등을 초래, 네트워크 응용 프로그램 및 ES 사이에 오류가 발생했습니다. 이 상황의 관점에서, 거기, 당신이 처리 할 일을 넣어 두 개를 사용해야합니다 강력한 데이터 일관성 요구 사항이 있지만 상황이 지출 한 번, 성능이 더 눈에 띄는 드롭.

제 2 호 : 비동기 듀얼 쓰기 (MQ 방식)

첫 번째 듀얼 쓰기 성능 및 데이터 손실 문제를 동기화를 들어, 다음과 같이 이중 쓰기 비동기 프로토콜을 형성의 MQ의 도입을 고려 :

MQ MySQL의 성능보다 상당히 더 크기 순서 때문에 성능이 크게 향상 될 수있다.

장점 :

고성능, 데이터 손실 문제가되지 않습니다. 단점 :

하드 문제를 코딩 : 트래픽 강도이 지속 커플 링 : 여전히 증가하는 복잡성 : 시스템은 MQ 코드를 추가, 지연 문제가있을 수 있습니다 : 프로그램의 쓰기 성능이 향상되지만 인해 MQ 네트워크 또는 다른 이유로 인해 소비 될 수있다 사용자의 데이터를 일으키는 것은 반드시 지연의 원인이 바로 볼 수 기록되지 않습니다. 제 3 호 : 비동기 듀얼 쓰기 (근무 방법)

이 개 솔루션 위가 너무 침습적 mysq CRUD 이식 ES의 코드가 될 수있는 일이 즉, 문제가있는 하드 코딩하거나, 코드를 MQ 코드를 대체됩니다.

적은 실시간을 요구하는 경우는, 타이머, 다음 단계를 처리하는 것으로 간주 될 수있는 경우 :

데이터베이스에서 관련 테이블 필드의 시간의 변화가 발생합니다 모든 CRUD 작업을 필드에 대한 타임 스탬프 필드를 추가, 원래 CURD 작업 프로그램을 변경하지 않고 (내부 Jingdong 노동자라는) 타이머 프로그램을 추가, 그래서 그 프로그램 표에 지정된 일정 기간,주기 변화의 데이터가 추출된다 스캔 상기 ES 기입 하나씩. 아래 표에

장점 :

더 강한 커플 링 작업; 코드는 원래의 침략하지,하지 하드 코드를 변경하지 않는 성능을 원래의 프로그램을 변경하지 않고, 필요 노동자 CRUD 코딩 간단한을 고려 없습니다. 단점 :

데이터베이스 특정 압력, 개선 된 방법은 심한 압박하는 폴링 폴링하지 없다; 효성은 두 번째 단계에서 제공되는 타이머는, 상기 2 실시간 좋은 때문에 듀티 사이클이 불가능 나쁘고 라이브러리. 넷째 : 바이너리 로그 동기화 :

위의 세 가지 프로그램 코드 또는 침입을 가지고 하나 하드 코딩 또는 제 4 실시 형태의 지연을 가지고, 동기화 바이너리 로그 MySQL을 위해 이용 될 수있다

다음과 같이 구체적인 단계는 다음과 같습니다

1) 기록 판독 바이너리 로그 취득 MySQL의 특정 테이블의 이력 정보;

2) 정보는 MQ에 판독;

3) MQ 소비자 프로그램의 제조;

4) MQ, 메시지 당 전체 소비를 계속 소비, 메시지는 ES에 기록됩니다.

장점 :

코드 번호 침공은, 어떤 하드 코딩, 변경을 필요로하지 않는 레거시 시스템은 더가 인식되지, 높은 성능, 분리 된 서비스가 서비스 로직 필요가 원래 시스템의 걱정하지. 단점 :

바이너리 로그 시스템의 복잡성 건설, 또한 옵션 II와 같은 지연 MQ의 위험이

추천

출처www.cnblogs.com/zeenzhou/p/12125634.html