1.io는 스트림 지향입니다. 즉, 데이터를 읽을 때 스트림에서 하나씩 읽어서 데이터를 전체적으로 처리할 수 없으며 버퍼 지향입니다. 데이터는 버퍼에 저장되므로 데이터 오프셋 작업을 수행하는 것이 더 편리합니다. 2. 스레드가 io를 실행할 때 현재 읽을 데이터가 없으면 io가 차단됩니다. , 그러면 스레드가 차단됩니다. nio는 채널에서 io를 작동하므로 비차단입니다. 채널에 읽을 데이터가 없으면 채널을 전환하여 nio가 처리할 수 있습니다. 즉, 스레드는 선택기를 통해 여러 채널을 선택할 수 있지만 io는 처리만 할 수 있습니다.
다음 시나리오를 가정합니다. 4코어 시스템에서 네트워크 요청을 수신하고 비즈니스 로직을 처리하고 처리 결과를 클라이언트에 반환합니다. 비즈니스 로직 처리 중에 네트워크 요청은 10,000개입니다. 전송에 시간이 소모되지 않는다는 가정하에 5초 동안 차단해야 하는 파일을 작성합니다.
1. BIO 처리 사용:
비즈니스 로직 처리 시 IO 시간이 길어 처리 스레드가 차단됩니다. 여러 요청의 경우 하나의 요청으로 비즈니스를 처리하는 스레드가 생성되므로 5초 내에 50,000개의 스레드가 존재해야 합니다. , 비즈니스 로직을 처리하는 데 사용됩니다. CPU는 스레드 스케줄링을 처리하기 위해 대부분의 리소스를 사용합니다.
2. NIO 처리 사용: NIO의 IO 작업은 비동기식이며 비즈니스 로직 스레드를 차단하지 않습니다. 여러 요청의 경우 4개의 비즈니스 스레드가 열리고 하나의 스레드가 하나의 CPU 스레드를 차지합니다. 최고 속도로 비즈니스 로직을 처리할 수 있습니다. 비즈니스의 IO 작업은 하드웨어에서 비동기적으로 처리될 수 있으며, 데이터가 준비되면 후속 비즈니스 처리를 위해 메시지가 CPU로 전송됩니다. 이때 비즈니스를 효율적으로 처리하려면 4개의 스레드만 필요하며, CPU가 거의 유휴 상태가 아닙니다. 스레드 스케줄링에서 리소스를 소비할 필요가 없습니다.
⠀
0zhangzhun132·방금
1.io는 스트림 지향입니다. 즉, 데이터를 읽을 때 스트림에서 하나씩 읽어서 데이터를 전체적으로 처리할 수 없으며 버퍼 지향입니다. 데이터는 버퍼에 저장되므로 데이터 오프셋 작업을 수행하는 것이 더 편리합니다.
순전히 손으로 만든 작품이니 도움이 되셨으면 좋겠습니다2. 스레드가 io를 실행할 때 현재 읽을 데이터가 없으면 io가 차단됩니다. , 그러면 스레드가 차단됩니다. nio는 채널에서 io를 작동하므로 비차단입니다. 채널에 읽을 데이터가 없으면 채널을 전환하여 nio가 처리할 수 있습니다. 즉, 스레드는 선택기를 통해 여러 채널을 선택할 수 있지만 io는
처리만 할 수 있습니다.
다음 시나리오를 가정합니다. 4코어 시스템에서 네트워크 요청을 수신하고 비즈니스 로직을 처리하고 처리 결과를 클라이언트에 반환합니다. 비즈니스 로직 처리 중에 네트워크 요청은 10,000개입니다. 전송에 시간이 소모되지 않는다는 가정하에 5초 동안 차단해야 하는 파일을 작성합니다.
1. BIO 처리 사용:
비즈니스 로직 처리 시 IO 시간이 길어 처리 스레드가 차단됩니다. 여러 요청의 경우 하나의 요청으로 비즈니스를 처리하는 스레드가 생성되므로 5초 내에 50,000개의 스레드가 존재해야 합니다. , 비즈니스 로직을 처리하는 데 사용됩니다. CPU는 스레드 스케줄링을 처리하기 위해 대부분의 리소스를 사용합니다.
2. NIO 처리 사용:
NIO의 IO 작업은 비동기식이며 비즈니스 로직 스레드를 차단하지 않습니다. 여러 요청의 경우 4개의 비즈니스 스레드가 열리고 하나의 스레드가 하나의 CPU 스레드를 차지합니다. 최고 속도로 비즈니스 로직을 처리할 수 있습니다. 비즈니스의 IO 작업은 하드웨어에서 비동기적으로 처리될 수 있으며, 데이터가 준비되면 후속 비즈니스 처리를 위해 메시지가 CPU로 전송됩니다. 이때 비즈니스를 효율적으로 처리하려면 4개의 스레드만 필요하며, CPU가 거의 유휴 상태가 아닙니다. 스레드 스케줄링에서 리소스를 소비할 필요가 없습니다.
IO이든 NIO이든 Linux 네트워크 I/O 모델의 표현입니다. Linux 네트워크 모델을 학습하는 것이 좋습니다.
1.nio는 메모리 매핑을 수행하여 사용자 공간과 시스템 공간 사이에 하나의 복사본을 제거합니다.
2.nio는 비동기식, 트리거 응답, 비차단 응답으로 시스템 리소스를 최대한 활용합니다. 주로 CPU입니다
<h1>안녕하세요>