마이크로 서비스를 배우는 유일한 방법-Nacos 초보자를위한 소개 (아래)

기술을 사랑하는 타치바나 우쿄의 형, 타치바나 사쿄

1. 서비스 발견

1.1 서비스 검색이란?

마이크로 서비스 아키텍처에서 전체 시스템은 여러 마이크로 서비스로 나뉘며 목표를 달성하기 위해 마이크로 서비스와 마이크로 서비스 간의 협업이 이루어 지므로 코드를 원격으로 호출해야하며 (서비스 소비자는 서비스 생산자를 호출) 소비자가 필요합니다. 서버의 네트워크 위치 (IP, 포트 번호)를 알고 있습니다.
여기에 사진 설명 삽입

1.2 주류 서비스 검색과 구성 센터 간의 비교

여기에 사진 설명 삽입

1.3 SpringCloud 서비스 협업 프로세스

여기에 사진 설명 삽입

서비스 B는 서비스 디스커버리 센터에 정보를 등록하고, 서비스 A는 B의 등록 정보를 획득하고, 리본 부하 분산 알고리즘을 통해 서비스를 선택하고, 서비스를 선택한 다음 Fegin을 통해 서비스의 API를 호출하여 서비스 협업을 완료합니다.

1.3.1 부하 분산의 개념

로드 밸런싱은 사용자가 여러 인스턴스에 압력을 분산하라는 요청을 보낸 후 특정 전략을 통해 높은 동시성을 처리하고 서버 압력을 완화하며 네트워크 압력을 줄이는 중요한 방법 중 하나입니다. 서버 측로드 밸런싱 , 클라이언트 로 구분됩니다. 부하 분산 .
여기에 사진 설명 삽입

서버 측로드 밸런싱 은 사용자가 서비스를 요청할 때로드 밸런서 (예 : Nginx)를 통과하고로드 밸런서가 고 가용성을 달성하기 위해 요청을 할당 함을 의미합니다.
클라이언트로드 밸런싱 은 사용자가 서비스를 요청할 때 고 가용성을 달성하기 위해 호출 할 서비스 레지스트리에서 인스턴스를 선택하기 위해로드 밸런싱 알고리즘을 사용하는 것입니다.

리본은 클라이언트 측로드 밸런서입니다. 그 역할은 인스턴스 목록에서 적합한 인스턴스를 선택하는 것입니다. 선택 방법은로드 밸런서에 따라 다릅니다.
리본 핵심 구성 요소 IRule은로드 밸런싱 전략 인터페이스이며 다음과 같은 구현이 있습니다.

· RoundRolbinRule (기본값) : 특정 순서로 인스턴스 주소를 얻는 폴링
· RandomRule : 임의의 방식으로 인스턴스 주소
얻는다 · AvalibailityFilteringRule : 회로 차단기 트립 상태에있는 서비스를 필터링 다중 액세스 실패로 인해 동시 수가 임계 값을 초과하는 서비스 및 나머지 서비스를 폴링합니다.
· WeightedResponseTimeRule : 평균 응답 시간을 기준으로 서비스를 선택하며, 평균 응답 시간이 짧을수록 선택 가능성이 높아집니다.
방금 시작하고 평균 응답 시간 데이터가 없으면 자동으로 폴링으로 전환되며 데이터가 충분하면 자동으로 현재 균형 모드로 전환됩니다.
· RetyRule : 먼저 RoundRobinRule 전략에 따라 서비스를 획득하고, 서비스 획득에 실패 할 경우 지정된 시간 내에 사용 가능한 서비스 획득을 재 시도합니다.
· BestAvalibableRule : 다중 접속 실패로 차단기 트립 상태에있는 서비스를 걸러 내고 동시성이 적은 서비스를 선택합니다.
· ZoneAvoidanceRule : 서버가있는 영역의 성능과 서버의 가용성을 복합하여 서버를 선택하는 기본 규칙입니다.

SpringBoot 구성 파일은 기본 부하 분산 전략을 수정합니다.

account-service.ribbon.NFloadBalancerRuleClassName = com.netfix.loadbalancer.RandomRule
account-service는 서비스 호출의 이름이며 다음은 고정 구성 요소입니다.

2. Nacos 서비스 구축

시뮬레이션 : 마이크로 서비스 프로젝트를 구축하고, nacos를 통해 구성 센터에 정보를 등록하고, Fegin을 통해 서비스 및 서비스 원격 호출을 완료합니다.

2.1 Nacos 구성

1) Nacos https://nacos.io/zh-cn/docs/quick-start.html 다운로드
2) Nacos 압축을 풀고 /conf/application.properties 파일을 엽니 다.
3) 데이터베이스 구성을 추가하고 구성 정보를 데이터베이스에 저장합니다.
DB 연결 URL :
db.url.0 = jdbc : mysql : //127.0.0.1 : 3306 / demo-nacos? characterEncoding = utf8 & useUnicode = true & useSSL = false & serverTimezone = UTC
db.user = root
db.password = root
4) Nacos 기본값 port number 8848
server.port = 8849 로 변경 가능합니다.
5) Nacos 시작

2.2 서비스 생산자 구축

** 1) 새 프로젝트
여기에 사진 설명 삽입

2) 새로운 서비스 생산자 모듈
여기에 사진 설명 삽입

3) 상위 클래스 pom.xml의 가져 오기 종속성 **

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- feign客户端依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.1.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>test</scope>
    </dependency>
    <!--Nacos-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
    <!--SpringBoot-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

4) 새로운 시작 클래스
@SpringBootApplication : Sprnig Boot 프로젝트의 핵심 주석이며, 목적은 자동 구성
@EnableDiscoveryClient 를 활성화하는 것입니다 .
여기에 사진 설명 삽입

** 5) 새 컨트롤러
여기에 사진 설명 삽입

6) 새 구성 파일 입력 구성 정보 **
서버 :
포트 : 8010
스프링 :
애플리케이션 :
이름 : pro-nacos
클라우드 :
nacos :
검색 :
서버 -addr : 127.0.0.1:8849
여기에 사진 설명 삽입

7) 서비스 시작
방금 등록한 서비스가 nacos 서비스 목록에 나타납니다.
여기에 사진 설명 삽입

2.3 소비자 구성

1) 새 소비자 모듈 만들기
여기에 사진 설명 삽입

2) 새 시작 클래스 만들기

Fegin 인터페이스가이 모듈에 작성되었으므로 @EnableFeginClients를 추가하십시오.
여기에 사진 설명 삽입

3) 새로운 클라이언트 인터페이스
여기에 사진 설명 삽입

@FeginClient ( "공급자 서비스 이름")
여기에 사진 설명 삽입

4) 서비스 시작
여기에 사진 설명 삽입

Nacos 클라이언트를 연 후 두 서비스가 모두 Nacos에 성공적으로 등록 된 것으로 확인되었습니다.
여기에 사진 설명 삽입

5) 테스트
여기에 사진 설명 삽입 호출 성공

2.4 생산자의 복잡한 균형 달성

1) 위의 글에서 생산자의 nacos 서비스 발견과 Fegin 원격 호출을 깨달았으니 이제 생산자의 부하 분산을 실감 해보자. 우리 모두 알고 있듯이 폴링은 리본의 부하 분산에서 기본적으로 사용되며 데모를 위해 폴링을 사용할 것입니다.

2) 동적 포트 번호를 자동으로 얻도록 구성 파일에서 생산자의 포트 번호를 변경하여 폴링을 구현하기 위해 서로 다른 포트 번호로 두 서비스를 구성 할 수 있습니다.
여기에 사진 설명 삽입

3) 단계에 따라 작동합니다.
① 첫 번째 단계는 오른쪽 상단 모서리를 클릭하여 새 생산자 서비스를 생성하는 것입니다.
+ 번호 선택 ③
SpringBoot
선택 ④ MainClass 선택, 해당 생산자 서비스 선택
⑤ 포트 번호 정의 -Dport = 56011
여기에 사진 설명 삽입

4) 설정이 완료되면 클릭하여 서비스를 시작합니다. 두 개의 생산자 서비스가 시작된 후 소비자 서비스가 시작됩니다. Ncos로 이동하여 확인하십시오.
여기에 사진 설명 삽입

목록에서 pro-nacos의 인스턴스 수는 2 개이고 con-nacos의 인스턴스 수는 1 개로 2 개의 생산자 서비스와 1 개의 소비자 서비스를 성공적으로 시작했음을 증명합니다. 테스트 도구를 사용하여 부하 분산을 테스트합니다.

첫 번째 서비스는 NacosProApplication1 서비스에 도착하고 출력 결과는 "Dianfanrenganfanhun"입니다.
여기에 사진 설명 삽입

두 번째 서비스는 NacosProApplication 서비스에 도착하고 출력 결과는 "Danfanrenganfanhun"입니다.
여기에 사진 설명 삽입

5)이 시점에서로드 밸런싱 테스트가 완료되었으며 Rinbbon의 기본 폴링 방식이 구현되었습니다.

3. Nacos 서비스 탐색 기본 애플리케이션

3.1 Nacos 서비스 검색 데이터 모델

네임 스페이스 (NameSpace)

테넌트 세분화 구성을 분리하는 데 사용됩니다. 네임 스페이스는 Nacos 구성 관리뿐만 아니라 서비스 검색에도 적합합니다. 네임 스페이스의 일반적인 시나리오 중 하나는 개발 환경, 테스트와 같은 다양한 환경의 구성을 분리하고 격리하는 것입니다. 환경 및 생산 환경.

서비스

클라이언트에 제공되는 소프트웨어 기능은 사전 정의 된 인터페이스를 통해 액세스됩니다.

작업 명

서비스에서 제공하는 식별자를 사용하여 서비스 이름으로 대체 할 서비스를 결정할 수 있습니다.

액세스 가능한 네트워크 주소로 하나 이상의 서비스를 제공하고 서비스 인스턴스를 생성하는 서비스를 시작하는 프로세스입니다.

메타 정보

Nacos 데이터 (구성 및 서비스 등) 설명 정보는 서비스 버전, 가중치, 재해 허용 전략,로드 밸런싱 전략, 인증 구성, 다양한 커스텀 라벨 등 범위 관점에서 서비스 수준 메타 정보로 구분됩니다. 및 클러스터 정보 메타 정보 및 인스턴스 메타 정보.
메타 정보는 nacos의 확장 성을 높이고 사용자는 데이터를 사용자 지정하여 인스턴스, 서비스, 클러스터 등을 설명 할 수 있습니다.

클러스터

서비스 인스턴스의 모음입니다. 서비스 인스턴스는 기본 클러스터를 형성합니다. 클러스터는 더 나눌 수 있습니다. 분할 단위는 가상 클러스터가 될 수 있습니다. 동일한 클러스터 아래의 인스턴스 만 서로를 인식 할 수 있습니다.

3.2 서비스 관리

나 코스는 등록 된 서비스를 조회하고 수정할 수있는 기본 운영 및 유지 보수 인터페이스를 제공하며, 개발자 또는 운영 및 유지 보수 담당자는이 인터페이스를 통해 현재 시스템에 등록 된 모든 서비스와 각 서비스의 세부 사항을 포함하여 서비스 등록을 볼 수 있습니다.

3.2.1 인스턴스 가중치

서비스 목록에서 서비스-> 세부 사항을 선택합니다. 인터페이스에 들어가면 서비스 가중치를 조정하여 부하의 용량을 분배 할 수 있습니다. 값이 클수록 분배 확률
이 높아집니다.

3.2.2 온라인 및 오프라인

온라인 / 오프라인 서비스를 전환 할 수 있으며 서비스가 오프라인이 된 후에는로드 밸런서가 서비스에 할당되지 않습니다.

추천

출처blog.csdn.net/CSDN_ChenF/article/details/115300085