>source

3 개의 마이크로 서비스 (앱, 제품 및 피드백) 및 1 개의 서비스 레지스트리 설정을 안내하는 튜토리얼을 따라 왔습니다.

Docker로 잠시 작업 한 후 서비스 레지스트리가 중복 된 것 같습니다. Docker는 환경 변수를 통해 호스트 이름과 포트를 서로에게 주입하면서 인스턴스를 시작할 수 있기 때문에

예를 들어, 다음 Docker Compose 파일에서, MySQL 마이크로 서비스에서 Node.js 마이크로 서비스로 db 자격 증명을 전달하고 다른 Node.js 마이크로 서비스가있는 경우 비슷한 방식으로 연결할 수 있습니다.

version: '3'
services:
  mysql:
    image: "mysql:5.7"
    container_name: "mysql"
    ports:
      - "6603:3306"
    volumes:
      - ./assets/schema.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      DATABASE_HOST: mysql
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: database
      MYSQL_USER: mysql
      MYSQL_PASSWORD: password
  products_service:
    build: .
    command: bash -c "/wait && npm start"
    volumes:
      - "./src/:/service/src/"
    image: "node"
    container_name: "products"
    ports:
      - "8080:8080"
    depends_on:
      - mysql
    environment:
      DATABASE_HOST: mysql
      MYSQL_PORT: 3306
      MYSQL_DATABASE: database
      MYSQL_USER: mysql
      MYSQL_PASSWORD: password
      WAIT_HOSTS: mysql:3306
    restart: on-failure

Node.js에서 레지스트리 서비스를 코딩하고 프로그래밍해야합니까?

  • 답변 # 1

    제품 서비스가 외부 세계가 https : // myserver/myservice를 사용하는 나머지 엔드 포인트를 노출한다고 가정합니다.

    시간이 지나면 제품 서비스가 널리 보급되어 현재 계약 (위의 엔드 포인트)을 위반하지 않고 더 확장하려고합니다.

    제품 서비스를 확장하려면 동일하거나 다른 호스트에서 실행중인 둘 이상의 인스턴스를 시작합니다.

    실행중인 제품 서비스 인스턴스 수를 추적하는 서비스를 검색 서비스라고합니다.

    서비스 엔드 포인트로 들어오는 외부 트래픽이 충분하지 않아 모든 제품 서비스 인스턴스로 라우팅되어야합니다. 이것이 리버스 프록시처럼 작동하는 API 게이트웨이의 역할입니다. 트래픽을 모든 인스턴스로 라우팅하기 위해 라운드 로빈과 같은 정책을 지정할 수 있습니다.

    따라서 API 게이트웨이와 서비스 검색은 함께 서비스에 대한 확장 성과 내결함성을 제공합니다.

    참조-

    https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway -패턴

    https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/

  • 답변 # 2

    조작하는 것 이상의 자동화가 필요합니다 트래픽로드 및 서비스 실패에 반응하려면 컨테이너를 설치하십시오. 모든 주요 컨테이너 관리 도구에는 서비스 검색을위한 몇 가지 전략이 있습니다. 또한 서비스 검색을 수행하는 다양한 방법 (예 : 하트 비트 및 SWIM)이 있습니다.

    아마도 서비스의 인스턴스를 시작하여 사용자에게 서비스를 제공 할 수 있습니다. 그러나로드와 실패에 대응할 수 없으며 리소스 효율성도 높아집니다. 여기에서 k8s와 같은 도구가 빛을 발하고 서비스 검색 및 리소스 활용을 처리합니다.

    서비스 발견에 대한 자세한 내용은이 강의를 확인하십시오.

  • 이전 html - CSS를 사용하여 연결을 보여주는 가로 및 세로 선으로 트리 뷰 만들기
  • 다음 regex - 과도한 소수점 이하 자릿수 편집