Netty는 TCP, UDP 및 파일 전송을 지원하는 고성능 비동기식 NIO 프레임워크입니다. IO 작업 결과를 능동적으로 또는 알림 메커니즘을 통해 편리하게 가져옵니다.
JDK는 풍부한 NIO 클래스 라이브러리를 제공하지만 인터넷에 NIO 학습 루틴도 많이 있지만 이를 사용하여 안정적인 프로그램을 개발하려는 경우 Java NIO 클래스 라이브러리를 직접 사용하기 안정적인 통신 프레임워크는 다음과 같은 이유로 쉽지 않습니다.
1) NIO의 클래스 라이브러리 및 API는 사용하기가 복잡하고 번거롭습니다. 소켓 채널
SocketChannel, ByteBuffer 등 .
2) Java 멀티 스레드 프로그래밍에 익숙해지는 등 기초로서 다른 추가 기술도 필요합니다. NIO 프로그래밍에는 Reactor 모드가 포함되기 때문입니다. 고품질 NIO 프로그램을 작성하려면 멀티스레딩 및 네트워크 프로그래밍에 매우 익숙해야 합니다.
3) 신뢰성 역량을 보완하기 위해 작업량과 난이도가 매우 높습니다. 예를 들어 클라이언트는 연결 끊김 및 재연결, 네트워크 중단, 반 패킷 읽기 및 쓰기, 캐싱 실패, 네트워크 정체, 비정상적인 코드 스트림 처리 등의 문제에 직면합니다. NIO 프로그래밍의 특징은 기능 개발이 상대적으로 쉽지만 신뢰성이 있다는 것입니다. 기능의 보완이 필요합니다. 볼륨과 난이도가 매우 큽니다.
4) JDK NIO BUG, 악명 높은 epoll 버그와 같은 버그로 인해 Selector가 폴링을 비워 결국 CPU가 100%가 됩니다. 공식에서는 JDK16 버전의 updateI8에서 이 문제가 수정되었다고 주장하고 있는데, JDK1.7 버전까지 문제가 여전히 존재하지만, BUG 발생 확률이 줄어들었고, 근본적으로 해결되지는 않았다. 해당 BUG 및 해당 BUG와 관련된 이슈 티켓은 다음 링크에서 확인할 수 있습니다:
http://bugsjava.com/bugdatabase/viewbug.do?bugid=6403933
http:/ bugs.javacom/bugdatabase/viewbugdo?bugid=2147719
오픈 소스 NO 프레임워크의 개발과 함께 현재 점점 더 많은 상용 시스템에서 오픈 소스 NO 프레임워크를 직접 통합하여 대체하는 방식을 채택하고 있습니다. 이전 자체 개발 솔루션. 가장 성숙한 NIO 프레임워크인 Netty를 예로 들면 수백 개의 상용 프로젝트에서 검증되었습니다. 예를 들어 Hadoop의 RPC 프레임워크 avro는 기본 통신 프레임워크로 Netty를 사용하고, 실시간 스트리밍 컴퓨팅 프레임워크 Sum의 기본 통신 프레임워크도 Netty를 사용하며, 기본 통신 프레임워크도 Netty를 기반으로 구축된 Twitter의 내부 RPC 프레임워크 Finagle을 사용합니다.
◎사용하기 쉬운 API 그리고 개발 문턱도 낮습니다.
◎여러 사전 설정된 코덱 기능과 여러 주류 프로토콜 지원으로 강력합니다.
◎ 강력한 사용자 정의 기능, ChannelHandler를 통해 통신 프레임워크를 유연하게 확장할 수 있습니다.
◎업계의 다른 주류 NO 프레임워크와 비교할 때 Netty는 전반적으로 최고의 성능을 제공합니다.
◎ 성숙하고 안정적인 Nety는 발견된 모든 JDK NIO BUG를 수정했습니다. 비즈니스 개발자는 더 이상 N1O BUG에 대해 걱정할 필요가 없습니다.
◎커뮤니티가 활발하고 버전 반복 주기가 짧으며 발견된 버그는 제때에 수정될 수 있습니다. 동시에 더 많은 새로운 기능이 추가될 예정입니다.
◎대규모 상용 응용 테스트를 거쳐 품질이 검증되었습니다. 인터넷, 빅데이터, 온라인 게임, 엔터프라이즈 애플리케이션, 통신 소프트웨어 등과 같은 많은 산업에서 성공적으로 상용화되어 다양한 산업의 상업적 애플리케이션을 완벽하게 충족할 수 있음을 입증했습니다.
Netty의 성능이 너무 좋아서 우리의 통신 프레임워크는 Netty를 기반으로 설계 및 개발되었습니다.
이 기사는 Shanghai Shangxuetang Java 교육에서 편집한 Li Linfeng의 "분산 서비스 프레임워크의 원칙 및 실습"을 참조합니다. 더 많은 Java 기술 기사를 읽으려면 이 칼럼으로 돌아와서 Java 기술 정보 또는 학습을 얻으십시오. 비디오, 고객 서비스에 문의하십시오.
다음 기사는 읽어볼 가치가 있습니다: "분산 서비스 아키텍처의 원리와 기능적 특성_상하이 Java 교육", "마이크로서비스 아키텍처란 무엇입니까?" 마이크로서비스 아키텍처와 SOA 아키텍처의 차이점", "RPC 아키텍처와 원리, 업계 주류 RPC 프레임워크 소개", "클래식 수직 애플리케이션 프레임워크 소개-MVC 프레임워크"
관련 권장 사항:
NIO 기반 Netty 네트워크 프레임워크(자세한 그림 및 텍스트 설명)
위 내용은 가장 성숙한 오픈 소스 NIO 프레임워크 Netty의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!