마이크로 서비스 디자인 연구 (C) 서비스 등록 및 검색 서비스 거버넌스

머리말

과거 시리즈에 오신 것을 환영합니다 :

오늘의 인기 마이크로 서비스에서 서비스 단위 공유 분할은 아주 좋은, 서비스의 수의 급격한 증가 하였다. 클라우드 네이티브의 물결에서 서비스 관리를 더 자주 함께 원 스톱 자동화 파견 관리 플랫폼을 형성, 컨테이너 관리 플랫폼과 결합.

물론, 컨테이너 기반의 스케줄링 시스템의 사용 여부를 서비스 관리의 원칙과 변화의 범위는 일어나지 않을 것입니다 ,하지만 다른 방법은 그것을 달성하기 위해.

서비스 검색,로드 밸런싱, 전류 제한, 퓨즈, 타임 아웃, 재시도, 추적 및 기타 서비스를 포함한 서비스 관리 기능을 제공합니다. 우리의 이야기는 오늘의 콘텐츠 서비스의 발견이다 .

장 요약

이 장에서는 다음을 설명합니다 :

  1. 서비스 검색은 무엇인가? (무엇)
  2. 마이크로 서비스의 프레임 워크에서 왜 서비스를 찾을 필요합니까? (왜)
  3. 서비스 검색이 작동합니까 어떻게? (방법)
  4. CAP 정리
  5. 도입 몇 가지 기존 솔루션 (구현)

자, 이제 여행을 시작하자.

서비스 검색 무엇 (어떤)

서비스 검색은 서비스 제공 업체의 네트워크 위치 정보를 찾는를 말합니다.

특히 다른 서비스가 신속하게 이러한 서비스가 등록 된 찾을 수 있다는, 분산 시스템 서비스의 모든 정보를 기록하려면 레지스트리의 사용을 의미합니다.

서비스 발견, 알림 서비스 등록, 서비스 검색, 서비스 건강 검진과 서비스를 가지고있는 키를 변경하는 대규모 SOA 서비스 및 마이크로 아키텍처의 핵심 모듈의 요구를 지원하고있다.

왜 서비스 검색이 필요합니까? (왜)

어떠한 서비스 디스커버리 모듈이 없기 때문에 유지하기 어려운 시스템을 일으키는 소비자 중 특정 서비스 구성으로 결합 구성 서비스 네트워크 위치 정보가 될 것이다.

이러한 기본적인 질문의 생각 : 서비스 소비자가 서비스 제공 업체의 IP와 포트 그것을 알고 어떻게합니까?

간단한 아키텍처에서, (등 DNS, Nignx의로드 밸런싱 구성 등) 정적 구성은 문제를 해결하는 좋은 방법이 될 수 있습니다. 각 서비스는 동일한 위치에 배치하고, 거의 변경되지 않습니다. 없음 탄력과 탄성 요구하지 않습니다. 확률 변화의 전통적인 모 놀리 식 응용 프로그램의 네트워크 주소를 수동으로 업데이트와 운영 및 유지 보수 인력의 변경의 경우에, 구성 파일을로드 작다.

그러나 마이크로 서비스 아키텍처의 경우, 아닌 마이크로 서비스 업데이트, 자주, 종종 부하에 따라 탄력과 탄성이 될 것이다 서비스의 마이크로 애플리케이션 예제의 네트워크 주소 변경은 매우 일상적인 일이기 때문에, 우리는 이전의 정적 구성을 언급 그런에 분명히 적합하지 솔루션, 매우 역동적 인 장면. 그래서 우리는, 메커니즘 (모듈)을 제공해야 하므로 해당 서비스 소비자 신속하고 서비스 제공자의 IP 주소가 변경시의 최신 정보를 적시에 액세스 할 수 있습니다 .

서비스 검색이 작동합니까 어떻게? (방법)

위에서 언급 한 바와 같이, 레지스트리의 사용은 다른 서비스가 신속하게 이러한 서비스가 등록 된 찾을 수 있다는, 분산 시스템 서비스의 모든 정보를 기록합니다.

의는 서비스 검색 메커니즘 (간단한 버전)의 작동을 설명하기 위해 두 가지 예를 사용하자 :

의 image.png

  1. biz service자사의 서비스 정보 서비스 센터를 말하고 시작, 서비스 센터는 작성 완료
  2. admin service시작 요청에 서비스 센터 biz service서비스 정보
  3. 서비스에 해당하는 서비스 센터의 위치 정보를 찾기로 돌아admin service
  4. admin service실제 주소를 획득 한 후, biz service요청을 개시하는

biz service클러스터 아키텍처를 사용하는 경우, 제품 라인에 대한 더 자세한 노드가 전체 워크 플로우는 어떻게의 종류입니까?

의 image.png

  1. 디스커버리 센터가 자체 서비스 정보를 알려줍니다 새로운 노드 서비스 등록을 시작, 서비스 센터는 작성 완료

  2. admin service업데이트 요청 시작 biz service주소 목록 서비스

    정보 요청을 업데이트 할 수있는 클라이언트 측의 주도권을 부여하는 것은 "풀"방법이며, 클라이언트 측 알림 서비스 센터를 기다리고, 콜백을 등록가,되는 "푸시"방식)

CAP 정리

전체 운영 메커니즘의 "서비스 검색은"이해하기 간단하지만 서비스 코어 마이크로 아키텍처 시스템으로 분산 실제 장면이지만, 우리는 확실히 높은 가용성을 보장, 빌드 클러스터에 방법이 필요합니다. 이번에는 분산 시스템 발생할 수있는 몇 가지 문제를 고려해야합니다.

분산 컴퓨터 시스템에서 만 일관성 (일관성)을 만날 수있는, 가용성 (가용성) 및 파티션 내결함성 (파티션 허용 오차)의 세 가지 기본 특성이이 유명한 CAP 정리입니다.

  • 일관성 : 노드가 동시에 데이터의 업데이트 된 사본을 반환 할 수있는 모든을 의미한다;

  • 가용성 : 각각의 요청에 응답하여 리턴 될 수있는 비 에러를 말한다

  • 내결함성 존 지정하는 : 서버 간의 통신을 의미한다은 (는) 시스템에 영향을주지 않습니다 경우에도 개방 유지 될 수없는 것은 특정 시간에 계속 실행됩니다.

정의되지 않은

분산 시스템의 경우, 내결함성 파티션이 충족되어야합니다. 따라서 트레이드 오프 일관성과 가용성 사이의 "선택 AP는 CP로 선택했다"라고해야합니다.

뚜껑에 정리 어린이 신발에 익숙하지 않은, 당신은 읽기 확장 할 수 있습니다 - CAP 정리를

유용성의 비용으로 일관성을 선택한 경우 서비스 검색 및 등록 센터 클러스터의 경우, (CP를 선택) 후 멀티 서비스 센터에 일관된 데이터, 아래로 한 번 서비스 센터, 필요 클러스터 포인트의 서비스 센터를 보장하기 위해 외부 데이터의 현탁액 서비스를 제공하기 위해 기록된다. 기록 된 서비스의 가용성을 희생 동시에 일관된 데이터 서비스 센터 클러스터를 보장. 당신이 일관성의 비용으로 이용 가능하도록 선택하는 경우 서비스의 중심점이 다운되었을 때 로컬 저장소에 직접, 중단없는 서비스를 보장하기 위해 다음 순서로, 아직 살아 서비스 센터 노드를 선택할 수 있습니다 쓰기 데이터 (AP를 선택) 한 후 클라이언트에 반환 끝,하지만 회전이 여러 노드간에 일치하지 않는 데이터가 발생합니다.

업계는 서비스 검색 시스템의 등록을 제공하기 위해, 대회에 본질적으로 AP또는 CP시스템.

기존 솔루션 (실시)

분산 서비스 시스템에서, 서비스 제공자와 소비자 모두가 [센터]에 의존하고, 문제가있는 경우 서비스 센터는 상태 인식 서비스가 이러한 현상에 민감하지 않고, 시스템 전체에 확산있을 것입니다. 따라서, 서비스 발견을위한 중요한 레지스트리의 가용성을 보장합니다. 레지스트리의 가용성을 보장하기 위해 배경은 일반적으로 또한 레지스트리는 여전히 싱글 룸의 경우 서비스를 제공 할 수 있도록 여러 방에 배포 할 큰 사이트 인 경우, 다중 노드 배포를 보장하기 위해 사용할 수 없습니다. 고 가용성 서비스 센터는 다음과 같은 기능이 필요합니다 기능 :

  1. 그것은 다중 노드 배포 할 수있는 능력을 가지고
  2. 할 수있는 능력이자가 치유 및 분산 시나리오에서 조정
  3. 노드의 상태를 점검 할 수있는 능력에서, 액세스 타임 아웃이 현재 클러스터에서 제거 할 수 있습니다 노드, 다시 현재 클러스터에 가입 액세스 노드의 기능을 복원 할 수 있습니다

다음 섹션에서 우리는 몇 가지 일반적인 레지스트리 제품으로 직접 사용할 수있는 소개합니다.

동물원의 관리자

사육사는 분산 데이터 일관성 솔루션입니다 엄격한 순차 액세스 제어 시스템과 고 가용성 및 분산 조정을 제공하기 위해 노력하고 있습니다.

사육사는 분산 통지 및 조정, 구성 관리, 네임 서비스, 기본 노드 선거, 분산 잠금 장치, 분산 큐 완벽한 솔루션을 제공합니다 . 어떤 널리 서비스 검색에 대한 통지 및 조정을 배포됩니다. 지금까지, 그것은 가장 오래된 서비스 검색 필드, 가장 널리 사용되는 제품이다.

정의되지 않은

이 문서는 등 구체적인 지식 사육사 일관성 프로토콜, 데이터 구조, 사육사의 이전 기사를 읽을 수 있습니다 관심이 소개하지 않습니다

사육사 학습 시리즈 [A]는 사육사 몇 가지 기본 개념을 가르 칠 사육사 사육사 [세] 학습 시리즈 클러스터 아키텍처, 읽기, 쓰기 및 일관성의 원칙 (ZAB 협정)에 대한 메커니즘

사육사 읽고 쓰기기구와 일관성 프로토콜은 그것이 CP 시스템이라고 판단한다.

장점과 단점

사육사 가장 널리 배포 조정 구성 요소로, 장점은 많다. 광범위한 사용은 쉽게 기술 건축가 선택에서 사육사을 활용할 수있게 자사의 가장 큰 장점이다. 그러나, 명확하게 서비스가 사육사 검색 필드, 선거에서 분산 강력한 일관성 장면과 분산 잠금 주요 장점에 대한 최선의 선택이 아니라고 주장한다. 때문에 네트워크 장애 및 선거 트리거 시스템의 다른 노드와 손실 접촉의 마스터 노드 사육사가 클러스터를 사용할 수없는 경우,이 선거 기간 동안 등록 된 서비스 시스템의 마비로 이어질 것입니다.

추가 읽기 알리바바 왜 사육사 서비스 검색을하지?

데이터 일관성 요구 사항에 대한 서비스 센터가 매우 더 중요하다 (지연이있을 것)을 요구하지만, 실시간 인식을 달성하기 어렵다 아래로 이동하지 않는 것은 자신을 치유 할 수있는 능력이다. 클라이언트 측 캐싱 기능에 의해 사육사는 큐레이터 사육사의 서비스 분야에서 적응의 높은 수준을 발견 할 수 있습니다,하지만이 사육사의 기본 용량 및 설계되지 않았습니다.

etcd

오픈 소스 커뮤니티에서 점점 뜨거운 CoreOS과는 Kubernetes 다른 프로젝트로, 고 가용성, 서비스 검색의 강력한 저장 창고 일관성로 사용되는 etcd 프로젝트 구성 요소는 개발자의 비전에 점점.

의 image.png

etcd 사육사에 의해 영감 프로젝트, 그리고 유사한 구조와 기능이있는 더 간단한 뗏목 기반 프로토콜과 언어 이동을 달성하기를. etcd 또한 CP 시스템은 일관성은 가용성 요구 사항보다 더 강한 요구한다. etcd TTL (타임 라이브, 생존 기간)에 의해 유사한 기능 사육사의 임시 노드를 달성하기 위해 클라이언트 필요 etcd 지속적으로 서비스의 타이밍 갱신 노드의 작동 상태를 결정합니다.

특정 확장은 다음 문서를 읽을 수 있습니다.

또한 독서 etcd : 시나리오에서 라운드 독서의 원리를 구현하는

공식 웹 사이트 : etcd.io/

그런 다음 문서의 해석의 원칙을 구현 etcd 높은 품질을 소개 : 분산 스토리지 etcd의 가용성의 원리를

사육사는 비교, etcd는 다음과 같은 장점이 있습니다 :

  1. 간단한. 이동 언어 사용하여 배포 간단 , 사용 HTTP를 인터페이스로 사용하기 쉬운, 즉 사용자가 쉽게 이해할 수 있도록 사용 뗏목 알고리즘은 강력한 일관성을 보장합니다 .
  2. 데이터 지속성 . etcd 지속성에 대한 기본 데이터에 대한 업데이 트.
  3. 보안 . etcd 지원 SSL 클라이언트 보안 인증.

유레카

유레카 주로 중간층 AWS 서비스 도메인을 위치시키는, 넷플릭스를 연다. 유레카는 등록 센터 봄 클라우드로 사용하고 있기 때문에, 따라서 많은 관심이 될 수 있습니다. 서버와 클라이언트 구성 요소에 의해 유레카. 유레카는 일반적으로 단순화 된 서버와의 상호 작용에 서버 서비스 등록 서버, 유레카 클라이언트로 사용되는 부하 분산 장치로 폴링 서비스 장애 복구에 대한 지원을 제공합니다.

CP 시스템의 종류보다는 유레카 사육사는 레지스트리 서비스 검색 시스템으로 적합하다. 유레카 우선 순위 가용성을 보장하기 위해, 그것은 디자인 개념에 분산, 사용하는 전체 서비스 클러스터가 피어 노드로 구성, 사육사 등의 마스터 노드는 어떠한 선거. 클러스터 노드 장애에서 노드는 정상적인 외부 서비스 등록 서비스 및 쿼리 기능에 영향을주지 않습니다 . 우리는 유레카 서버에 서비스를 등록 할 때 연결이 실패 발견하면 유레카 클라이언트가 장애 조치 할 수있는 능력을 가지고, 자동으로 다른 노드로 전환됩니다. 서버 노드가있는 경우 따라서, 유레카는 제대로 작동 할 수, 당신은 레지스트리의 가용성에 대해 걱정할 필요가 없습니다. 그러나 필연적으로 정보를 클라이언트 쿼리의 손실로 이어질 것입니다 데이터 가용성의 일관성을 보장하기 위해 반드시 최신되지 않습니다 .

정의되지 않은

더 이상 서비스 레지스트리 유지하지만 업그레이드하지 않은 경우에도 현재 기능은 매우 안정적했다고 발표되지 않았지만 유레카 2.X / 이러한 기능의 발견은 충분히 있었다

영사

HashiCorp 제품에서 영사는 다음과 같은 몇 가지 열 속성을 제공하는 서비스 검색, 더 광범위한 건강 검진 (메모리, 디스크 사용량 및 기타 세분화 된 서비스 상태 감지 기능) 키 - 값 쌍을 저장 기능, 다중 데이터 센터 (기술 공식 웹 사이트 네 가지 주요 기능). 그리고 다른 프로그램은 "원 스톱"기능을 비교했다.

의 image.png

영사는 이동 언어를 사용, 따라서 (리눅스, 윈도우와 맥 OS X에 대한 지원) 자연의 휴대 성을 가지고, 패키지는 원활하게 들어갈 수 도커 및 기타 경량 컨테이너 배포를 용이하게하는 실행 파일이 포함되어 있습니다.

그리고 더 많은 노드의 절반이 재선 동안 영사를 통해 성공적인 리더 요령 고려 된 등록의 성공을 기반으로 작성된 것보다 요구 사용할 수 없습니다처럼, 영사 뗏목 계약을, etcd. 유용성의 비용으로 강력한 일관성을 보장합니다.

저자는 영사에 많은 연구가 아니라, 관심있는 독자는 자신의 학습에 관련 문서에 액세스 할 수 있습니다.

공식 웹 사이트 : www.consul.io/

nacos

Nacos는 국내 알리바바의 새로운 오픈 소스 프로젝트이며, 핵심 위치는 "도움말 빌드에 쉽게 동적 서비스 검색, 구성 및 서비스 관리 플랫폼의 클라우드 네이티브 응용 프로그램"입니다. (인기 이해, 레지스트리 + 구성 센터)

의 image.png

서비스 (서비스) 일류 시민 Nacos의 세계입니다. Nacos는 "서비스"검색, 구성 및 관리의 거의 모든 주요 유형을 지원합니다 :

  • 는 Kubernetes 서비스

  • gRPC 및 두보 RPC 서비스

  • 봄 클라우드 RESTful 서비스

Nacos 주요 기능은 다음과 같습니다 :

  • 서비스 검색 및 건강 모니터링 서비스
  • 동적 구성 서비스
  • 동적 DNS 서비스
  • 서비스 및 메타 데이터 관리

보다 많은 콘텐츠, Nacos 공식 문서를 확장 읽어 보시기 바랍니다 :

또한 독서 nacos.io/zh-cn/docs / ...

개요

이 장에서는 영감을 기대하고, 현재 시장에서 더 인기있는 서비스 레지스트리에서 관련 지식 검색 서비스 및 관련 특성에 대해 설명합니다.

우리의 다음 문제는 다시 될 것입니다.

참조 기사

  1. Microservices 아키텍처 서비스 검색
  2. Microservices : 서비스 등록 및 검색
  3. 서비스 검색
  4. nacos.io/zh-cn/
  5. etcd : 시나리오에서 모든 라운드 독서의 원리를 달성하기 위해
  6. "클라우드에서 서비스로 네이티브"
  7. "마이크로 서비스 설계"

당신에게 도움이 문서가, 칭찬을 발견하기를 바라고 있다면, 이것은 나에게 가장 큰 원동력이다.

추천

출처juejin.im/post/5dde5db16fb9a07175551fc9