동적 데이터 원본 디자인 사고방식
디자인 사고방식
핵심 문제
1. 데이터 소스 정보의 저장
2, 데이터 소스 정보의 동적 동기화, 로드 및 캐시
3. 데이터 소스 정보의 전환
4. 데이터 소스 대상의 주입
2. 문제 분석
1. 데이터 소스 정보의 저장
(1) 라이브러리 리스트를 토대로 DBConnection의 설정 정보를 단독으로 유지한 다음에 DataSource(DruidDataSource를 예로 들면) 대상으로 조립하여 캐시해야 한다.
(2) 캐시 디자인.통상적으로 동적 데이터 원본 전환은 하나의 표지를 사용하여 대응하는 데이터 원본 대상을 선택한다.또한 스레드 보안 문제를 고려하여currentHashMap을 추천합니다.
2. 데이터 소스 정보의 동기화 및 로드
(1) 동기화 문제: 분포식 전제에서 데이터의 일치성을 고려해야 한다.low를 비교하면 캐시를 사용할 수 있고 캐시를 사용하는 경우 캐시 데이터의 일치성에 주의해야 한다.LocalCache+ZooKeeper의 경우
(2) 데이터 원본의 불러오기: 스프링 용기의 도움말에 따라 이 조작은 비교적 자유로워진다.몇 개의 주해를 통해 실현할 수 있다.주로 절차의 사고방식을 묘사하다.
(3) 캐시 문제
(1) 분포식 잠금 정책: 분포식 잠금을 사용하여 DB에 접근하는 스레드 수를 제한한다. 그러면 스레드를 막아서 시간 초과를 초래할 것이다.통상 이런 방안은 업무상 취할 수 없는 것이다.
(2) 데이터 일치성 전략: DB가 방문의 압력을 견딜 수 있도록 보증한다(사실 다행이다. 누가 DB가 수백 개의 절대적인 합병을 견딜 수 없겠는가?).데이터 버전 메커니즘을 도입한다. 즉, 캐시를 업데이트할 때 현재 데이터의 버전 번호와 캐시 데이터의 버전 번호가 일치하는지 판단한다.
3. 데이터 소스의 전환
public class DataSourceContextHolder {
private static final ThreadLocal contextHolder= new ThreadLocal();
public static void setDataSourceType(String groupId){
contextHolder.set(groupId);
}
public static String getDataSourceType(){
log.info("Service get datasource currently is : [" + contextHolder.get() + "]");
return contextHolder.get();
}
public static void clearDataSourceType(){
contextHolder.remove();
}
}
4. 데이터 소스 대상의 주입
사고방식: 동적 데이터 원본 도구에서 DataSource 표시를 얻고 표시에 따라 DataSrouce 대상을 얻는다.Spring 컨테이너에서는 이 점이 더 잘 구현됩니다.DB에 액세스하기 전에 데이터 소스를 전환하는 것이 원리입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Cognos BI에서 Oracle 데이터 소스 연결 설정 절차Cognos 10 BI에서 Oracle 데이터 소스에 대한 연결 설정 절차입니다. 옛날의 메모로부터의 재현이므로, 잘못되어 있으면 지적해 주세요. 오라클 사이트에서 32bit 클라이언트를 다운로드. 설치 유형은 "관...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.