JAVA 에서 자주 사용 하 는 RPC 프레임 워 크 분석
4522 단어 JAVARPC 프레임 워 크
RPC 에 대한 논리 적 관계 도 는 RMI 를 예 로 들 면:
다른 프레임 워 크 구조 도 비슷 하 다.대상 의 직렬 화 방법,전송 대상 의 통신 프로 토 콜,등록 센터 의 관리 와 failover 디자인(zookeeper 이용)과 구별 된다.
클 라 이언 트 와 서버 는 서로 다른 JVM 에서 실행 할 수 있 습 니 다.클 라 이언 트 는 인터페이스 만 도입 하고 인터페이스의 실현 과 실행 에 필요 한 데 이 터 는 모두 서버 에 있 습 니 다.RPC 의 주요 의존 기술 은 직렬 화,반 직렬 화 와 전송 프로 토 콜 입 니 다.JAVA 에서 대응 하 는 것 은 대상 의 서열 화,반 직렬 화 와 직렬 화 된 데이터 전송 입 니 다.RMI 의 직렬 화 와 역 직렬 화 는 JAVA 가 자체 적 으로 가지 고 있 는 것 으로 Hessian 의 직렬 화 와 역 직렬 화 는 사유 이 고 전송 프로 토 콜 은 HTTP 이 며 Dubbo 의 직렬 화 는 여러 가지 선택 이 가능 하 며 일반적으로 Hessian 의 직렬 화 프로 토 콜 을 사용 하고 전송 은 TCP 프로 토 콜 로 고성능 NIO 프레임 넷 티 를 사용 합 니 다.서열 화 에 대해 저 는 Google 의 ProBuffer,JBoss Marshalling,Apache Thrift 등 도 알 고 있 습 니 다.예전 에 ProBuffer 를 소개 하 는 박문 이 있 었 습 니 다.
1.RMI(원 격 방법 호출)
JAVA 가 자체 적 으로 가지 고 있 는 원 격 방법 호출 도 구 는 한계 가 있 습 니 다.왜냐하면 JAVA 언어 가 처음에 디자인 되 었 기 때 문 입 니 다.나중에 많은 구조의 원 리 는 RMI 를 바탕 으로 RMI 의 사용 은 다음 과 같 습 니 다.
대외 인터페이스
public interface IService extends Remote {
public String queryName(String no) throws RemoteException;
}</span>
서비스 구현
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
//
public class ServiceImpl extends UnicastRemoteObject implements IService {
/**
*/
private static final long serialVersionUID = 682805210518738166L;
/**
* @throws RemoteException
*/
protected ServiceImpl() throws RemoteException {
super();
}
/* (non-Javadoc)
* @see com.suning.ebuy.wd.web.IService#queryName(java.lang.String)
*/
@Override
public String queryName(String no) throws RemoteException {
//
System.out.println("hello" + no);
return String.valueOf(System.currentTimeMillis());
}
}
RMI 클 라 이언 트
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
// RMI
public class Server {
public static void main(String[] args) {
//
Registry registry = null;
try {
//
registry = LocateRegistry.createRegistry(8088);
} catch (RemoteException e) {
}
try {
//
ServiceImpl server = new ServiceImpl();
//
registry.rebind("vince", server);
System.out.println("bind server");
} catch (RemoteException e) {
}
}
}
서비스 등록 관리 자 는 Server 에 쓰 여 있 습 니 다.물론 단독 서 비 스 를 추출 할 수 있 습 니 다.다른 프레임 워 크 에 서 는 Zookeeper 로 등록 관리 역할 을 합 니 다.2.Hessian(HTTP 기반 원 격 호출)
HTTP 프로 토 콜 전송 을 기반 으로 성능 면 에서 완벽 하지 못 하 며,부하 균형 과 실효 전 이 는 애플 리 케 이 션 의 부하 이퀄 라이저 에 의존 하고 있 으 며,Hessian 의 사용 은 RMI 와 유사 하 며,레 지 스 트 리 의 역할 을 약화 시 킨 것 과 구별 되 며,표 시 된 주소 호출 을 통 해 Hessian Proxy Factory 루트 가 설정 한 주소 create 를 이용 하여 프 록 시 대상 을 만 들 고,Hessian 의 Jar 패키지 도 도입 해 야 한다.
3.Dubbo(타 오 바 오 오픈 소스 의 TCP 기반 RPC 프레임 워 크)
NIO 프레임 워 크 Netty 의 고성능 RPC 프레임 워 크 를 바탕 으로 알 리 바 바 가 오픈 한 것 으로 전체적인 원 리 는 다음 과 같다.
Dubbo 를 이해 하기 전에 Zookeeper 에 대해 깊이 이해 해 야 한다.zookeeper 를 이해 한 후에 Dubbo 도 비밀 이 없다.
Zookeeper 는 Dubbo 서비스의 등록 센터 로 서 Dubbo 는 원래 데이터 베 이 스 를 기반 으로 하 는 등록 센터 로 Zookeeper 를 사용 하지 않 았 습 니 다.Zookeeper 는 분포 식 서비스 프레임 워 크 로 트 리 형 디 렉 터 리 서비스의 데이터 저장 으로 클 러 스 터 관리 데 이 터 를 할 수 있 습 니 다.여 기 는 Dubbo 서비스 등록 센터 로 서 Dubbo 는 Zookeeper 와 클 러 스 터 배 치 를 할 수 있 습 니 다.공급 자가 정전 등 이상 정지 가 발생 했 을 때 Zookeeper 등록 센터 는 공급 자 정 보 를 자동 으로 삭제 하고 공급 자가 다시 시작 할 때 등록 데이터 와 구독 요청 을 자동 으로 복원 할 수 있 습 니 다.
Dubbo 의 상세 한 설명 은 타 오 바 오 개원 에서 매우 상세 하 게 말 했 습 니 다.업무 중 에 많은 생산 프로젝트 가 Dubbo 를 사 용 했 습 니 다.그 과정 에서 주의해 야 할 부분 도 많이 발 견 했 습 니 다.특히 그 많은 배치,설정 이 적당 하지 않 으 면 사람 을 귀 찮 게 할 수 있 습 니 다.기 존의 오픈 소스 를 바탕 으로 하 는 Dubbo 를 다시 맞 춤 형 으로 최적화 하 는 것 이 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.