채팅 서비스 등록 서비스 등록 및 검색 마이크로 마이크로 통화 서비스와 검색 서비스

발췌 : https://www.cnblogs.com/mayou18/p/9829876.html

마이크로 통화 서비스 등록 및 검색 서비스

출처 : 알리 미들웨어 팀 주 더 많은 기사가 방문하시기 바랍니다  MAYOU18을

마이크로 서비스 등록 서비스를 담소를 나눴다하고 많은 사람들이 즉시 ZK을 불쑥 것을 발견, 영사, 유레카 이러한 구성 요소를 etcd 다음 성능, 고 가용성 및 재해 복구를 달성하는 방법을 어떻게 선택하는 방법 CAP 이야기.

소개

마이크로 서비스 등록 서비스를 담소를 나눴다하고 많은 사람들이 즉시 ZK을 불쑥 것을 발견, 영사, 유레카 이러한 구성 요소를 etcd 다음 성능, 고 가용성 및 재해 복구를 달성하는 방법을 어떻게 선택하는 방법 CAP 이야기.

나는 몇 가지 질문을하고 싶습니다 그래서, 구성 요소 사용자의 관점에 서, 이에 앞서 :

  • 어떻게 등록 된 IP와 포트를 결정?

  • 등록되는 정보 서비스 관리 요구 사항을 구현?

  • 서비스를 오프라인으로 어떻게 우아한 서비스 등록?
  • 건강 체크 등록 서비스는 어떻게 할 수 있나요?
  • 서비스가 노드를 종료되거나 새로운 노드가 추가되면, 가입자는 적시에 통지를받을 수 없습니다?
  • 나는 쉽게 응용 프로그램을 게시하고 노드뿐만 아니라 가입 서비스 서비스에 가입 볼 수 있습니까?

이러한 질문을 읽고 나면, 당신은 그 등록 서비스 검색 자체 및 성능과 고 가용성 약 우선 관심을 가져야, 서비스 등록 및 검색에, 찾을 수 있습니다.

좋은 등록 서비스 검색 미들웨어는 완벽하게 서비스 개발 및 관리하고 성능과 고 가용성의 기본 기능을 충족 할 수 있어야한다. 이전 기능이 명확하지 않게 생각하는 경우, 고 가용성 및 성능은 구름입니다. 마지막으로, 보안은 똑같이 중요하다.

  • 어떻게 서버의 성능?

  • 무엇의 재해 복구 서비스 전략 발견?

  • 연결 내 네트워크 애플리케이션과 서비스에 문제가 디스커버리 센터를 나타납니다 때, 나는 어떤 영향을 부를 것이다?
  • 서비스 레지스트리 때 기계가 다운 또는 아래, 나는 전체에 영향을 미칠 무엇을 부를 것이다?
  • 가입 및 링크 보안 서비스를 발견, 좋은 권한 제어가 없다?

주류의 세 가지 주요 측면에 대답 할 수있는 서비스 등록, 서비스 검색, 재해 복구 및 고 가용성에서 다음은이 질문에 접근한다.

마지막으로, ANS는 (알리바바는 네임 서비스) 소개, ANS는 이러한 솔루션의 장점을 결합하고, EDAS (알리 바바 기업 분산 응용 프로그램 서비스)를 출력, 현재 완전 무료!

서비스 등록

어떻게 등록 된 IP와 포트를 결정?

어떻게 IP를 확인하는

이러한 방법은 주류의 IP 획득에게 있습니다.

  • 가장 간단하고 원유 방법은, 수동 구성은 IP를 등록해야합니다. 마이크로 수준의 지원 서비스 확대의 수준을 지원할 수없는 다중 시스템 구축의 기본적으로 확장, 구성 모드 코드에 하드 코딩 IP 주소이기 때문에 물론,이 방법은 단순히 프로덕션 환경에서 사용할 수 없습니다, 운영 및 유지 보수는 큰 가져올 것 비용.

  • 네트워크 카드를 횡단의 방법으로 획득하려면, 먼저 로컬 루프백 IP 주소에 대한 주소를 찾을 수 있습니다. 대부분의 경우, 프레임 등이 비교적 용이하게, 보행이 방법에 사용된다.

  • 방에 더 나은 표준화를 계획 일부 네트워크에서는 수동으로 네트워크 카드를 등록 할 IP 주소를 해당 지정하는 NIC 그 인터페이스 이름 방법의 이름을 지정할 수 있습니다.
  • 이러한 세 가지 방법이 효과적으로 문제를 해결할 수없는 경우, 서비스 레지스트리에 직접 소켓 연결을 설정 한 다음 방법이 socket.getLocalAddress() 이 방법으로 컴퓨터의 IP를 얻을 수는.

어떻게 포트를 결정하는 방법

표준화 된 체계가없는 포트를 가져옵니다.

  • 구성 지정된 포트 듣기 서비스, 등록 된 값 중 하나 포트 구성 항목이있는 경우 RPC 응용 프로그램을 시작합니다.

  • 제공되는 기존의 웹 컨테이너의 HTTP 응용 프로그램, 또한 선박의 수신 대기 포트를 구성하는 구성 파일이 구성 항목 중 하나의 포트 값을 등록했다.

  • 특히, 자바 애플리케이션을위한 봄 부트 프레임 워크, 그것은 수 있습니다  EmbeddedServletContainerInitializedEvent. getEmbeddedServletContainer().getPort()얻을 수. (봄 부트 버전 1.x).

등록되는 정보 서비스 관리 요구 사항을 구현?

간단하게 IP 및 포트 정보는 서비스 호출의 기본적인 요구를 충족하도록 등록하지만, 어느 정도 사업 개발, 우리는 이러한 요구 사항을해야합니다 :

  • 는 HTTP 서비스가 TLS 켜져 알고 싶어요.

  • 다른 무게, 트래픽 스케줄링의 동일한 서비스에서 다른 노드로 제공.

  • 서비스는 사전 개발 환경 및 제조 환경으로 분할되고, AB 테스트 기능을 용이하게한다.
  • 플러스 룸 태그를 다른 룸 서비스 등록, 같은 방에 우선 순위를 달성하기 위해 라우팅 규칙.

기본적으로 서비스 메타 데이터가 최대 등록되지 않은 경우 통화가 있지만, 밀짚없이 벽돌을 만들에만 수있을 때 전략과 전술 클라이언트 호출을로드 밸런싱에 따라, 이러한 고급 기능을 구현합니다. 초기 설계에서 좋은 서비스 레지스트리는 이러한 확장 필드를 지원해야한다.

서비스를 오프라인으로 어떻게 우아한 서비스 등록?

우아한 출시

서비스 등록은 일반적으로 스타트 업 서비스 중에 발생하지만, 세분 후, 있었어야 완전히 등록 서비스는 서비스에 성공적으로 시작하고 외부 서비스 후 가입 할 준비가 있지만.

  • 일부 RPC 프레임 워크 자체가 서비스가 같은 드리프트로, 완료 시작되었는지 여부를 확인하는 방법을 제공, 우리는 Server.isServing는 () 결정 할 수 있습니다.

  • 완벽한 서비스를 제공하지 않는 일부 RPC 프레임 워크 자체가 우리가 포트가 수신 대기 상태에서 검출되었는지 여부를 판단 할 수있다, 시작하는 방법입니다.

  • HTTP 서비스의 경우, 서비스는 포트가 수신되는지 여부를 판단 할 수 있습니다 완료 활성화할지 여부를 지정합니다.
  • 특히, 자바 애플리케이션을위한 봄 부트 프레임 워크, 당신은 용기가 이벤트 알림의 형태로 (봄 부트 버전 1.x)를 완료 시작 통지, 컨테이너가 완료 EmbeddedServletContainerInitializedEvent 이벤트를 통지하기 시작할 수 있습니다.

우아한 오프라인

응용 프로그램이 자동으로 서비스에 해당 노드의 제거를 중지 한 후 서비스 레지스트리의 대부분은, 건강 검진을 제공합니다. 그러나 우리는 완전히 응용 프로그램은 중지 할 때 서비스 레지스트리에 조립 라인 인터페이스 해제 서비스를 호출 주도권을 쥐고해야이 기능에 의존 할 수 없다.

  • Java 응용 프로그램에서 일반적으로 사용하는 JVM 종료 후크 방식의 조립 라인 오프 공통 서비스 인터페이스 호출을 달성했다.

  • 특히, 스프링 프레임 워크 자바 응용 프로그램은 응용 프로그램 인터페이스를 중지 서비스를 오프라인으로 호출하는 봄 콩 라이프 사이클 이니셔티브에 의해 구현 될 수있다.

  • 그것은이 잔인한 살인 -9 정지 모드가 표시되지 않습니다 보장 할 수는 없지만 응용 프로그램이 조립 라인 인터페이스 해제 서비스도 예외 처리를하지 않았다 없음 네트워크 및 기타 비정상적인 장면을 요구하려고 호출하기 때문에 물론, 두 가지 방법 위는 충분한 은혜가 아닙니다. 따라서 클라이언트가 여전히로드 밸런싱 및 장애 복구를 처리 할 준비를해야 호출합니다.
  • 적절한 애플리케이션에 대응하는 더 우아한 방식은 0으로 제 1 리셋을 멈출 일절 본 출원의 상류 부를 것이다. 이 시간은 물론,이 시나리오는 운영 및 유지 보수 및 배포 도구를 결합 깊이로드 밸런싱의 무게에 의해 달성하기 위해 가입자를 요구, 서비스 가입자에 영향을 미치지 않았다 응용 프로그램의 작동을 중지합니다.

건강 검사 서비스는 어떻게 할 것입니다?

건강 검진은 두 가지 방법으로 클라이언트와 서버 하트 비트 활성 감지으로 나누어 져 있습니다.

  • 클라이언트 하트 비트

  • 또한 클라이언트는 HTTP의 형태로, TCP의 형태 일 수있다 정상 심장 박동의 서버 서비스 상태를 표시하기 위해 정기적으로 "하트 비트"방법을 보냅니다.

  • 또한 긴 소켓 클라이언트와 서버를 유지하기 위해 마음을 통해 그의 방법을 실현하기 위해 클라이언트를 연결할 수 있습니다.

  • 사육사가 적극적으로 하트 비트를 전송하지만, 자체 임시 노드를 제공하는 구성 요소의 특성에 의존하지, 노드는 세션 사육사 임시 연결에 의해 유지했다.

그러나 클라이언트 응답, 활성 하트 비트와 클라이언트의 긴 연결 그냥 링크를 일반 보여 유지 보수, 서비스 상태는 반드시 정상이 아니다.

서버가 자동으로 호출 서비스 건강 검진 결과는 서비스 상태의 성공은 참으로 정상입니다 보여 반환하는 더 정확한 방법입니다.

  • 활동 감지 서버
  • 서버 상태 확인을 완료 할 수있는 서비스 게시자 HTTP 인터페이스를 호출합니다.
  • HTTP 서비스가 RPC 응용 프로그램을 제공하지 않는 경우, 서버 호출 인터페이스 서비스 게시자는 건강 검진을 완료합니다.
  • 당신은 스크립트의 형태로 종합적인 검사를 수행 할 수 있습니다.

서버 활성 감지도 문제가있다. 서비스 레지스트리 자동으로 호출 RPC 서비스 인터페이스의 다양성에서 수행 될 수 없다 네트워크 서비스 게시자에게 많은 장면에서 서비스 레지스트리는 부당, 서버는 건강 검진을 시작할 수 없습니다.

그래서 선택하는 방법, 여전히 다른 시나리오에 따르면, 실제 상황에 따라 결정해야 할 다른 전략을 선택합니다.

서비스 검색

어떻게 서비스 검색 서버의 주소를 찾는 방법은?

  • 사육사와 유레카 유사한 응용 프로그램의 구성 파일에 등록 된 서비스 센터의 주소를 지정합니다.
  • 서버 주소의 주소를 지정하고 서버의 주소로 서비스 레지스트리의 주소를 얻기 위해, 서버는 결과의 주소가 용량을 확장의 서비스 레지스트리 업데이트됩니다 반환합니다.

새로운 노드와 서비스 노드가 참여하거나 종료 할 때, 가입자는 적시에 통지 방법을 받게?

클래식 푸시 및 풀 문제.

클래식의 두 밀어, 같은 사육사 기반 전형적인 구현으로, 소켓 연결 길이를 알려 롱 폴링 다른 HTTP 연결합니다.

그러나 긴 소켓 연결을 기반으로 메시지 손실 문제가 통지하고 통지 HTTP 기반 프로토콜 롱 폴링 것이다.

그것은 타이밍 폴링 풀의 방법으로도 중요한 시간 간격을 선택, 필요하다, 서비스 레지스트리 더 큰 압력의 높은 주파수. 스케일은 트레이드 오프의 비즈니스의 성능과 서비스 측면의 조합을 필요로한다.

또 다른 방법은 사실 푸시 클라이언트는 UDP 방식을 통해 푸시에 UDP 서버, 서비스 레지스트리 데이터를 열고,이, 물론,이 또한 네트워크의 연결에 의해 제한된다.

난 쉽게 내가 게시하고 서비스를 노드 구독 서비스에 가입 무엇을 볼 수 있습니까?

  • 기계, 로그 만보고, 분명히 아주 나쁜 경험을 얻기도 jmap는 방법을 게시하고 서비스에 가입하면 좋은 제품, 사용자 경험과 운영 및 유지 보수 경험을보고, 우아한해야합니다.

  • 서비스 레지스트리는 멀티 레벨 결합 된 쿼리를 수행하기 위해, 출판 서비스 이름, 서비스 이름에 가입, 지원 응용 프로그램 이름에 따라, IP를 풍부한 인터페이스를 제공해야한다.

  • 동시에, 클라이언트의 메모리는 다양한 정보와 예약 서비스 구독을 게시해야하고, 쉽게 쿼리에 사람들을위한 방법을 제공합니다.
  • 예를 들어, Java 응용 프로그램 봄 부팅에, 그리고 방법에 의해 네이티브 HTTP 서비스 쿼리를 제공하기 위해, 액츄에이터 엔드 포인트를 결합 할 수 있습니다, 서비스뿐만 아니라 해당 노드 가입 서비스 및 다양한 서비스를 게시이 응용 프로그램을 선택합니다.

재해 복구 및 고 가용성

어떻게 성능

서비스 노드가 상승하면, 서비스 레지스트리의 성능 병목 현상, 수평 확장을 통해 클러스터 서비스 레지스트리의 성능을 개선 할 필요성에이 시간이 될 것입니다. 

  • 각 쓰기 작업의 절반 이상부터 같은 사육사와 같은 강력한 일관성 클래스 Paxos 프로토콜 구성 요소를 사용하는 사람들의 경우, 확인 노드를 필요로한다. 확장은 전체 클러스터의 읽기 성능을 향상시킬 수 있습니다 전체 클러스터의 쓰기 성능의 수준을 올릴 수 없습니다. 
  • 구성 요소의 최종 일관성의 사용에 관해서는, 확장의 수준은 쓰기 성능을 개선하고 동시에 전체 클러스터의 성능을 읽을 수 있습니다.

클라이언트 재해 복구 전략

  1. 서비스 레지스트리 또는 레지스트리 서비스를 완전히, 여전히 일반 전화 서비스를 실행할 때 먼저 로컬 메모리 캐시 및 연결이 손실됩니다.

  2. 로컬 캐시 파일, 응용 프로그램 및 서비스 등록 센터 네트워크 파티션 또는 등록 서비스 센터 응용 프로그램이 작업을 다시 시작할 때 완전히 다운, 메모리는 응용 프로그램이 로컬 캐시 파일의 데이터를 읽어 얻을 수있다 데이터, 없다 컨텐츠에 마지막으로 구독.

  3. 마지막으로, 지역의 재해 복구 폴더에 있습니다. 정상적인 상황에서는 재해 복구 폴더 내용이 아닙니다. 서버가 완벽하고 서비스 제공자가받은 큰 변화를 가지고있는 동안 연장 가동 중단 시간, 복원 할 수없는 경우, 당신은 파일 폴더 재해 복구 모드에서 파일을 추가하여 지역 재해 복구를 설정할 수 있습니다. 이 시점에서 클라이언트는 로컬 재해 복구에서 구성 파일을 읽고, 원래 로컬 캐시 파일을 무시합니다.

재해 복구 및 고 가용성 서버

  • 새로운 노드가 클러스터에 가입하면, 노드는 자동으로 서버의 주소에 추가하기 시작하고, 다른 노드가 자동으로 최종 데이터 일관성에 도달하기 위해 다른 노드에서 데이터를 동기화를 통해 서버의 주소를 찾을 수 있습니다. 
  • 노드가 다운되면, 정보가 자동으로 서버 노드 제거의 서비스 센터 주소 등록되며, 클라이언트는 즉시이 노드를 오프라인으로 인식 할 수 있습니다. 

상태 비 저장 서버는 얇은 재해 복구 할 수있는 고 가용성 서비스를 보장합니다.

서버 할 일이 얼마나 안전합니까?

링크 보안, 사용 HTTP 연결을위한 서비스 레지스트리, 링크의 보안을 보호하는 가장 좋은 방법은 HTTPS를 사용하고 있습니다. 일반적으로 개인 계약에 의해 사용되는 응용 프로그램 계층 프로토콜은 반드시 준비 TLS 지원 프로그램이 없기 때문에, TCP 연결을 사용하여 서비스 레지스트리.

보안 비즈니스에서는 비즈니스 정보의 보안을 보장하기 위해 기호 검사 및 인증에 대한 라인에 넣어 모든 자료, 구독, 심장 박동, 인증 정보에 있어야합니다.

알리바바 이름 지정 서비스

ANS (네임 서비스 알리바바는) 알리바바 비즈니스 관행의 강수량은 오픈 소스 제품을 연마 몇 년 동안 미들웨어 팀이다. 측면에서 서비스 등록 및 발견, ANS는이 솔루션의 장점은 클라우드 네이티브 응용 프로그램 서비스 등록 및 검색 구성 요소의 최적 결합합니다.
ANS는 라인 EDAS (알리 바바 기업 분산 응용 프로그램 서비스)에서 서비스하고있다, 직접 서비스 등록 및 발견의 안전하고 신뢰할 수있는 상용 버전을 사용하여 봄 클라우드 Ans By의 스타터 봄 클라우드 편리한 사용자에 사용할 수 있습니다. ANS 완벽 유레카의 특성을 지원하고, 완전 무료 지금입니다! 자세한 내용은 다음을 참조  EDAS 도움말 문서를 .

찾는주의 : www.mayou18.com JAVA 기술 교류 그룹 : 516,348,359 Jstorm 기술 교류 그룹 : 199 260 183
 
카테고리 :  기술 열

출처 : 알리 미들웨어 팀 주 더 많은 기사가 방문하시기 바랍니다  MAYOU18을

마이크로 서비스 등록 서비스를 담소를 나눴다하고 많은 사람들이 즉시 ZK을 불쑥 것을 발견, 영사, 유레카 이러한 구성 요소를 etcd 다음 성능, 고 가용성 및 재해 복구를 달성하는 방법을 어떻게 선택하는 방법 CAP 이야기.

소개

마이크로 서비스 등록 서비스를 담소를 나눴다하고 많은 사람들이 즉시 ZK을 불쑥 것을 발견, 영사, 유레카 이러한 구성 요소를 etcd 다음 성능, 고 가용성 및 재해 복구를 달성하는 방법을 어떻게 선택하는 방법 CAP 이야기.

나는 몇 가지 질문을하고 싶습니다 그래서, 구성 요소 사용자의 관점에 서, 이에 앞서 :

  • 어떻게 등록 된 IP와 포트를 결정?

  • 등록되는 정보 서비스 관리 요구 사항을 구현?

  • 서비스를 오프라인으로 어떻게 우아한 서비스 등록?
  • 건강 체크 등록 서비스는 어떻게 할 수 있나요?
  • 서비스가 노드를 종료되거나 새로운 노드가 추가되면, 가입자는 적시에 통지를받을 수 없습니다?
  • 나는 쉽게 응용 프로그램을 게시하고 노드뿐만 아니라 가입 서비스 서비스에 가입 볼 수 있습니까?

이러한 질문을 읽고 나면, 당신은 그 등록 서비스 검색 자체 및 성능과 고 가용성 약 우선 관심을 가져야, 서비스 등록 및 검색에, 찾을 수 있습니다.

좋은 등록 서비스 검색 미들웨어는 완벽하게 서비스 개발 및 관리하고 성능과 고 가용성의 기본 기능을 충족 할 수 있어야한다. 이전 기능이 명확하지 않게 생각하는 경우, 고 가용성 및 성능은 구름입니다. 마지막으로, 보안은 똑같이 중요하다.

  • 어떻게 서버의 성능?

  • 무엇의 재해 복구 서비스 전략 발견?

  • 연결 내 네트워크 애플리케이션과 서비스에 문제가 디스커버리 센터를 나타납니다 때, 나는 어떤 영향을 부를 것이다?
  • 서비스 레지스트리 때 기계가 다운 또는 아래, 나는 전체에 영향을 미칠 무엇을 부를 것이다?
  • 가입 및 링크 보안 서비스를 발견, 좋은 권한 제어가 없다?

주류의 세 가지 주요 측면에 대답 할 수있는 서비스 등록, 서비스 검색, 재해 복구 및 고 가용성에서 다음은이 질문에 접근한다.

마지막으로, ANS는 (알리바바는 네임 서비스) 소개, ANS는 이러한 솔루션의 장점을 결합하고, EDAS (알리 바바 기업 분산 응용 프로그램 서비스)를 출력, 현재 완전 무료!

서비스 등록

어떻게 등록 된 IP와 포트를 결정?

어떻게 IP를 확인하는

이러한 방법은 주류의 IP 획득에게 있습니다.

  • 가장 간단하고 원유 방법은, 수동 구성은 IP를 등록해야합니다. 마이크로 수준의 지원 서비스 확대의 수준을 지원할 수없는 다중 시스템 구축의 기본적으로 확장, 구성 모드 코드에 하드 코딩 IP 주소이기 때문에 물론,이 방법은 단순히 프로덕션 환경에서 사용할 수 없습니다, 운영 및 유지 보수는 큰 가져올 것 비용.

  • 네트워크 카드를 횡단의 방법으로 획득하려면, 먼저 로컬 루프백 IP 주소에 대한 주소를 찾을 수 있습니다. 대부분의 경우, 프레임 등이 비교적 용이하게, 보행이 방법에 사용된다.

  • 방에 더 나은 표준화를 계획 일부 네트워크에서는 수동으로 네트워크 카드를 등록 할 IP 주소를 해당 지정하는 NIC 그 인터페이스 이름 방법의 이름을 지정할 수 있습니다.
  • 이러한 세 가지 방법이 효과적으로 문제를 해결할 수없는 경우, 서비스 레지스트리에 직접 소켓 연결을 설정 한 다음 방법이 socket.getLocalAddress() 이 방법으로 컴퓨터의 IP를 얻을 수는.

어떻게 포트를 결정하는 방법

표준화 된 체계가없는 포트를 가져옵니다.

  • 구성 지정된 포트 듣기 서비스, 등록 된 값 중 하나 포트 구성 항목이있는 경우 RPC 응용 프로그램을 시작합니다.

  • 제공되는 기존의 웹 컨테이너의 HTTP 응용 프로그램, 또한 선박의 수신 대기 포트를 구성하는 구성 파일이 구성 항목 중 하나의 포트 값을 등록했다.

  • 특히, 자바 애플리케이션을위한 봄 부트 프레임 워크, 그것은 수 있습니다  EmbeddedServletContainerInitializedEvent. getEmbeddedServletContainer().getPort()얻을 수. (봄 부트 버전 1.x).

등록되는 정보 서비스 관리 요구 사항을 구현?

간단하게 IP 및 포트 정보는 서비스 호출의 기본적인 요구를 충족하도록 등록하지만, 어느 정도 사업 개발, 우리는 이러한 요구 사항을해야합니다 :

  • 는 HTTP 서비스가 TLS 켜져 알고 싶어요.

  • 다른 무게, 트래픽 스케줄링의 동일한 서비스에서 다른 노드로 제공.

  • 서비스는 사전 개발 환경 및 제조 환경으로 분할되고, AB 테스트 기능을 용이하게한다.
  • 플러스 룸 태그를 다른 룸 서비스 등록, 같은 방에 우선 순위를 달성하기 위해 라우팅 규칙.

기본적으로 서비스 메타 데이터가 최대 등록되지 않은 경우 통화가 있지만, 밀짚없이 벽돌을 만들에만 수있을 때 전략과 전술 클라이언트 호출을로드 밸런싱에 따라, 이러한 고급 기능을 구현합니다. 초기 설계에서 좋은 서비스 레지스트리는 이러한 확장 필드를 지원해야한다.

서비스를 오프라인으로 어떻게 우아한 서비스 등록?

우아한 출시

서비스 등록은 일반적으로 스타트 업 서비스 중에 발생하지만, 세분 후, 있었어야 완전히 등록 서비스는 서비스에 성공적으로 시작하고 외부 서비스 후 가입 할 준비가 있지만.

  • 일부 RPC 프레임 워크 자체가 서비스가 같은 드리프트로, 완료 시작되었는지 여부를 확인하는 방법을 제공, 우리는 Server.isServing는 () 결정 할 수 있습니다.

  • 완벽한 서비스를 제공하지 않는 일부 RPC 프레임 워크 자체가 우리가 포트가 수신 대기 상태에서 검출되었는지 여부를 판단 할 수있다, 시작하는 방법입니다.

  • HTTP 서비스의 경우, 서비스는 포트가 수신되는지 여부를 판단 할 수 있습니다 완료 활성화할지 여부를 지정합니다.
  • 특히, 자바 애플리케이션을위한 봄 부트 프레임 워크, 당신은 용기가 이벤트 알림의 형태로 (봄 부트 버전 1.x)를 완료 시작 통지, 컨테이너가 완료 EmbeddedServletContainerInitializedEvent 이벤트를 통지하기 시작할 수 있습니다.

우아한 오프라인

응용 프로그램이 자동으로 서비스에 해당 노드의 제거를 중지 한 후 서비스 레지스트리의 대부분은, 건강 검진을 제공합니다. 그러나 우리는 완전히 응용 프로그램은 중지 할 때 서비스 레지스트리에 조립 라인 인터페이스 해제 서비스를 호출 주도권을 쥐고해야이 기능에 의존 할 수 없다.

  • Java 응용 프로그램에서 일반적으로 사용하는 JVM 종료 후크 방식의 조립 라인 오프 공통 서비스 인터페이스 호출을 달성했다.

  • 특히, 스프링 프레임 워크 자바 응용 프로그램은 응용 프로그램 인터페이스를 중지 서비스를 오프라인으로 호출하는 봄 콩 라이프 사이클 이니셔티브에 의해 구현 될 수있다.

  • 그것은이 잔인한 살인 -9 정지 모드가 표시되지 않습니다 보장 할 수는 없지만 응용 프로그램이 조립 라인 인터페이스 해제 서비스도 예외 처리를하지 않았다 없음 네트워크 및 기타 비정상적인 장면을 요구하려고 호출하기 때문에 물론, 두 가지 방법 위는 충분한 은혜가 아닙니다. 따라서 클라이언트가 여전히로드 밸런싱 및 장애 복구를 처리 할 준비를해야 호출합니다.
  • 적절한 애플리케이션에 대응하는 더 우아한 방식은 0으로 제 1 리셋을 멈출 일절 본 출원의 상류 부를 것이다. 이 시간은 물론,이 시나리오는 운영 및 유지 보수 및 배포 도구를 결합 깊이로드 밸런싱의 무게에 의해 달성하기 위해 가입자를 요구, 서비스 가입자에 영향을 미치지 않았다 응용 프로그램의 작동을 중지합니다.

건강 검사 서비스는 어떻게 할 것입니다?

건강 검진은 두 가지 방법으로 클라이언트와 서버 하트 비트 활성 감지으로 나누어 져 있습니다.

  • 클라이언트 하트 비트

  • 또한 클라이언트는 HTTP의 형태로, TCP의 형태 일 수있다 정상 심장 박동의 서버 서비스 상태를 표시하기 위해 정기적으로 "하트 비트"방법을 보냅니다.

  • 또한 긴 소켓 클라이언트와 서버를 유지하기 위해 마음을 통해 그의 방법을 실현하기 위해 클라이언트를 연결할 수 있습니다.

  • 사육사가 적극적으로 하트 비트를 전송하지만, 자체 임시 노드를 제공하는 구성 요소의 특성에 의존하지, 노드는 세션 사육사 임시 연결에 의해 유지했다.

그러나 클라이언트 응답, 활성 하트 비트와 클라이언트의 긴 연결 그냥 링크를 일반 보여 유지 보수, 서비스 상태는 반드시 정상이 아니다.

서버가 자동으로 호출 서비스 건강 검진 결과는 서비스 상태의 성공은 참으로 정상입니다 보여 반환하는 더 정확한 방법입니다.

  • 활동 감지 서버
  • 서버 상태 확인을 완료 할 수있는 서비스 게시자 HTTP 인터페이스를 호출합니다.
  • HTTP 서비스가 RPC 응용 프로그램을 제공하지 않는 경우, 서버 호출 인터페이스 서비스 게시자는 건강 검진을 완료합니다.
  • 당신은 스크립트의 형태로 종합적인 검사를 수행 할 수 있습니다.

서버 활성 감지도 문제가있다. 서비스 레지스트리 자동으로 호출 RPC 서비스 인터페이스의 다양성에서 수행 될 수 없다 네트워크 서비스 게시자에게 많은 장면에서 서비스 레지스트리는 부당, 서버는 건강 검진을 시작할 수 없습니다.

그래서 선택하는 방법, 여전히 다른 시나리오에 따르면, 실제 상황에 따라 결정해야 할 다른 전략을 선택합니다.

서비스 검색

어떻게 서비스 검색 서버의 주소를 찾는 방법은?

  • 사육사와 유레카 유사한 응용 프로그램의 구성 파일에 등록 된 서비스 센터의 주소를 지정합니다.
  • 서버 주소의 주소를 지정하고 서버의 주소로 서비스 레지스트리의 주소를 얻기 위해, 서버는 결과의 주소가 용량을 확장의 서비스 레지스트리 업데이트됩니다 반환합니다.

새로운 노드와 서비스 노드가 참여하거나 종료 할 때, 가입자는 적시에 통지 방법을 받게?

클래식 푸시 및 풀 문제.

클래식의 두 밀어, 같은 사육사 기반 전형적인 구현으로, 소켓 연결 길이를 알려 롱 폴링 다른 HTTP 연결합니다.

그러나 긴 소켓 연결을 기반으로 메시지 손실 문제가 통지하고 통지 HTTP 기반 프로토콜 롱 폴링 것이다.

그것은 타이밍 폴링 풀의 방법으로도 중요한 시간 간격을 선택, 필요하다, 서비스 레지스트리 더 큰 압력의 높은 주파수. 스케일은 트레이드 오프의 비즈니스의 성능과 서비스 측면의 조합을 필요로한다.

또 다른 방법은 사실 푸시 클라이언트는 UDP 방식을 통해 푸시에 UDP 서버, 서비스 레지스트리 데이터를 열고,이, 물론,이 또한 네트워크의 연결에 의해 제한된다.

난 쉽게 내가 게시하고 서비스를 노드 구독 서비스에 가입 무엇을 볼 수 있습니까?

  • 기계, 로그 만보고, 분명히 아주 나쁜 경험을 얻기도 jmap는 방법을 게시하고 서비스에 가입하면 좋은 제품, 사용자 경험과 운영 및 유지 보수 경험을보고, 우아한해야합니다.

  • 서비스 레지스트리는 멀티 레벨 결합 된 쿼리를 수행하기 위해, 출판 서비스 이름, 서비스 이름에 가입, 지원 응용 프로그램 이름에 따라, IP를 풍부한 인터페이스를 제공해야한다.

  • 동시에, 클라이언트의 메모리는 다양한 정보와 예약 서비스 구독을 게시해야하고, 쉽게 쿼리에 사람들을위한 방법을 제공합니다.
  • 예를 들어, Java 응용 프로그램 봄 부팅에, 그리고 방법에 의해 네이티브 HTTP 서비스 쿼리를 제공하기 위해, 액츄에이터 엔드 포인트를 결합 할 수 있습니다, 서비스뿐만 아니라 해당 노드 가입 서비스 및 다양한 서비스를 게시이 응용 프로그램을 선택합니다.

재해 복구 및 고 가용성

어떻게 성능

서비스 노드가 상승하면, 서비스 레지스트리의 성능 병목 현상, 수평 확장을 통해 클러스터 서비스 레지스트리의 성능을 개선 할 필요성에이 시간이 될 것입니다. 

  • 각 쓰기 작업의 절반 이상부터 같은 사육사와 같은 강력한 일관성 클래스 Paxos 프로토콜 구성 요소를 사용하는 사람들의 경우, 확인 노드를 필요로한다. 확장은 전체 클러스터의 읽기 성능을 향상시킬 수 있습니다 전체 클러스터의 쓰기 성능의 수준을 올릴 수 없습니다. 
  • 구성 요소의 최종 일관성의 사용에 관해서는, 확장의 수준은 쓰기 성능을 개선하고 동시에 전체 클러스터의 성능을 읽을 수 있습니다.

클라이언트 재해 복구 전략

  1. 서비스 레지스트리 또는 레지스트리 서비스를 완전히, 여전히 일반 전화 서비스를 실행할 때 먼저 로컬 메모리 캐시 및 연결이 손실됩니다.

  2. 로컬 캐시 파일, 응용 프로그램 및 서비스 등록 센터 네트워크 파티션 또는 등록 서비스 센터 응용 프로그램이 작업을 다시 시작할 때 완전히 다운, 메모리는 응용 프로그램이 로컬 캐시 파일의 데이터를 읽어 얻을 수있다 데이터, 없다 컨텐츠에 마지막으로 구독.

  3. 마지막으로, 지역의 재해 복구 폴더에 있습니다. 정상적인 상황에서는 재해 복구 폴더 내용이 아닙니다. 서버가 완벽하고 서비스 제공자가받은 큰 변화를 가지고있는 동안 연장 가동 중단 시간, 복원 할 수없는 경우, 당신은 파일 폴더 재해 복구 모드에서 파일을 추가하여 지역 재해 복구를 설정할 수 있습니다. 이 시점에서 클라이언트는 로컬 재해 복구에서 구성 파일을 읽고, 원래 로컬 캐시 파일을 무시합니다.

재해 복구 및 고 가용성 서버

  • 새로운 노드가 클러스터에 가입하면, 노드는 자동으로 서버의 주소에 추가하기 시작하고, 다른 노드가 자동으로 최종 데이터 일관성에 도달하기 위해 다른 노드에서 데이터를 동기화를 통해 서버의 주소를 찾을 수 있습니다. 
  • 노드가 다운되면, 정보가 자동으로 서버 노드 제거의 서비스 센터 주소 등록되며, 클라이언트는 즉시이 노드를 오프라인으로 인식 할 수 있습니다. 

상태 비 저장 서버는 얇은 재해 복구 할 수있는 고 가용성 서비스를 보장합니다.

서버 할 일이 얼마나 안전합니까?

링크 보안, 사용 HTTP 연결을위한 서비스 레지스트리, 링크의 보안을 보호하는 가장 좋은 방법은 HTTPS를 사용하고 있습니다. 일반적으로 개인 계약에 의해 사용되는 응용 프로그램 계층 프로토콜은 반드시 준비 TLS 지원 프로그램이 없기 때문에, TCP 연결을 사용하여 서비스 레지스트리.

보안 비즈니스에서는 비즈니스 정보의 보안을 보장하기 위해 기호 검사 및 인증에 대한 라인에 넣어 모든 자료, 구독, 심장 박동, 인증 정보에 있어야합니다.

알리바바 이름 지정 서비스

ANS (네임 서비스 알리바바는) 알리바바 비즈니스 관행의 강수량은 오픈 소스 제품을 연마 몇 년 동안 미들웨어 팀이다. 측면에서 서비스 등록 및 발견, ANS는이 솔루션의 장점은 클라우드 네이티브 응용 프로그램 서비스 등록 및 검색 구성 요소의 최적 결합합니다.
ANS는 라인 EDAS (알리 바바 기업 분산 응용 프로그램 서비스)에서 서비스하고있다, 직접 서비스 등록 및 발견의 안전하고 신뢰할 수있는 상용 버전을 사용하여 봄 클라우드 Ans By의 스타터 봄 클라우드 편리한 사용자에 사용할 수 있습니다. ANS 완벽 유레카의 특성을 지원하고, 완전 무료 지금입니다! 자세한 내용은 다음을 참조  EDAS 도움말 문서를 .

추천

출처www.cnblogs.com/xichji/p/11946768.html