더 이상 고민하지 않고 바로 본론으로 들어가겠습니다.
일반인의 용어로:단일 경량 서비스는 일반적으로 독립적인 마이크로서비스입니다. 예를 들어, 로그인 시스템은 사용자 로그인 기능의 구현에만 중점을 둡니다. 기본적으로 제공되며 독립적으로 실행할 수 있습니다. 마이크로서비스 아키텍처 시스템은 비즈니스에 따라 서비스 단위 모듈을 분할하고 단일 시스템의 단점을 해결하며 점점 더 복잡해지는 비즈니스 요구를 충족하는 분산 시스템입니다.
Martin Fowler: 현재 마이크로서비스 산업에 대한 통일된 표준 정의는 없습니다. 그러나 일반적으로 마이크로서비스 아키텍처는 단일 애플리케이션을 작은 서비스 세트로 나누는 것을 옹호하는 아키텍처 패턴 또는 아키텍처 스타일입니다. 각 서비스는 고유한 독립적인 프로세스로 실행되며, 서비스는 서로 협력하고 조정하여 사용자에게 궁극적인 가치를 제공합니다. 서비스 간 경량 통신을 사용합니다. 각 서비스는 특정 비즈니스를 중심으로 구축되었으며 프로덕션 환경에 독립적으로 배포될 수 있습니다. 또한, 통합되고 중앙화된 서비스 관리 메커니즘은 가능한 한 피해야 합니다.
마이크로서비스는 단일 책임을 갖는 독립적인 서비스 애플리케이션입니다. intellij idea 도구에는 maven을 사용하여 개발된 독립적인 모듈이 있습니다. 구체적으로는 단일 전문 비즈니스 로직을 처리하기 위해 springboot를 사용하여 개발된 작은 모듈입니다.
마이크로서비스는 서비스의 크기를 강조하고, 특정 지점에 초점을 맞추고, 구체적으로 특정 문제를 해결/해당 서비스 애플리케이션을 구현하는 것을 아이디어상 모듈이라고 볼 수 있습니다.
예를 들어 병원에 가면 치아가 불편하다고 느끼면 치과에 갑니다. 머리 아프면 뇌과로 가세요. 각 부서는 마이크로서비스이고 각 기능은 서비스입니다.
동기 통신: RPC 원격 프로시저 호출을 통한 dobbo, REST 인터페이스 json 호출을 통한 springcloud 등 비동기: RabbitMq, ActiveM, Kafka 등의 메시지 대기열
우선, 모두 분산 관리 프레임워크입니다.
dubbo는 바이너리 전송으로 대역폭을 덜 차지합니다. SpringCloud는 약간 더 많은 대역폭을 갖는 http 전송을 사용합니다. 동시에 http 프로토콜을 사용하면 일반적으로 JSON 메시지를 사용하므로 더 많은 대역폭을 소비합니다.
Dubbo는 개발하기 어렵고, Dubbo가 사용하는 jar 패키지에는 많은 문제가 있습니다. 대형 프로젝트는 해결할 수 없습니다. SpringCloud의 타사 상속은 한 번의 클릭으로 생성되고 자연스럽게 통합될 수 있습니다.
.
SpringBoot: 단일 개별 마이크로서비스를 빠르고 편리하게 개발하는 데 중점(마이크로에 중점) SpringCloud: 전반적인 마이크로서비스 조정 및 거버넌스 프레임워크에 중점을 두고 SpringBoot에서 개발한 개별 마이크로서비스를 결합 및 관리합니다. 매크로);
SpringBoot는 SpringCloud 없이도 독립적으로 사용할 수 있지만, SpringCloud는 종속 관계인 SpringBoot 없이는 사용할 수 없습니다.
서비스 차단기의 기능은 우리 집의 퓨즈와 유사합니다. 서비스가 불가능하거나 응답 시간이 초과되면 전체 시스템의 사태를 방지하기 위해 서비스 호출이 일시적으로 중단됩니다.
서비스 저하는 전체 시스템의 부하 상황을 기준으로 부하가 상대적으로 높은 특정 상황의 경우 특정 기능(비즈니스 시나리오)이 과부하되거나 느리게 응답하는 것을 방지하기 위해 내부적으로 일시적으로 요청을 포기합니다. 일부 비핵심 인터페이스 및 데이터를 포함하고 미리 준비된 폴백 오류 처리 정보를 직접 반환합니다. 이런 방식으로 손실이 있는 서비스를 제공하더라도 전체 시스템의 안정성과 가용성이 보장됩니다.
장점: 느슨한 결합, 단일 비즈니스 기능에 중점을 두고 개발 언어와 무관하며 팀 규모가 줄어듭니다. 개발 중에는 비즈니스에 대해 많이 알 필요가 없으며 편리하고 중앙 집중화된 현재 기능에만 집중하고 기능은 작고 세련됩니다. 마이크로서비스의 한 기능이 손상되더라도 다른 기능에 큰 영향을 미치지 않으며 문제를 빠르게 찾을 수 있습니다. 마이크로서비스는 현재 비즈니스 로직 코드에만 중점을 두고 HTML, CSS 또는 기타 인터페이스와 혼합되지 않습니다. 기술과 유연하게 조화를 이룰 수 있으며 독립적인 것이 더 편안합니다.
단점: 서비스 수가 증가함에 따라 관리가 복잡하고 배포가 복잡하며 서버 요구 사항이 증가하고 서비스 통신 및 통화 압력이 증가하며 운영 및 유지 관리 엔지니어의 압력이 증가하고 인적 자원이 증가하며 시스템 종속성이 증가하고 데이터 일관성 향상, 성능 모니터링.
zookeeper는 CP 원칙, 강한 일관성 및 파티션 내결함성을 갖추고 있습니다. 유레카는 가용성 및 파티션 허용 오차라는 AP 원칙입니다. ZooKeeper 마스터 노드에 장애가 발생하면 ZooKeeper는 나머지 노드에서 마스터 노드를 다시 선택하는데 시간이 너무 오래 걸리므로 결국 복원할 수는 있지만 마스터 노드를 선택하는 동안에는 서비스를 사용할 수 없게 됩니다. 유레카의 모든 노드는 동일합니다. 한 노드가 중단되더라도 다른 노드는 여전히 정상적인 서비스를 유지합니다.
Service call | |
---|---|
서비스 회로 차단기 | Hystrix, Envoy 등 |
로드 밸런싱 | Nginx, Ribbon 등 |
서비스 인터페이스 호출(클라이언트 단순화 도구) | Fegin 등 |
메시지 queue | Kafka, RabbitMQ, ActiveMQ 등 |
서비스 구성 센터 관리 | SpringCloudConfig, Chef 등 |
서비스 라우팅(API 게이트웨이) | Zuul 등 |
서비스 모니터링 | Zabbix, Nagios, Metrics, Spectator 등 |
전체 링크 추적 | Zipkin, Brave, Dapper 등 |
서비스 배포 | Docker, OpenStack, Kubernetes 등 |
데이터 흐름 운영 개발 키트 | SpringCloud Stream(Redis, Rabbit으로 캡슐화됨) , kafka 등 메시지 주고받기) |
이벤트 메시지 버스 | 봄구름 버스 |
앞서 마이크로서비스가 무엇인지 이해했다면 기본적으로 마이크로서비스 아키텍처도 이미 이해하고 있는 것입니다.
마이크로서비스 아키텍처는 마이크로서비스를 관리, 통합, 적용하는 것입니다. 마이크로서비스 아키텍처는 마이크로서비스에 의존하며 마이크로서비스를 기반으로 합니다.
예: 위에 나열된 마이크로서비스란 무엇입니까? 병원에서 각 부서는 독립적인 마이크로서비스이므로 병원장은 원장이 다음 부서를 관리할 수 있는 것처럼 대규모 마이크로서비스 아키텍처입니다. 마이크로서비스 아키텍처는 주로 이 기능을 가지고 있습니다.
위 내용은 9가지 마이크로서비스 인터뷰 질문 중 몇 개에 답할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!