Java 빅 데이터 - RPC
6517 단어 빅 데이터
RPC 는 주로 TCP / IP 프로 토 콜 을 바탕 으로 하 는 것 이 고 HTTP 서 비 스 는 주로 HTTP 프로 토 콜 을 바탕 으로 하 는 것 입 니 다. 우 리 는 모두 HTTP 프로 토 콜 이 전송 층 프로 토 콜 TCP 위 에 있다 는 것 을 알 고 있 기 때문에 효율 적 으로 볼 때 RPC 는 당연히 한 수 위 입 니 다.
세 가지 측면 에서 RPC: RPC 구조, 동기 비동기 호출 및 유행 하 는 RPC 프레임 워 크 를 소개 합 니 다.
RPC 구조:
네 개의 핵심 구성 요 소 는 각각 Client 입 니 다. ,Server, Client Stub 및 Server Stub, 이 Stub 는 존 근 으로 이해 할 수 있 습 니 다.
RPC 는 주로 대형 기업 에 사용 되 는데 대형 기업 안에 시스템 이 많 고 업무 라인 이 복잡 하 며 효율 적 인 장점 이 매우 중요 하기 때문에 이때 RPC 의 장점 이 비교적 뚜렷 하 다.실제 개발 에 서 는 이렇게 하 는데 프로젝트 는 보통 Maven 으로 관리 합 니 다.예 를 들 어 우 리 는 주문 서 를 처리 하 는 시스템 서 비 스 를 가지 고 있 습 니 다. 먼저 그의 모든 인터페이스 (여기 가 바로 자바 중의
interface
를 말 합 니 다. 그 다음 에 전체 프로젝트 를 하나의 jar
가방 으로 포장 하고 서버 쪽 에서 이 두 개의 라 이브 러 리 를 도입 한 다음 에 해당 하 는 기능 을 실현 합 니 다. 클 라 이언 트 쪽 도 이 두 개의 라 이브 러 리 를 도입 하면 호출 할 수 있 습 니 다.왜 그 랬 어 요?주로 클 라 이언 트 쪽 jar
가방 의 크기 를 줄 이기 위해 서 입 니 다. 포장 이 발 표 될 때마다 jar
가방 이 너무 많 으 면 효율 에 영향 을 주기 때 문 입 니 다.또한 클 라 이언 트 와 서버 를 결합 시 켜 코드 의 이식 성 을 높 인 다. 서버 서비스 제공:
package cn.itcast.bigdata.rpc;
public interface LoginServiceInterface {
public static final long versionID=1L;
public String login(String username,String password);
}
package cn.itcast.bigdata.rpc.impl;
import cn.itcast.bigdata.rpc.LoginServiceInterface;
public class LoginServiceImpl implements LoginServiceInterface{
@Override
public String login(String username, String password) {
System.out.println(username + " , ");
return username + "successfully loged in , welcome......";
}
}
서버 게시 서비스:
package cn.itcast.bigdata.rpc.publish;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Builder;
import org.apache.hadoop.ipc.RPC.Server;
import cn.itcast.bigdata.rpc.ClientNameNodeProtocol;
import cn.itcast.bigdata.rpc.LoginServiceInterface;
import cn.itcast.bigdata.rpc.impl.LoginServiceImpl;
import cn.itcast.bigdata.rpc.impl.NameNodeNameSystem;
public class publish {
public static void main(String[] args) throws Exception {
Builder builder = new RPC.Builder(new Configuration());
builder.setBindAddress("localhost").setPort(13144).setProtocol(LoginServiceInterface.class)
.setInstance(new LoginServiceImpl());
Server server1 = builder.build();
System.out.println("server1 .....");
server1.start();
Builder builder2 = new RPC.Builder(new Configuration());
builder2.setBindAddress("master").setPort(1314)
.setProtocol(ClientNameNodeProtocol.class)
.setInstance(new NameNodeNameSystem());
Server server2 = builder2.build();
System.out.println("server2 .....");
server2.start();
}
}
클 라 이언 트 호출 서비스:
package cn.itcast.bigdata.rpc;
/**
* hdfs namenode ——
* @author
*
*/
public interface ClientNameNodeProtocol {
public static final long versionID = 100L;
public String getMetaData(String path);
}
package cn.itcast.bigdata.rpc;
public interface LoginServiceInterface {
public static final long versionID=1L;
public String login(String username,String password);
}
동기 호출 과 비동기 호출
동기 호출 이란 무엇 입 니까?비동기 호출 이란 무엇 입 니까?
클 라 이언 트 가 호출 이 완료 되 기 를 기다 리 고 결 과 를 되 돌려 주 는 것 이다.
클 라 이언 트 가 호출 실행 이 완료 되 기 를 기다 리 지 않 고 결 과 를 되 돌려 주 는 통 지 를 받 을 수 있 습 니 다.클 라 이언 트 가 결과 에 관심 이 없다 면 일방적인 호출 이 될 수 있 습 니 다.이 과정 은 자바 의 callable
와 runnable
인터페이스 와 유사 하 다. 우리 가 비동기 실행 을 할 때 실행 결 과 를 알 아야 한다 면 callable
인 터 페 이 스 를 사용 할 수 있 고 Future
류 를 통 해 비동기 실행 결과 정 보 를 얻 을 수 있다.실행 결과 에 관심 이 없다 면 runnable
인 터 페 이 스 를 직접 사용 하면 된다. 결 과 를 되 돌려 주지 않 기 때문이다. 물론 callable
도 가능 하 다. 우 리 는 Future
를 얻 지 않 으 면 된다.유행 하 는 RPC 프레임 워 크
현재 유행 하 는 오픈 소스 RPC 프레임 은 비교적 많다.다음은 세 가 지 를 중점적으로 소개 한다.
HTTP 서비스
사실은 오래전 에 저 는 기업 개발 모델 에 대해 HTTP 인터페이스 개발, 즉 우리 가 흔히 말 하 는 RESTful 스타일 의 서비스 인터페이스 로 규정 해 왔 습 니 다.확실히 인터페이스 가 많 지 않 고 시스템 과 시스템 의 상호작용 이 비교적 적은 상황 에서 정보 고도 초기 에 자주 사 용 했 던 통신 수단 을 해결한다.장점 은 간단 하고 직접적 이 며 개발 이 편리 하 다 는 것 이다.기 존의 http 프로 토 콜 을 이용 하여 전송 합 니 다.우 리 는 예전 에 학부 실습 이 회사 에서 백 스테이지 개발 을 할 때 주로 인터페이스의 개발 을 했 고 인터페이스 문 서 를 크게 써 서 입 출력 이 무엇 인지 엄 격 히 표시 해 야 한 다 는 것 을 기억 합 니 다.모든 인터페이스의 요청 방법 과 요청 매개 변수 가 주의해 야 할 사항 등 을 분명히 말 하 세 요.예 를 들 어 다음 예:
POST http://www.httpexample.com/restful/buyer/info/share
인 터 페 이 스 는 JSON 문자열 이나 XML 문 서 를 되 돌려 줄 수 있 습 니 다.그리고 클 라 이언 트 가 이 되 돌아 오 는 정 보 를 처리 하면 비교적 신속하게 개발 할 수 있다.그러나 대기업 의 경우 내부 시스템 이 많 고 인터페이스 가 매우 많은 상황 에서 RPC 프레임 워 크 의 장점 이 나타난다. 먼저 긴 링크 이다. 매번 통신 할 때마다 http 처럼 세 번 악 수 를 하지 않 아 도 되 고 네트워크 비용 을 줄 일 수 있다.그 다음으로 RPC 프레임 워 크 는 일반적으로 등록 센터 가 있 고 풍부 한 모니터링 관리 가 있다.발표, 오프라인 인터페이스, 동적 확장 등 은 호출 자 에 게 감지 되 지 않 고 통일 화 된 조작 이 라 고 할 수 있다.총결산
RPC 서비스 와 HTTP 서 비 스 는 아직도 많은 차이 점 이 존재 한다. 일반적으로 RPC 서 비 스 는 주로 대형 기업 을 대상 으로 하 는 것 이 고 HTTP 서 비 스 는 주로 소기 업 을 대상 으로 하 는 것 이다. RPC 효율 이 높 고 HTTP 서비스 개발 의 교체 가 빠 르 기 때문이다.한 마디 로 하면 어떤 구 조 를 선택 하 느 냐 는 시장 에서 유행 하 는 것 에 따라 결정 되 는 것 이 아니 라 전체 프로젝트 에 대해 완전한 평 가 를 하고 두 가지 개발 구조 가 전체 프로젝트 에 미 친 영향 을 자세히 비교 한 다음 에 무엇이 이 프로젝트 에 가장 적합 한 지 결정 해 야 한다.RPC 를 사용 하기 위해 모든 항목 에 RPC 를 사용 하지 말고 지역 에 맞 게 구체 적 인 상황 을 구체 적 으로 분석 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.