서문 :
오늘, 함께 잠, 우리는 가정에서 더 많은,하지만 때문에 가정 환경의 일주일 이미 작업이 여전히 매우 높은 효율 아니지만, 시작 날짜를 연기하고 있음을 발견했다. 그래서 단순히 지식 봄 클라우드는 일종의을했다.
일부 봄 클라우드 관련 면접 질문 컴파일, 봄 클라우드에 시시 자신의 모든 사람들이 자신의 자체 테스트 결과를보고 상황을 파악.
봄 클라우드는 무엇입니까?
봄 구름 일련의 프레임의 명령 모음입니다. 그것은 사용 교묘 같은 서비스 검색 등록, 유통 센터, 메시지 버스,로드 밸런싱, 회로 차단기, 모니터링 및 기타 데이터와 같은 분산 시스템 인프라의 개발을 단순화 스프링 부츠의 개발을 촉진, 스타일 스프링 부츠의 개발을 할 수 그리고 키는 배포를 시작합니다.
봄 클라우드를 사용할 때의 장점은 무엇입니까?
봄 부팅 개발 분산 마이크로 서비스를 사용하는 경우, 우리는 다음과 같은 문제에 직면
-
분산 시스템과 관련된 복잡성 - 같은 오버 헤드가 네트워크 문제, 대기 시간 오버 헤드, 대역폭 문제, 보안 문제 등이 있습니다.
-
서비스 검색 - 서로에 찾을 수있는 프로세스와 서비스의 클러스터와 이야기를 관리하기위한 방법 서비스 검색 도구입니다. 이 디렉토리 서비스 카탈로그, 등록 서비스를 포함하고 찾아 디렉터리 서비스에 연결할 수 있습니다.
-
중복 - 분산 시스템에서 중복.
-
균형로드 - 같은 분산 된 컴퓨터, 컴퓨터 클러스터, 네트워크 링크, 중앙 처리 장치 또는 디스크 드라이브와 같은 여러 컴퓨팅 리소스에 걸쳐로드 밸런싱 작업을 개선 할 수 있습니다.
-
실적 - 인한 운영 비용의 다양한으로 인한 성능 문제에 대한 문제.
-
배포 요구 사항의 복잡성 기술을 -Devops.
무엇 봄 클라우드 서비스 등록의 원칙을 구현하고 발견은 무엇입니까?
-
서비스 만 주요 방법 @EnableDisscoveryClient를 추가 할 필요, 서비스 레지스트리 (유레카 또는 사육사)이 과정이 자동으로 해제 봄 클라우드에 등록됩니다 서비스 이름 (IP 주소와 포트를 포함하여 서비스 이름을) 해당 지정 포트를 수정하는 서비스를 여러 인스턴스를 시작할 수 있습니다.
-
방법 전화 : 전송 서비스 이름은 레지스트리를 통해 사용할 수있는 모든 인스턴스를 얻기 위해, 부하 전략 균형 (리본 척하기) 해당 서비스를 호출하여.
왜 사용 봄 클라우드 퓨즈?
서비스가 그들의 자신의 이유 네트워크 문제 중 하나 때문에, 다른 서비스를 호출 할 때, 발신자는 것, 이러한 리소스에보다 서비스 요청이 대기 더 많은 요청으로 이어지는 경우 응답 수신자 기다립니다 노크 시행 회로 차단기는이 문제를 해결하는 것이다.
주 회로 차단기는 다음과 같다 :
-
완전 개방 : 일정 시간 내에 전화의 특정 숫자에 도달 할 수 있고, 회복의 조짐을 테스트하지 여러 회로 차단기는 다음 번 요청이 서비스에 대한 요청이 아닌, 완전히 열려 있습니다.
-
반 개방 : 짧은 시간에 회복 조짐이있다가, 회로 차단기, 서비스, 일반 전화로 전송 요청의 일부 회로 차단기를 꺼집니다.
-
닫기 : 서비스가 정상 상태에있다, 정상적인 호출, 회로 차단기의 전원을 끕니다.
서비스 등록 및 발견이 무엇을 의미합니까? 봄 클라우드 어떻게 달성하기 위해?
우리는 프로젝트를 시작할 때, 우리는 일반적으로 모든 구성 속성 파일을 수행합니다. 점점 더 많은 서비스를 개발 및 배포로 추가하고 이러한 속성을 더 복잡하게 수정합니다. 일부 지역은 다를 수 있지만 일부 서비스는 거부 할 수 있습니다. 수동으로 특성이 문제가 될 수 있습니다 변경합니다. 유레카 서비스 등록 및 검색이 경우에 도움이 될 수 있습니다. 모든 서비스는 모양을 완료 유레카 유레카 서버를 호출하여 서버에 등록되어 있기 때문에, 변경 및 처리 서비스 위치를 처리 할 필요가 없다.
봄 구름과 두보의 차이?
-
두보 방식으로 서비스 호출은 RPC springcloud 나머지 API입니다
-
레지스트리는 두보 사육사 springcloud입니다 유레카, 그것은 또한 사육사가 될 수
-
서비스 게이트웨이는 자체 두보 만 타사 기술 통합을 통해 달성되지 않으며, springcloud 되세요 Zuul 라우팅 게이트웨이 라우팅 서버로, 소비자는 완벽 자식 버전 관리 구성 파일 지원과 통합 유통, springcloud 지원 차단기, 일을 요청 버스 프로필 업데이트 서비스를 어셈블리 및 마이크로 서비스 아키텍처 요소 일련되도록 자동화.
마이크로 통신 사이에 서비스하는 방법을 독립적
1. 원격 프로 시저 호출 (원격 프로 시저 호출)는 : 즉, 우리는 종종 원격 프로 시저 호출을 통해 직접 다른 서비스에 그 등록 및 검색 서비스, 액세스를 말한다.
장점 :
- 간단한, 일반, 더 미들웨어 에이전트가 없기 때문에, 간단한 시스템
단점 :
- 만 다른 같은 통지, 요청 / 비동기 응답이 게시 / 구독, 게시 지원하지 않습니다, 요청 / 응답 모델을 지원 / 비동기 응답
- 클라이언트와 서버 필수가 요청시 사용할 수 모두 있기 때문에,의 가용성을 감소
2. 메시지 : 서비스 간의 비동기 메시지 통신을 사용합니까. 메시지 서비스 관 사이의 메시지 교환 때문에 상기 통신있다.
장점 :
-
클라이언트와 서버 디커플링은 더 느슨하게 결합
-
소비자가 소비 할 때까지 메시징 미들웨어는 메시지를 캐시하기 때문에, 가용성을 향상
-
지원하는 많은 통신 메커니즘 등의 통지, 요청 / 비동기 응답이 게시 / 구독, 게시 / 비동기 응답
단점 :
- 미들웨어 메시징 추가적인 복잡성이있다
로드 밸런싱의 중요성은 무엇인가?
컴퓨팅에서,로드 밸런싱은 자원, 네트워크 링크, 중앙 처리 장치 또는 디스크 드라이브를 계산 교차 기계, 워크로드 분산 여러 컴퓨터 클러스터를 향상시킬 수 있습니다. 로드 밸런싱은, 자원, 최대 처리량의 사용을 최적화 응답 시간을 최소화하고 단일 리소스 과부하를 방지하도록 설계되어 있습니다. 로드 밸런싱 성분보다는 단일 구성 요소의 복수의 중복을 통해 신뢰성 및 유용성을 향상시키기 위해 사용될 수있다. 종종로드 밸런싱은 멀티 레이어 스위치 또는 도메인 이름 시스템 서비스 프로세스와 같은 특수 소프트웨어 또는 하드웨어를 포함한다.
마이크로 서비스 사이에 어떻게 독립적 인 통신입니까?
같은 전화로 1. 장거리 호출, 원격 프로 시저 호출을 통해 직접 기타 서비스를 방문하는 가장하다.
2. 메시지 지향 미들웨어
등록 서비스를 어떻게 springcloud 구현?
서비스를 게시 할 때 1. 해당 서비스 이름을 지정 서비스 (유레카 사육사) 레지스트리에 등록
2. 등록 센터 플러스 @EnableEurekaServer, @EnableDiscoveryClient와 서비스는 다음 리본으로 제공하거나 찾아 직접 전화를 가장하다.
봄 구름 차단기의 역할은 무엇인가?
분산 된 아키텍처에서, 회로 차단기 모드의 역할은, 서비스 유닛 (유사한 전기적 단락 회로) (퓨즈와 유사한) 오류 모니터링 회로 차단기를 실패 할 때, 유사한 호출자에 오류 응답을 반환 오히려 오랜 기다림보다. 이 때문에 고장 전화 서비스에 스레드를하지 않습니다 연장되는 직업은 분산 시스템에서 장애의 확산을 방지하기 위해, 해제하지 않습니다.
Hystrix은 무엇인가?
실패가 계단식 실패를 중지하고 복잡한 분산 시스템의 유연성을 달성하기 위해 피할 수없는 실패가있을 때 Hystrix는 분리 원격 액세스 포인트 시스템, 서비스 및 타사 라이브러리 설계 지연 및 결함 허용 데이터베이스입니다. 일반적으로 많은 마이크로 서비스를 포함하는 마이크로 서비스 아키텍처 개발을 사용하는 시스템에 대해,이 마이크로 서비스가 마이크로 서비스의 수의 증가와 함께, 서로 협력,이 문제는 더 복잡해진다. 우리는 어떤 이유로 가정 다루는 Hystrix에게 대체 방법을 사용, 공공 서비스 인터페이스는 우리가이 경우에 대체 방법 Hystrix를 정의 예외가 발생합니다. 노출 서비스, 대체 방법은 해당 정보를 반환하는 경우이 백업 방법은 공공 서비스의 같은 리턴 타입을 가져야한다, 예외가 발생합니다.
유레카 사육사 기능 및 서비스 레지스트리 및 검색을 제공 할 수 있습니다, 둘 사이의 차이에 대해 이야기하십시오
-
이 CP를 확인 사육사, 유레카는 AP, 선거 등록 서비스 중 사육사가 서비스가 결국 회복하지만, 마비,하지만 선거 기간 동안 사용되지는 않았는지 확인하십시오. 유레카 각 노드는 오랫동안 유레카 서비스를 사용할 수 있도록, 데이터가 더 이상 오랜 시간 동안 제거 유레카으로 이어질 것입니다 최신 자기 보호 메커니즘없는 쿼리 하트 비트 목록에서 등록 서비스 만료받지해야 할 수있는 한, 동일한 관계 . 유레카는 여전히 새로운 서비스에 대한 등록 및 쿼리 요청을 받아 들일 수 있지만 다른 노드 (HA)에 동기화되지 않습니다. 네트워크가 안정되면, 새로운 등록 정보의 현재 인스턴스는 다른 노드 (최종 일관성)에 동기화됩니다. 유레카 잘 연결이 끊어 일부 노드의 결과로 인한 네트워크 장애로 상황에 대처 아니라 전체 등록 시스템 다운을 만들기로 사육사로 할 수 있습니다.
-
사육사는 각 노드 평등 지도자와 추종자의 역할, 유레카있다
-
생존 대다수의 원칙을 채택 사육사, 유레카는 해결 구역 설정 문제에 대한 자기 보호 메커니즘을 채택
-
유레카는 오히려 프로젝트의 본질하지만 과정이다 사육사
넷플릭스 척하기는 무엇입니까? 무슨 장점?
척하기는 주제 개조, JAXRS-2.0 및 웹 소켓을 영감 자바 클라이언트 바인더입니다. 척하기 첫 번째 목표에 관계없이 안정성, HTTP API에 제약의 복잡성의 분모를 통합하는 것입니다. 직원 소비자의 경우, 우리는 REST REST 공공 서비스를 사용하여 직원 제작자 템플릿을 사용하십시오.
그러나 우리는 다음 단계를 수행하기 위해 많은 코드를 작성해야
- 부하 분산을 위해 사용 리본.
- 기본 URL에 대한 서비스에 대한 액세스 및 액세스의 예.
- 사용 템플릿은 REST 서비스를 사용합니다. 다음과 같이 앞의 코드는
@Controller
public class ConsumerControllerClient {
@Autowired
private LoadBalancerClient loadBalancer;
public void getEmployee() throws RestClientException, IOException {
ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
System.out.println(serviceInstance.getUri());
String baseUrl=serviceInstance.getUri().toString();
baseUrl=baseUrl+"/employee";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response=null;
try{
response=restTemplate.exchange(baseUrl,
HttpMethod.GET, getHeaders(),String.class);
}catch (Exception ex)
{
System.out.println(ex);
}
System.out.println(response.getBody());
}
코드 전에 같은 NullPointer 기회가 아닌 최적 같은 예외가 있습니다. 우리는 넷플릭스 척하기 메이크 통화 쉽고 청소기를 사용하는 방법을 볼 수 있습니다. 넷플릭스 리본 클래스 경로 의존성이있는 경우, 척하기 기본적으로로드 밸런싱에 대한 책임이 있습니다.
REST 및 RPC 대비
1.RPC 주요 단점은 서비스 제공자가 당사자와 호출 사이 라이 Taijiang에 따라, 각 마이크로 서비스의 인터페이스를 정의해야하고, 계속 상속에 의해 출판, 엄격한 버전 제어 충돌하지 않습니다 것입니다.
2.REST은 호출 서비스와 코드 사이의 결합이 존재하지 않는, 규제 만 규칙을 제공하는 경량의 인터페이스입니다.
feigin은 무엇인가? 무슨 장점?
-
체하다 사용 주석 기반의 인터페이스
-
척하기는 부하 분산 기능을, 리본 통합
-
통합 Hystrix은 퓨즈 수있는 능력을 가지고
사용
의존 치어 추가하십시오.
2. 시작 클래스는 @EnableFeignClients를 추가
인터페이스 @FeignClient (이름 = "XXX") 지정을 서비스 호출을 정의합니다
리본과 척하기 차이점은 무엇입니까?
-
리본하지만 다른 방법으로, 다른 서비스를 요구하고있다.
-
다른 클래스 노트를 시작, 리본 @EnableFeignClients 그 @RibbonClient 체하다입니다
-
다른 서비스는 위치를 지정 리본이 문에 @RibbonClient 의견이며, 척하기는 인터페이스의 추상 메소드의 정의에 선언 @FeignClient의 사용이다.
-
다른 호출, 리본 필요가 자신의 HTTP 요청을 구축, 요청이 다음 RestTemplate을 사용하여 다른 서비스로 전송됩니다 시뮬레이션 HTTP, 아주 지루한 단계를 반복합니다. 척하기 방법의 요구는 추상적 인 방법이 될 수있다 정의하기 위해 호출합니다.
봄 클라우드 버스는 무엇입니까?
봄 구름 버스 노드가 연결 통신사의 경량으로 배포됩니다, 그것은 변경하거나 직접 방송 통신 서비스 구성 파일에 사용할 수 있습니다 또한 모니터링에 사용할 수 있습니다.
당신이 구성 파일을 수정 요청을 보낼 경우, 모든 클라이언트가 구성 파일을 다시 읽합니다.
사용
의존도를 추가하십시오
2. 구성 rabbimq
유레카 사육사 및 서비스 등록 및 검색 기능 둘 사이의 차이점에 대해, 제발 이야기를 제공 할 수 있습니까?
CP는 사육사 원리, 강력한 일관성 및 파티션 내결함성이다.
유레카 AP 원리는 가용성과 내결함성 파티션입니다.
사육사는 기본 노드가 실패 할 때 때, ZK는 결국 복구하지만 나머지 노드의 마스터 노드가 너무 오래 걸리 선택하지만, 선택한 마스터 노드가 서비스를 사용할 수없는 원인이 동안, 이것은 용납 할 수 없습니다.
각 노드가 동일 유레카, 노드를 중지, 다른 노드는 정상적인 서비스를 보장합니다.
당신은 기술 스택 마이크로 서비스 무엇을 알고? 몇 가지 이름을
게이트웨이 역할 서비스
-
외부 요청을 처리하는 통합 클라이언트 호출의 복잡성을 단순화합니다.
-
외부 데이터를 처리 한 후, 상기 인터페이스 요구에 따라, 데이터 및 중합 자르기.
-
멀티 채널 지원은 다른 클라이언트에 대해 다른 게이트웨이 지원을 제공합니다.
-
기존 시스템의 마이크로 서비스 변환은, 신규 및 기존 시스템의 전송 구성 요소로 사용할 수 있습니다.
-
통합 처리 보안, 통화 중 유상 증자.
링크 경찰견 추적
우리가 봄 클라우드 경찰견에서 프로젝트를 소개 할 때, 각 링크 요청 추적 정보, 형식 [서버 이름, 메인 traceId, 하위 spanId, 부울]의 무리를 추가합니다 :
-
서버 이름 : 서비스 노드의 이름입니다.
-
메인 traceId : TraceID 된 고유 링크 ID.
-
서브 spanId 각 링의 링크 ID는 SpanID이다.
-
부울 : 수집하고 디스플레이 지프 킨 및 기타 서비스 정보를 출력하는지 여부.
Sleuth的实现是基于HTTP的,为了在数据的收集过程中不能影响到正常业务,Sleuth会在每个请求的Header上添加跟踪需求的重要信息。这样在数据收集时,只需要将Header上的相关信息发送给对应的图像工具即可,图像工具根据上传的数据,按照Span对应的逻辑进行分析、展示。
好了各位, 本文到这里就结束了! 如果本文有任何错误,请批评指教,不胜感激 !
写在最后
还有现在整理好了 1000 道多家公司 java 面试题 400 多页 pdf 文档,都已经分专题整理好了。还有几百页的Java核心知识点PDF,和海量的学习资料
公众号:JavaTimo 可以回复:pdf 领取。
我是提莫! 一个节操泛滥,一身凛然正气,刚正不阿的Java程序员