전체 드라이! 분산 시스템의 부하를 분산 | 아키텍처 건조

개인 블로그 탐색 페이지 (클릭 오른쪽에있는 링크를 개인 블로그를 엽니) : 다니엘은 기술 스택에 당신을 데려 갈 

첫째,로드 밸런싱은 무엇인가?

로드 밸런싱은 무엇인가?

나는 실험실에서 Nginx에와 처음 접촉을 기억 서버 사이트에 배포 할 때의 Nginx가 필요합니다. Nginx와는 역방향 프록시,로드 밸런싱 및 HTTP 캐싱 서비스 구성 요소입니다. 그래서 여기에로드 밸런싱이 무엇입니까?

(LB는, 밸런스로드), 그것은 기술 솔루션입니다 균형을로드합니다. 자원의 복수의 (통상적으로 서버) 부하를 할당, 과부하 방지하기 위해, 자원의 사용을 최적화한다.

파일

작업을 수행하는 각 서비스 인스턴스 부에 해당 자원은로드 균형 인터넷 분배 시스템, 높은 동시성과 가용성의 큰 흐름의 문제를 해결하기 위해, 다수의 운영 장치를 실행하기위한 동작을 처리하는 대량의 데이터를 공유 할 수있다. 그것의 유용성은 무엇인가?

둘째, 가용성은 무엇인가?

첫째, 고 가용성 무엇인지 이해?

이것은 CAP 정리는 세 가지 지표 분산 시스템, 분산 시스템의 기초입니다 :

  1. 일관성 (일관성)
  2. 가용성 (가용성)
  3. 파티션 허용 오차 (파티션 내결함성)

그이 고 가용성 (고 가용성) 란 무엇입니까? 가용성의 HA는, 시스템 기능 또는 지표이다라고 일반적으로는 평균 정상 기간보다 특정 서비스 런타임 성능을 제공 지칭한다. 반대로, 시스템 서비스 시간의 제거는 사용할 수 없습니다.

측정 시스템은 고 가용성을 충족하는 서버가 다운 될 때 또는 전체와 일반 서비스로 시스템의 하나 이상 계속 사용할 경우.

예를 들어, 일부 잘 알려진 사이트는 네 개 이상의 9의 가용성, 99.99 %의 가용성을 보장합니다. 즉 0.01 %가 이른바 다운 타임의 비율입니다. 예를 들어, 칭찬에 전기 공급 업체 웹 사이트는 서비스는 돈과 비즈니스 사용자의 손실이 발생할 것입니다 사용할 수 없습니다. 그런데 같은 시간, 시스템 다운 타임 및 서비스는 보상 기준의 가용성을 증가 사용할 수 없습니다.

파일

이러한 하나의 서비스는 단일로드 밸런싱 서비스 인스턴스 복수 대신 서비스 명령의 단일 인스턴스에 따라 즉, 용장 방식의 사용은 신뢰성을 향상한다.

모두 모두, 부하 분산 (로드 밸런스) 고려되어야 분산 시스템 아키텍처 설계의 요소 중 하나입니다. 일반적으로로드 밸런싱, 서비스 인스턴스, 높은 흐름, 높은 동시성 및 고 가용성의 분산 문제 해결 시스템을 이중화하여. 핵심 키를로드 밸런싱 : 분포가 균일 여부를 지정합니다.

셋째, 일반적인로드 밸런싱 경우

파일

시나리오 1 : 마이크로 서비스 아키텍처는, 게이트웨이는 특정 서비스 인스턴스 안녕하세요 라우팅 :

  • 두 개의 동일한 서비스 인스턴스 안녕하세요 서비스, 포트 8000, 다른 포트 8082
  • 2 요청 서비스 인스턴스 인사의 균일 한 분포를 허용로드 밸런싱 기능을 통해 LB 홍콩
  • 많은 홍콩 부하 알고리즘 전략 균형 : 등 해시 알고리즘의 입력 값, 같은 소비자 ID : 기본 가중 라운드 로빈 알고리즘뿐만 아니라, 소비자는

파일

시나리오 2 : 마이크로 서비스 아키텍처, 서비스 호출 클러스터 B 서비스를 제공합니다. 클라이언트로드 밸런싱 구성 요소에 의해 리본 :

  • 고급로드 밸런싱 전략 알고리즘은 가장 쉬운 선택은 무작위 및 라운드 로빈되어 있지 않으며

넷째, 인터넷은 시스템 솔루션을 배포

파일

일반 인터넷 분산 시스템 아키텍처는 일반적으로 다음, 여러 레이어가 있습니다 :

  • 클라이언트 층 : 예를 들어, 사용자의 브라우저, APP 끝
  • F5 등과 같은 기술을 선택 Nignx : 프록시 층 역방향
  • 웹 층 : 전방 및 후방 단부 시나리오, 웹 터미널 캔 NodeJS, RN, 뷰 구분
  • 비즈니스 서비스 계층은 : 자바, 이동, 일반적인 인터넷 기업과 기술 프로그램 선택은 봄 부팅 + 두보 SC 또는 서비스입니다
  • 데이터 저장 층 : DB 선택 MySQL은, 캐시 선택 레디 스, 검색 선택 ES 등

4 각 레이어 1로부터의 요청은 액세스 계층은 부하 분산을 요구한다. 즉, 시간의 복수의 호출 트래픽 상류 하류 균일 통화를 요구했다. 보기의 전체 시스템 지점이 방식으로, 더로드 밸런싱입니다

1 단계 : 클라이언트 계층 ->로드는 리버스 프록시 계층을 균형

클라이언트 레이어 ->로드 그것을 달성하는 방법의 역방향 프록시 계층의 균형을?

대답은 : DNS 폴링. IP 주소의 복수 (는 DNS IP의 반환 주소를 가리키는 주소) A를 DNS. 예를 들어, 여기에 IP1 bysocket.com DNS 구성 및 IP2를 방문합니다. 가용성 리버스 프록시 층은 적어도 두 개의 A 레코드가있을 것입니다. 이러한 중복은 두 개의 해당 서비스 인스턴스을 IP 단일 장애 지점을 방지 Nginx에.

폴링 DNS에 의해 모든 요청 bysocket.com 도메인은 해당 IP 주소, 역방향 프록시의 IP 계층에 해당하는 각각의 서비스 인스턴스, 즉 nginx를 외부 네트워크 IP를 반환합니다. 이 수득 리버스 프록시 분배 층에 대한 각각의 요청에 대해 수행 될 수있다 등화 예이다.

계층 2 : 역방향 프록시 레이어 ->로드 밸런싱 웹 층

역방향 프록시 레이어 -> 그것을 달성하는 방법에 대한로드 밸런싱 웹 계층?

로드 밸런싱 모듈은 리버스 프록시 층에 의해 처리된다. 등의 nginx 같은 여러 밸런싱 방법이 있습니다 :

  1. 폴링 요청. 요청이 연대순으로 다시 다시 웹 서비스 계층에 하나씩 할당합니다. 웹 서비스 레이어가 다운되면, 자동으로 제거
upstream web-server {
    server ip3;
    server ip4;
}
  1. IP 해시. IP의 해시 값에 따라, 웹 층에 해당 경로를 결정한다. IP는 한 사용자가 균일 한, 다음 웹 층에 대한 요구가 균일하다. 동일한 IP 요청이 동일한 웹 서비스 계층에 배포됩니다 있다는 장점이있다. 각 사용자 액세스 웹 서비스 계층, 세션 문제를 해결할 수 있도록 수정되었습니다.
upstream web-server {
    ip_hash;
    server ip3;
    server ip4;
}
  1. 체중 무게, 공정, url_hash 등

계층 3 : 웹 레이어 ->로드 밸런싱 비즈니스 서비스 계층

웹 계층 -> 어떻게 그것을 달성하기 위해 균형 비즈니스 서비스 계층을로드하려면?

예를 들어, 두보는 서비스 등록, 서비스 저하, 액세스 제어, 동적으로 구성 라우팅 규칙, 체중 조절,로드 밸런싱을 포함하여 서비스 관리 프로그램입니다. 크게, 통화 대기 시간을 줄이고 시스템 처리량을 향상 내장로드 밸런싱 전략, 다운 스트림 노드의 인텔리 건강의 다양한 : 하나 개의 기능은 지능형로드 밸런싱입니다.

실패와 지원 서비스 측면 확장의 단일 지점을 피하기 위해, 서비스는 종종 여러 인스턴스, 즉 두보 클러스터 배포를 배포합니다. 서비스 인스턴스의 복수는 임의 부하가 널 일곱째 공급자에게 전화 (20)의 무작위로 선택된 하나의 정책 구성 제공자 분산 서비스 제공자가 될 것이다. 공급자 주소 목록에서로드 균형 구성 요소는 호출이 실패 할 경우, 다음 다른 통화를 선택, 공급자 선택한 통화를 선택, 균형 전략을 사용합니다.

두보는 전략을 균형 네 부하를 구축 :

  • RandomLoadBalance : 임의 부하 분산. 임의의 선택. 두보는 기본로드 밸런싱 전략이다.
  • RoundRobinLoadBalance : 폴링로드 밸런싱. 설문 조사를 선택합니다.
  • LeastActiveLoadBalance : 활성 통화의 최소 수는 같은 임의의 숫자가 활성화됩니다. 활성 콜 카운트 수 전후의 차이를 말한다. 그 적은 느린 제공자가 요청을 수신 그래서, 더 큰 전과 느린 제공자 수 있기 때문에 전화 후 사이의 차이 일 것이다.
  • ConsistentHashLoadBalance : 일관된 해시로드 밸런싱. 항상 동일한 시스템에 떨어지면 동일한 매개 변수를 요청합니다.

사업이 필요하기 때문에 또한, 당신은 당신의 자신의 부하 분산 전략을 구현할 수 있습니다

4 층 : 비즈니스 서비스 레이어 -> 데이터 저장 층을 균형로드

일반적 DBProxy 달성 데이터 저장 층,로드 밸런싱. 예를 들어, MySQL은 서브 라이브러리 하위 테이블.

단일 데이터베이스 또는 단일 테이블 액세스가 너무 큰 경우, 데이터의 너무 많은 량 종횡 이차원 분할 분할 할 필요가있다. 예를 들어, 분할의 수준은 규칙 :

  • 범위, 시간
  • 모듈 해시 점포 ID 또는 순서에 따라 추천

그러나이 부하 다음과 같은 질문을 해결해야합니다 :

  • 분산 트랜잭션
  • 데이터베이스 간 결합 등

상태 하위 라이브러리 하위 테이블 제품 솔루션은 여러 위치 : 등을 Dangdang 샤딩-JDBC, 알리 코바,

V. 요약

외부보기,로드 밸런싱은 전체 시스템 또는 소프트웨어입니다. 그것은 업스트림 및 다운 스트림 전화의 내부 층을 보인다. 만큼 전화가있는 한, 우리는이 요인 부하 분산을 고려해야합니다. 부하 (로드 밸런스)를 균형 그래서 고려되어야 분산 시스템 아키텍처 설계의 요소 중 하나입니다. 하류 주로 수신 된 요청이 균등하게 분배되어 있는지 확인하는 방법을 고려하십시오

  • 1 단계 : 클라이언트 계층 -> 리버스 프록시 계층의 균형을로드합니다. DNS에 의해 폴링
  • 계층 2 : 역방향 프록시 레이어 -> 균형 웹 레이어를로드합니다. Nginx의로드 밸런싱 모듈
  • 계층 3 : 웹 레이어 -> 균형 비즈니스 서비스 계층을로드합니다. 로드 밸런싱 서비스 모듈 관리 프레임 워크
  • 4 층 : 비즈니스 서비스 레이어 -> 데이터 저장 층을 균형로드합니다. 데이터도 데이터 및 요청할 이론적 균일 수평 분포. 마찬가지로 이러한 구매자 ID 단편 의해

첨부 자바 / C / C ++ / 기계 학습 / 알고리즘 및 데이터 구조 / 프런트 엔드 / 안드로이드 / 파이썬 / 프로그래머 읽기 / 하나의 책 책 Daquan의 :

(건조 개인 블로그에이 열 오른쪽 클릭) : 기술 건조한 꽃을
===== >> ① [자바 다니엘은 진보의 길에 당신을 데려] << ====
===== >> ② [+ ACM 알고리즘 데이터 구조 다니엘 진보에 도로에 걸릴] << ===
===== >> ③ [데이터베이스 다니엘 진보에 도로에 걸릴] << == ===
===== >> ④ [다니엘 웹 프런트 엔드는 고급가는 길에 당신을 데려 갈 수 있습니다] << ====
===== >> ⑤ [기계 학습 파이썬 다니엘은 당신에게 항목을 고급 도로] << ====
===== >> ⑥ [건축가 다니엘은 진보의 길에 당신을 데려] << =====
===== >> ⑦ [C ++ 다니엘은 도로에 당신을 데려 갈 고급] << ====
===== >> ⑧ [다니엘은 진보의 길에 당신을 데려 갈 IOS] << ====
=====> > ⑨ [웹 보안 다니엘은가는 길에 당신을 데려 갈 고급] << =====
===== >> ⑩ [리눅스 운영 체제와 다니엘은 진보의 길에 당신을 데려] << = ====

더 불로 과일이 없다, 당신이 젊은 친구가, 친구가 기술을 배우고 싶은 희망, 도로의 방법으로 모든 장애물을 극복, 기술에 묶어 책을 이해 한 다음 코드에 노크, 원리를 이해하고 연습을 갈 것입니다 결정 그것은 당신의 미래, 당신에게 꿈을 생활, 직장을 가져올 것이다.

게시 47 개 원래 기사 · 원의 칭찬 0 · 조회수 258

추천

출처blog.csdn.net/weixin_41663412/article/details/104898968