분산 시스템의 문제와 해결 방법

분산 시스템 1. 소개

1.1 배경 분산 시스템

하나의 응용 프로그램 아키텍처 : 사이트 트래픽, 모든 기능을 하나의 응용 프로그램에 통합하는 경우 만하여 비용을 절감하고 노드를 배포, 응용 프로그램을 배포해야합니다.
수직 응용 프로그램 아키텍처 : 대형 사이트 트래픽의 시간, 새로운 기계의 숫자로 기준 이하 효율성을 개선하면 시스템이 여러 무관으로 수직 분할을 사용합니다.
분산 시스템 아키텍처 : 때 더 수직 애플리케이션의 철거 할 때 분할 점차적으로 일부 핵심 별도의 서비스 구축 등의 사업, 그리고 더에 대한 안정적인 서비스 센터를 형성 할 때 고려 될 수있는 응용 프로그램 사이의 상호 작용을위한 불가피한 필요, 비즈니스 요구에 빠른 응답.

분산 시스템 1.2 소개

"분산 시스템은 여러 개의 독립적 인 컴퓨터의 집합, 하나의 관련 시스템과 같은 사용자를위한 이러한 컴퓨터입니다"- ". 분산 시스템의 원칙과 패러다임" 두 프로그램은 프로세스의 두 호스트에서 실행되고,보기의 프로세스 관점에서, 그들은 동일한 서비스 또는 기능을 완성하기 위해 서로 협력하고 이론적으로, 두 프로그램으로 구성된 시스템은 "분산 시스템을 호출 할 수 있습니다 . " 물론,이 프로그램은 두 개의 서로 다른 프로그램을 수 있으며, 프로그램은 동일 할 수있다. 동일한 절차 즉, "클러스터"라는 또 다른 이름을 가지고있는 경우, 같은 규모의 프로그램 방식의 서비스 기능을 향상시킵니다.
분산 소리와 마이크로 서비스 개념이 그들 사이의 차이와 유사하다입니다 : 마이크로 서비스 아키텍처 예를 들어, 하위 비즈니스, 데이터베이스, 마이크로 서비스의 다른 차원으로 인터페이스 분할에 의한 마이크로 서비스가 될 수 있고, 사업에 찬성 편견, 분산 아키텍처는 기계에 찬성 바이어스 대부분의 마이크로 서비스가 별도의 배포 때문에 마이크로 서비스 아키텍처는 분산 아키텍처이라고 할 수 있습니다.

1.3 분산 시스템은 해결해야

1.3.1 분산 세션

스티커 세션

클러스터의 점성 즉 기계 사용자 세션 액세스는, 후속 요청은이 시스템에서 현재 사용자에게 전달하는 경우.
사용 시나리오 : 서버의 적당한 수없는 매우 엄격한 안정성 요구 사항
장점 : 간단하고 쉬운 구성으로는, 추가 네트워크 오버 헤드의
단점 : 네트워크는 사용자 세션은 실패의 단일 지점으로 이어질 쉽게 잃게됩니다,이 다운되지
프로그램 : ip_hash의 Nginx의 부하 밸런싱 알고리즘

세션 복제

향후의 방송 데이터가 남아있는 클러스터의 클러스터에 복사하는 서버 세션의 세션 복사
적은 기계, 적은 네트워크 트래픽 : 사용 시나리오
사용자 액세스에 영향을주지 않고 간단한 구성 가동 중단 시간 : 장점이
단점을 : 방송 복사 세션을 지연, 추가 네트워크 오버 헤드에 대한 요구가
오픈 소스 톰캣 - 레디 스 세션 매니저 : 용액

캐시는 중앙 집중식 관리

사용자가 액세스 캐시에서 향후 세션 캐시 쓰기 분산 캐시 클러스터, 우선 순위 액세스 세션 정보를 중앙 관리
서버 수, 복잡한 네트워크 환경 : 사용 시나리오
장점 : 신뢰성
단점 : 복잡한 구현하려면 추가 네트워크에 대한 필요성이 오버 헤드, 안정성이 시스템 캐시의 안정성에 따라
솔루션 : 그들이 달성 할 수있는 오픈 소스 봄 세션 자신을 중심으로하는 getSession 방법 HttpServletRequestWrapper 재 작성

1.3.2 분산 구성 센터

분산 시스템에서,이 서비스는 모든 프로그램을 다시 시작 열한 새로운 응용 프로그램이 복잡하고 시간이 많이 걸리는 과정이 될 것이다 해제, 수천을 포함 할 수있다. 그렇다면 클러스터와 비 스톱 서비스의 경우, 전체 클러스터가 실행의 특성 동작을 조정? 분산 시스템 센터 구성 나타났다. 일반적인 시스템 구성의 변화 분포 :, 스위치, 제한 구성 현재 상기 스레드 풀, 접속 풀의 크기를 데이터 소스 대기 리던던시 스위칭, 라우팅 규칙. : 같은 오픈 소스 솔루션이 많이 있습니다
disconf : 봄과 통합 바이 오픈 소스, 거기에 웹 관리 인터페이스 만 클라이언트 지원 JAVA를 참조 잘.
다이아몬드 : 알리 오픈 소스가 내부 알리 널리 HTTP 서버, 다이아몬드 서버, 웹 구성, 다이아몬드 서버 연결 통합 MySQL의 데이터 동기화하여 MySQL의 덤프 파일, 게시에 대한 구독을 지원하여 사용하는 경우, 클라이언트는 자바를 지원합니다.
etcd, CoreOS 오픈 소스, 가벼운 KV 데이터베이스, 당신은 서비스 검색 및 등록 클러스터 환경을 달성 할 수있다, 그는 노드 상태를 관리 할 수있는 TTL 데이터 오류, 데이터 변경 모니터링, 멀티 손가락, 디렉토리 모니터링, 분산 잠금 원자 작업 및 기타 기능을 제공합니다 .
사육사, 구성 솔루션을 배포 성숙.

1.3.3 분산 트랜잭션

가장 중요한의 요구를 해결하기 위해 사용자 분산 트랜잭션 데이터 일관성을 보장하는 것입니다. 현재 솔루션은 실질적으로 다음과 XX 트랜잭션 프로그램, 최종 균일 한 메시지 서비스 보상을 기반으로 유연한 거래 등 올바른 수동으로합니다.

1.3.4 분산 잠금

현재 거의 많은 대형 사이트와 응용 프로그램이 분산, 데이터 일관성 문제에 배포 된이 장면에서 배포 된 것은 더 중요한 주제입니다. 분산 CAP 이론 (1.3.5 참조) 분산 된 시스템이 동시에 일관성, 가용성, 파티션 및 내결함성에서 만날 수없는 두 CP 또는 AP를 충족시킬 수 있음을 알려줍니다. 대부분의 시나리오에서 AP를 보장하는 것입니다,하지만 강력한 일관성의 비용은 최종 일관성을 보장합니다. 분산 잠금 구현은 다음과 같습니다 : 그래서에서 MySQL, 레디 스, 사육사와.

1.3.5 CAP 이론

분산 데이터베이스 용어에 대한 CAP 이론은, 그것은 분산 시스템, 일관성 (일관성, C), 가용성 (가용성, A), 내결함성 파티션 (파티션 공차, P) 모두 세를 가질 수 없습니다를 참조 .

  • 일관성 (C)
    "모든 노드에서 동일한 데이터를 참조하는 것이 일관성 수단 동시에", 즉, 업데이트 작업이 성공적 정확히 동시에 모든 노드의 데이터. 일관성은 두 개의 서로 다른 관점 클라이언트와 서버로 나눌 수 있습니다 : 클라이언트의 관점에서 주로 일관성을 업데이트하는 방법에 대한 질문을 언급 할 때 여러 사용자가 다른 사용자에 의해 수집 된 데이터에 대한 동시 액세스,보기의 서버 지점에서, 일관성은 데이터 일관성을 보장하기 위해 전체 시스템에 데이터를 업데이트하는 사용자 데이터를 복사하는 방법입니다. 일관성은 동시 읽기 및 쓰기 문제에 표시하고, 일관성의 문제를 이해, 우리는 함께 동시 읽기 고려주의를 기울이고 장면을 작성해야합니다. 일관성 일관성은 강한 (일관성), 약한 일관성 (일치하지 않을 수 있음) 및 최종 농도 (농도 허용 지연)으로 분할 될 수있다.
  • 가용성 (A)
    가능 수단, 즉, 사용자가 시스템이 정상 응답 시간의 결과를 반환 할 수 있는지 여부를 상기 데이터에 액세스하는 "판독 항상 성공 기록". 시스템이 고객 서비스를 위해 잘 작동 할 수 있습니다에 좋은 가용성을 주로 의미, 어떤 사용자 작업이 실패하거나 사용자 경험 나쁜 상황에 접근 제한이 있습니다. 정상적인 상황에서는 그렇게에 큰 관련성과 분산 된 데이터 중복,로드 밸런싱의 가용성과가 있습니다.
  • 파티션 내결함성 (P)
    격벽 내결함성 "은 시스템이 임의에도 계속 작동 지칭 시스템의 부분 메시지가 손실 또는 실패" 외부를 제공 할 수 여전히 노드 고장 또는 네트워크 분할면의 분산 시스템 인 서비스의 일관성과 가용성을 만난다. 구역 밀접 내결함성 및 확장 성 관련이있다. 분산 시스템의 원인 중 일부는 제대로 작동하지 않을 수 있기 때문에 분산 응용 프로그램에서는있을 수 있습니다. 구역 설정은 클러스터 시스템이 여전히 서비스, 데이터에 대한 완벽한 액세스를 제공 할 수 발생 노드 장애 또는 패킷 손실의 아래 부분에서 높은 내결함성을 의미합니다. 내결함성 다중 파티션은 시스템에서 정책의 사본으로 간주 될 수있다.

CAP 이론은 분산 시스템은 두 사람의 특성을 고려할 수 있다는 것입니다, CA는, CP, AP 삼가지 경우는, 실제로, 방법을 선택하는 사용자에 의해 결정, 실제 상황에 따라 무게, 또는 구성 소프트웨어 수준을 제공 할 수 있습니다 나타납니다 CAP 정책. CAP 이론은 서로 다른 수준에서 사용할 수 있습니다, 예를 들어, 분산 시스템에서, 각 데이터 자체가 보장 된 CA입니다 노드하지만, 전체에 계정 AP 또는 CP에 가지고 가야 지역 디자인 전략 CAP 원칙에 따라 사용자 정의 할 수 있습니다. 도에 도시 된 바와 같이.
그림 삽입 설명 여기

  • P없이 CA는
    파티션을 허용하지 않는 파티션 공차는, 강한 일관성과 가용성을 보장 할 수있는 경우에 필요하지 않습니다. CA의 분산 시스템은 서브 시스템의 파티션이 CA에 남아 더 후 수 있도록 사실, 파티션, 항상 존재하는 문제이다
  • 없이 CP는
    CP가 보장되도록 각 요청, 파티션 동기화 시간 무제한 확장에 다양한 서버, 내결함성과 리드 사이에 강한 일관성을 필요로하는 것처럼 가용성이 필요하지 않은 경우. 많은 기존의 데이터베이스 분산 트랜잭션이 패턴에 속합니다.
  • C없이 AP
    고 가용성을 원하는 파티션을 허용하는 경우, 당신은 일관성을 포기해야합니다. 파티션이 발생하면 고 가용성을 달성하기 위해, 각 노드는 로컬 데이터와 서비스를 제공 할 수 있으며,이 불일치 글로벌 데이터를 이끌 수, 노드 사이의 연결을 잃을 수 있습니다.

1.3.6 BASE 이론

이베이는 건축가에 의해 제안된다. BASE는 점차 진화 CAP의 법칙을 기반으로 대규모 인터넷 분산 시스템 연습의 요약에서 오는 CAP 일관성 및 가용성 절충의 결과이다. 핵심 아이디어는 심지어 강력한 일관성,하지만 자신의 운영 특성에 따라 각 응용 프로그램, 시스템을 단지 적절한 방법을 할 수없는 경우가 최종 일관성을 공격한다는 것입니다. 기본 이론은 세 가지 문구 소프트 주 (소프트 상태)와 결국 일관성 (최종 일관성을) 생략 (기본 가능) 기본적으로 사용할 수있다.

  • 기본적 가능한 (기본 가능)
    기본적 가용성 손실 부 (예컨대, 응답 시간 함수의 이용)을 허용하는 실패시에 사용될 수있는 분산 시스템을 지칭 가용성 손실 부분을 허용한다. 시스템에서 사용 가능한 실질적으로 동등을 사용할 수 없다는 것을 유의한다.
    손실 응답 시간 : 정상적인 상황에서 증가, 질의 응답 시간 결과 (예 : 정전이나 시스템 부분 룸 고장 파손으로) 실패에 대한 검색 사용자에게 반환 엔진, 0.5 초 이내에 쿼리 결과지만, 때문에이 필요 1~2초.
    기능의 손실 : 시스템의 안정성을 보호하기 위해 (예 : 2-11)를 최대 쇼핑 사이트 쇼핑 할 때, 일부 소비자는 페이지 다운 그레이드로 이동 될 수 있습니다.
  • 부드러운 상태 (소프트 주)
    소프트 상태는 전체 시스템의 가용성에 영향을주지 않고 중간 상태 및 중간 상태를 허용하는 시스템을 말한다. 지연의 다른 복사본 동기화를 가능 데이터의 다중 사본을 일반적으로 분산 저장, 부드러운 상태의 표현이다. MySQL의 복제 비동기 복제도 반영이다.
  • 결국 일관성 (최종 농도)
    최종 일관성 궁극적 일관된 상태로 일정 시간이 경과하여 시스템 내의 데이터의 복사본을 말한다. 대신 약한 일관성과 강력한 일관성은 최종 일관성은 약한 일관성의 특별한 경우이다. 2 단계 커밋 세 단계 확약, paxos 알고리즘, ZAB 계약 : BASE는 알고리즘 및 프로토콜의 일부 이론의 일관성을 기반으로 등장했다.

1.3.7 분산 일반 작업

어떻게 시간 초과 작업을 분산?

우선, 우리가 예약 된 작업의 개념을 이해해야한다, 계획 작업은 주기적으로 실행 계획이나 프로그램에 의해 정기적으로 실행됩니다. 우리의 가장 일반적인 리눅스의 '의 crontab'및 Windows '예약 된 작업'입니다. 통합 플랫폼으로 흩어져, 가난한 신뢰성 예약 된 작업 및 클러스터 관리 작업 스케줄링 및 분산 배치의 타이밍을 관리하는 방법 : 일반 작업, 개인은 다음과 같이 요약을 분산 무슨 그래서. 타이밍 분산 작업이라고합니다.

왜 분산 일반 작업을 사용할 수 있습니까?

- 시간 초과 작업 단점 :
기능, 특히 멀티 시스템 환경의 관리 및 각 시스템에 대한 작업의 타이밍 제어를 충족 할 수없는 것은 더 분명 비교적 간단한 대화 형 가난, 낮은 작업 배포 효율, 개발 및 유지 보수 비용이 더 높다이다; 작업 추적 및 달성하기 어려운 경고, 많은 작업은 독립 실행 형 배포, 가난한 유용성이다.
분산 시간 초과 작업의 장점 :
, 높은 시스템 가용성, 확장 성,로드 밸런싱, 결함 허용을 개선을 위해 분산 배치를, 방법 클러스터 관리 일정에 의해 크게 개발 및 유지 보수 비용을 절감하고 콘솔로 배포 할 수 있습니다 관리 정기적으로 편리하고 유연하고 효율적인 작업, 사운드 임무는 다시 실행 메커니즘 및 세부 작업 추적 및 경보 전략을 실패하면서 작업은 다운 타임 및 데이터 손실의 위험을 방지하기 위해 데이터베이스에 유지 될 수있다.

위임의 인기 분산 프레임 워크

쿼츠는 :
석영은 가장 유명한 오픈 소스 자바 필드 작업 예약 도구입니다. 석영은 작업 지속성, 클러스터링 및 분산 작업과 같은 기능의 매우 넓은 범위를 제공합니다. 특징 :

자바로 작성하고, 쉽게 및 통합을위한 또 다른 스프링 자바 프레임 워크,
강력한 스케줄링 기능 : 스케줄링 다양한 방법에 대한 지원은 기존의 특수 다양한 요구를 충족하기 위해,
유연한 응용 프로그램 : 지원 작업 및 일정을 다양한 조합은, 스케줄링 데이터 저장의 다양한 지원,
분산 및로드 밸런싱과 고 가용성 기능을 클러스터링.

작업 탄성 :
탄성 신축성 분산 작업이 작업 프레임 워크 모듈은 ddframe에 DD-작업을 분리한다. DD-작업 및 액세스 사양 및 ddframe 부분에 모니터를 제거합니다. 이 프로젝트는 차 개발을위한 검증 된 오픈 소스 석영 및 사육사 고객 큐레이터를 기반으로합니다. 특징 :

작업 타이밍 : 작업 실행 성숙 작업 작업 프레임 타이밍 석영 크론의 발현에 따라 타이밍,
작업 등록 센터 : 사육사 큐레이터 기반으로 고객은 글로벌 레지스터 연산 제어 센터를 실현. 등록, 관리 및 분배 작업의 구현 좌표를 들어,
작업 단편, 작업을 제공 할 수있는 단편은 다수의 서버에 작은 작업 항목 복수 동시에 수행
: 작업 서버 충돌 실행 또는 N을 추가 탄성 팽창 부피 감소 작업 서버는 작업은 다음 작업 실행 전에 다시 분열 프레임이 될 것입니다 현재 작업 실행에는 영향을주지 않습니다
작업 실행 모드의 다양한 지원 : 작동 모드의 OneOff, 영구 및 SequenecePerpetual 삼가지,
장애 복구 작업 서버가 충돌에서 실행되지 다시 분열로 이어질 것입니다, 부서는 다음 조각 작업을 시작합니다. , 작업 실행의 과정에서 장애 복구 기능을 사용하여 서버가 유휴 상태 인 다른 작업을 모니터링, 잡아 미완성 고아 슬라이스 항목 실행,
실행 상태 모음 : 실행중인 작업을 모니터링 할 때 가장 최근의 통계 데이터를 처리하고 성공 실패의 수, 기록 작업 마지막 실행 시작 시간, 종료 시간 및 다음 실행 시간,
작업이, 복구 및 해제를 중지 :; 시작하고 작업의 작동을 중지하는 데 사용 및 운영을 금지 할 수있는 작업은 일반적으로 온라인에서 사용
놓친 실행 작업을 다시 트리거 : 자동으로 작업 미스 실행을 기록하고 마지막 작업이 완료된 후 자동으로 트리거.
데이터를 가져 처리량을 개선하기 위해 멀티 스레딩 사용; 빠른 데이터 처리 멀티 스레딩
나무 등을 : 중복 된 항목 작업 작업이 이미 실행중인 작업 실행 작업 항목을 반복하지 결정,
내결함성 : 작업 서버, 통신 서버 장애 사육사 실행을 반복 조각화 다른 작업 서버에 서브가 할당 작업 레지스트리의 실패, 그리고 현재 작업 작업의 모든 서버를 방지하기 위해 즉시 중단 후.
봄 지원 : 자리에 지원 Spring 컨테이너, 사용자 정의 네임 스페이스;
운영 및 유지 관리 플랫폼 : 작업과 레지스트리를 관리 할 수있는 운영 및 유지 보수 플랫폼을 제공합니다.

TBSchedule :
TBSchedule 널리 알리바바, Taobao의, Alipay의, Jingdong 함께 미국 자동차 집, 미국 및 다른 많은 인터넷 기업들이 예약 시스템 처리에 사용되는 아주 좋은, 고성능 분산 스케줄링 프레임 워크입니다. tbschedule 시간 스케줄링은 더 석영 강력한 존재하지만, 걱정 없지만 단편화를 지원합니다. 사육사는 고 가용성 작업 스케줄링과 분열을 달성하는 데 사용 tbschedule 그리고 석영은 다르다.
토성 :
토성 유일한 제품은 GitHub의 오픈 소스에 대한 분산 작업 스케줄링 제품이 될 것입니다. 개발하고 일부 기능에 대한 개선을 Dangdang 탄성 작업을 기반으로 몇 가지 새로운 기능을 추가한다. 현재 GitHub의에 6 개월 470 게르마늄 스타를 엽니 다. 토성 작업은 파이썬, 이동, 쉘, 자바, 여러 언어로 개발 될 수 빌. 그것은 유일한 제품 내부 350 개 + 노드, 작업 스케줄링 40 만 번 하루에 배포했다. 동시에, 관리 및 통계는 또한 하이라이트입니다.
분산 서비스 아키텍처 중 하나 사육사 항목 및 빌드로 독립 실행 형 및 클러스터 환경

게시 된 118 개 원래 기사 · 원 찬양 7 ·은 10000 +를 볼

추천

출처blog.csdn.net/qq_43792385/article/details/104812815