높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

인터넷은 지급 결제의 금융 시스템의 핵심이며, 지급 결제 시스템의 기본은 계정입니다. 재무 회계 시스템의 특성이 큰, 빠른 응답, 거래의 많은 양의 핫 이슈 뛰어난 계정 복잡하다. 자격을 갖춘 계정 시스템은 상기와 같은 문제점을 해결하기 위하여, 그것은 절대적으로 자금의 안전을 확인해야합니다뿐만 아닙니다. 이 편지는 위의 특성이 있어야 시스템 계정이 회사의 인터넷 지급 결제 센터, 금융해야한다.

첫째, 계정 시스템

1.1 계정 구조

CreditEase 고객의 지급 결제 계정 시스템, 사용자는 3 층 구조, 계정 및 문서 유형 식별 번호는 고유 고객, 고객 번호를 식별하고, 사용자 번호, 다음 사용자가 계정의 다른 유형의 복수를 열 수를 결정하는 것을 의미한다. 도표 :

높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

1.2 계정 등록

계정 시스템 계정의 기초, 모든 작업이 계정 주위 수행, 계정에는 다음과 같은 속성이 포함되어 있습니다 :

높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

  • 계정 : 각 계정 변경의 양이 회계에 일부 회계의 특성을 반영 할 수 있습니다.
  • 계정 유형 : 개인 계정, 기업 계정, 플랫폼 계정으로 구분.
  • 계정 정보 : 계정의 세부 사항은 각 계정 잔액 변경의 세부 사항을 반영하기는 복식 부기의 사용은, 계좌 정보, 초록, 금액 및 기타 정보의 차변 잔액 등이 다른 계정을 포함합니다.
  • 계정 잔액 : 기록을 실시간 계정 잔액.

1.3 계정

계정 계정의 차트의 맨 아래에 걸려에서 회계 계정의 균형의 의미와 변화의 방향을 결정합니다. 다음과 같이 일부 계정 속성 :

높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

  • 주제 분야 : 자산 클래스, 부채, 자본, 비용 범주, 이익과 손실 등등.
  • 주제 레벨 : 계정의 레벨, 하나 개의 계정, 두 과목 세 과목 등등. 상사의 주제에 속하는 하위를 차지한다.
  • 밸런스 방향 : 직불 또는 신용 균형 표시입니다.
  • 주제의 균형을 종료 : 날이 회계의 날에 기본 계정으로 링크 된 모든 계정의 잔액의 합계의 일일 요약을 잘라 것, 더 높은 과정은 하위 주제의 균형을 수집합니다.

1.4 주제 트리

CreditEase 지불 시스템은 각 기관이 대상 트리를 바인딩, 해결의 개념은 주제 트리 계정 사용합니다. 계정 트리 루트는 제목, 주제, 다음과 같은 구조의 맨 아래에있는 계정에 연결되어 있습니다 :

높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

둘째, 시스템 아키텍처 계정

CreditEase 지급 결제 계정 시스템은 레디 스 달성 내부 메시지 큐 통신을 사용하여 각 서비스 간의 외부 HTTP의 JSON 인터페이스를 제공, 분산 마이크로 서비스 회사 자기 개발 프레임 워크를 사용합니다.

2.1 계정 시스템 기능 구조

CreditEase의 지급 결제 계정 액세스 시스템은 서브 시스템, 서브 시스템 계정, 비동기 회계 모듈, 쿼리 서브 시스템, 타이밍 작업 서브 시스템, 하루 엔드 서브 시스템, 비동기 로그 모듈을 차지 모듈로 나누어 져, 회계 시스템도이다. 기능 블록도 :

높은 동시 지급 결제 시스템 계정 및 기타 뜨거운 문제를 처리하는 방법

  • 액세스 모듈 : 입구가 통합 계정 시스템, 메시지 구문 분석, 검사 기호, 매개 변수 교정, 인증 기관 및 기타 공공 서비스를 제공합니다.
  • 유도 로깅 모듈 : 비동기 요청 메시지 기록 서비스 시스템.
  • 회계 서브 시스템 : 회계 요청 핵심 모듈, 처리 시스템 사업 회계 시스템.
  • 계정 서브 시스템 : 서비스 계정 처리 시스템 요구.
    • 계좌를 개설하기 위해 처음으로 : 개인이나 기업이 고객, 사용자와 열 수에 대한 계정을 열려면 기본적으로 사전 구성.
    • 계좌를 개설 지정 : 개인 또는 비즈니스 계정을 처음 열 후, 계좌 번호 계좌를 개설하도록 지정 될 수있다.
  • 쿼리 서브 시스템 : 일부 쿼리 청구, 계정을 제공합니다.
  • 비동기 회계 모듈은 비동기 기능은 계정 흐르는 물을 기록합니다.
  • 타이밍 작업 서브 시스템 : 실패시 다시 시도 처리 및 기타 뜨거운 계정 타이밍 작업.
  • 날 엔드 서브 시스템 : 최종 컷 및 실행 배치 날짜 일 기능을 제공합니다.

2.1.1 회계 처리

결제 계정 처리 시스템은해야, 더 눈에 띄는 자금도 정확성을 확인해야합니다 뜨거운 이슈에서 높은 성능, 높은 동시성 계정에 대한 기능적 요구 사항의 핵심 기능이며, 다양 항목 회계, 사업에 따라 편지 지급 결제 시스템은 아래에 여기 강조 이러한 문제를 해결하는 방법을 계정 :

  • 계정 결제 시스템 부기 서비스는 각 저널 항목, 들어오는 정보 서비스 시스템의 청구 금액, 계좌 번호 또는 고객 번호 등이 서식에 따라에 대한 템플릿입니다, 회계 서비스의 개념을 사용합니다.
  • 중복 요청을 제출 방지 분산 락 서비스 시스템을 사용하여 레디 스 계정 시스템. 반대로 결제 주문 중량 테이블은 오더 번호 및 결제 요청 확인 멱등기구로서 요청 수에 따라 제공된다.
  • 복식 부기의 사용은 물의 대출 기록에 따라 회계 규칙에 따라 대출이 빌려해야합니다.
  • 결제 과정은 업데이트 된 계정 잔액 동기화는 비동기 처리 파이프 라인을 회계, 비즈니스 시스템에 결과를 반환합니다. 세 가지 시도가 알람 수동 개입 실패 후 보상 메커니즘을 설정, 재시도의 타이밍은, 청구 파이프 라인 처리 순서를 실패했습니다.
  • 회계 처리 규칙은 각 회계 서비스 과금 규칙의 일부, 회계 서비스 주문 처리에 따른 계정 시스템을 통과하는 결합 규칙을 결합 할 수있다.

2.1.2 핫 계정 문제

문제는 뜨거운 계정 통증 포인트 시스템 계정이다, 또한 오랜 시간 동안 우리를 고민하고, 여기에 다음 초점은 말했다.

- 저널 항목을 상단은 다음과 같습니다

직불 : 자 지불 청산 계정 (+)이 될 수 있습니다

신용 : 개인 계정 잔액 (+)

많은 수의 사용자가 파티를 충전 할 때 지불 청산 계정은 핫스팟 계정 잔액 자주 증가 할 것입니다.

- 현재 저널 항목은 언급 :

직불 : 개인 잔고 (-)

신용 : 자 지불 자산 계정 (-)

많은 수의 사용자가 지금 언급 할 때, 파티 지불 계정 자산 계정은 자주 균형을 감소 뜨겁다.

- 저널 비즈니스 서비스 요금을 항목입니다 :

직불 : 개인 계정 (-)

신용 : 상인 계정 서비스 요금 (+)

때 요금의 대규모 수집, 뜨거운 사용자 계정에 상인 계정 서비스 요금 자주 균형을 향상시킬 수 있습니다.

- 비즈니스 저널 입장료 지불은 다음과 같습니다

직불 : 상인 계정 서비스 요금 (-)

신용 : 개인 계정 (+)

균형에 서비스 요금 지불 많은 수의 사용자가, 상인 계정 서비스 요금 계정이 뜨거울 때, 자주 균형을 감소시킨다.

청구하면 모든 높은 동시성에서 수행 된 계정 잔액 업데이트 업데이트로 이동하는 경우 데이터베이스에 행 레벨 잠금 이후 뜨거운 계정의 위의 유형, 병렬로 직렬에서 같은 계정 잔액에 업데이트 작업, 단일 요청 응답 시간은 오래되고, 그래서 전체 청구 서비스 그 아래로.

이러한 문제점을 설명한다 문자 지급 결제 시스템은 다음과 같은 치료를했다 :

우리는 주파수 계정 (자주 공제의 균형), 듀얼 계정 (잔액 증가 공제가 자주) 감소, 계정에 방향의 변화량을 더한 주파수 (자주 균형의 증가)에 따라 계정을 핫스팟.

  • 플러스 주파수 계정 처리

실시간에 가까운 밸런스 업데이트됩니다. 첫째, 요약 금액은 일반 작업의 특정 주파수에서 발생하는 임시 테이블에 변화의 양을 삽입하고 계정 잔액을 업데이트 한 다음 임시 기록을 삭제합니다. 주파수가 플러스 마이너스 돈 계정 잔액보다 적은 경우, 집계 금액 주도권가 발생합니다. 없이 수행되는 일반 작업의 증거가있는 것처럼 금액 및 작업 처리의 타이밍의 동시 이벤트의 주도권 요약을 고려해야한다, 우리가 예약 된 작업 실행 레디 스시 설정은 활성 요약이있는 경우이 레디 스 잠금을 판단하는 동시 의지를 방지하기 위해 잠금 요약 사업은 균형의 부족에 해당 할 수 있습니다. 또한 타이밍 작업을 잠급니다 요약 레디 스 활성 세트도 결정됩니다.

  • 계정 처리 주파수를 저장

감소 된 주파수 서브 - 계정 잔액이 서브 계좌 자금 전가, 다른 서브 - 서브 계좌 잔고에 전가 할 것이다 알람을 트리거하기에 불충분 한 경우 다수의 서브 - 계정의 환원 주파수는 알람의 주파수 서브 - 계정을 설정 량을 감소 분할 계정 계정을 (각각의 서브 계좌는 전가의 양을 제한하도록 설정 될 수있다). 아이는 다른 하위 계정 결제로 전환, 거래 과정에서 불충분 한 계정 잔액을 발견했다. 분할 하위 계정 때문에, 균형은 각각의 하위 쿼리가 계정 잔액을 반환하는 동안 합산되어야합니다, 주요 파이프 라인 요약 비동기 계산 여기에 필요한 결제 계정 잔액을 필요로 후에 기록했다. 주파수가 돈 계정을 추가 저장하면, 균등 아무데도 기록되지 하위 계좌에 필요합니다.

  • 이중 계정 처리

듀얼 계정은 여러 하위 계정을 분할합니다. 마이너스 돈, 돈 플러스 준 실시간 업데이트 균형, 임시 테이블의 삽입의 양이 제 1 서브 계정 변경, 주파수의 일정 금액에 정기적으로 요약 작업이 발생하면, 해당 서브 계정에 업데이트 집계 양의 발생과 변화의 기록적인 금액을 삭제합니다 논리적 계정을 수행하기 전에 주파수를 저장합니다.

2.1.3 회계 교착

각 전송 전에 이상의 계정이 교착 상태를 발생할 수 있습니다 높은 동시성.

예를 들어 : -> B 계정 잔액 (스레드 1) 및 계정 B의 균형 - 계정 잔액 A> 균형 계정 (스레드 2) 두 개의 동시 전송 요청은,이 두 B의 균형, 각 전송에 대한 계정 시스템 A를 업데이트 요청할 트랜잭션 내에서 필요한 업데이트 정상적인 프로세스 스레드 1은을 업데이트 한 후 B를 업데이트 스레드 2가 B를 업데이트 한 다음를 업데이트, 스레드 1이 (가)이 잠금 B 기다린 트랜잭션을 커밋하지 않습니다 업데이트 한 스레드 2've는 B 업데이트 이후의는 잠금을 기다리는 트랜잭션을 커밋하지 않기 때문에 두 개의 스레드가 교착 상태의 결과로, 서로 잠금을 기다립니다.

CreditEase이 상황, 계좌 번호로 지급 결제 시스템 제안 된 솔루션을 고려하고 분류되어 각 스레드가 교착 상태를 해결하기 위해, 또 업데이트 B를 업데이트 할 수 있도록, 균형을 업데이트합니다.

2.2 회계 시스템 스토리지 계층 구조

MySQL을 사용 CreditEase 결산 지불 시스템 데이터베이스 캐시는 레디 스입니다.

  • MySQL의 데이터베이스 마스터 - 슬레이브 아키텍처, 주요 라이브러리에서 2 마스터 데이터베이스에서 동기화 데이터. 데이터 포인트 테이블의 대형 테이블의 번호를 수행, 계정 흐르는 물 테이블의 더 대표는 모두 야오이 기능, 테이블의 중복 있도록에 따라, 시간 차원에 따라 치수 쿼리 계정뿐만 아니라, 집계입니다 서브 테이블을 날짜별로 분할 된 테이블을 차지하고있다.

  • 레디 스의 주요 장치의 각 지점을 클러스터, 클러스터 아키텍처의 형태를 취한다.

2.3 네트워크 계층 아키텍처 계정 시스템

각 서비스 계정 같은 방에 배포 된 시스템, 상기 청구 서브 시스템 비동기 회계 모듈은 4 개 개의 물리적 시스템, 다른 서브 시스템과 두 개의 서로 다른 물리적 시스템에 배포 된 모듈에 배포. 대부분의 nginx 프런트 엔드로드 밸런싱.

저자 : 리 루이 쳉 윤 숙박

추천

출처blog.51cto.com/14159827/2438143