인터넷 프로젝트 개발에서는 다양한 서비스와 상호작용해야 하며, 사용자는 서버로부터 데이터를 얻어야 하며, 서비스 인터페이스의 높은 가용성은 특히 전자상거래 및 결제 시스템에서 매우 중요합니다. 고가용성은 시스템의 견고성을 측정하기도 합니다. 클러스터의 경우, 많은 서비스가 유지보수가 어렵기도 합니다.
영사 검토
Consul은 HashiCorp에서 출시한 Go언어로 개발된 오픈소스 도구로, 분산 시스템의 서비스 발견 및 구성을 구현하는 데 사용되며, 내장된 서비스 등록 및 발견 프레임워크, 배포 일관성 프로토콜 구현, 건강 확인, 키/값 저장, 다중 데이터 센터 솔루션을 갖추고 있어 비교적 사용하기 쉽습니다.
영사 서비스 발견
Consul Service Discovery 사용 방법:
- 각 컴퓨터에서 클라이언트 모드로 Consul 에이전트를 실행하는데, 이는 최신 등록 정보를 Consul 클러스터와 효율적으로 교환하는 역할만 담당합니다(리더 선거에는 참여하지 않음).
- 각 컴퓨터의 서비스 서비스는 서비스 이름과 URL을 로컬 컨설 에이전트에게 등록합니다
- Computer1에 배포된 프로그램이 ServiceB를 호출해야 할 때, ServiceA는 서비스 이름을 통해 로컬 Consul Agent로부터 ServiceB의 접근 주소를 직접 얻고, 그 후 ServiceB의 URL로 직접 요청을 보냅니다.
코드는 다음과 같습니다:
스타트업 수업에서는 다음과 같이 호출하세요:
건강검진
건강 체크 인터페이스는 200 상태 코드를 영사관에게 반환하기만 하면 되며, 코드는 다음과 같습니다:
프로젝트를 시작하고, 서비스에 가입하세요
컨트롤러는 다음과 같이 테스트 방법을 정의할 수 있습니다:
프로젝트의 bin 디렉터리로 가서 명령줄로 시작해 봅시다. 코드는 다음과 같습니다:
브라우저에서 링크를 확인하세요:
http://127.0.0.1:8500/ui/dc1/services/test.itsvse
http://127.0.0.1:8500/v1/catalog/service/test.itsvse
json 데이터는 다음과 같습니다:
[ { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "노드": "DESKTOP-EB7B69D", "주소": "127.0.0.1", "데이터센터": "dc1", "태그된 주소": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "노드메타": { "영사-네트워크 세그먼트": "" }, "ServiceKind": ", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "서비스태그": [ "테스트", "이츠브세" ], "서비스주소": "127.0.0.1", "ServiceWeights": { "패스": 1, "경고": 1 }, "ServiceMeta": {}, "서비스포트": 8083, "ServiceEnableTagOverride": false, "ServiceProxy": { "MeshGateway": {}, "폭로": {} }, "ServiceConnect": {}, "CreateIndex": 1317, "ModifyIndex": 1317 }, { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "노드": "DESKTOP-EB7B69D", "주소": "127.0.0.1", "데이터센터": "dc1", "태그된 주소": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "노드메타": { "영사-네트워크 세그먼트": "" }, "ServiceKind": ", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "서비스태그": [ "테스트", "이츠브세" ], "서비스주소": "127.0.0.1", "ServiceWeights": { "패스": 1, "경고": 1 }, "ServiceMeta": {}, "서비스포트": 8082, "ServiceEnableTagOverride": false, "ServiceProxy": { "MeshGateway": {}, "폭로": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
영사 서비스 호출
다음 코드로 새로운 .NET Core 콘솔 프로젝트를 생성하세요:
무작위로 등록된 test.itsvse 서비스에 전화해봤는데, 결과는 다음과 같습니다:
마지막으로 소스 코드 다운로드:
관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다 회답 |