当消息生产者生产消息的能力远远大于消息的消费者的消费能力时,程序会发生什么事?
例如我这里有组桥接的生产者,每30秒会发布3700万条消息,而消费者就是一个简单的客户端,处理这3700万条消息,消费者会发生什么事?
//我知道消费者的缓冲队列会爆满溢出,导致内存泄露
怎么解决?
高洛峰2017-04-18 10:32:07
우선 이것을 메모리 누수라고 부르지는 않습니다. 이름이 좀 헐렁하네요
신뢰도 요구 사항이 높지 않은 경우 일부를 무작위로 버리는 것을 고려할 수 있습니다
확장 하드웨어
신뢰성에 대한 요구사항이 있는 경우. 쉽게 말하면 하드디스크나 데이터베이스에 먼저 던져지게 된다. 즉, 메모리에 저장할 수 없다. 이는 Java의 Socket 인스턴스와 약간 비슷합니다. 각각 SendQ 대기열과 RecvQ 대기열을 유지하는 InputStream 및 OutputStream이 있지만 이는 메모리에 있으므로 하드 디스크에 넣기만 하면 됩니다.
黄舟2017-04-18 10:32:07
메모리가 유출되더라도 여전히 충돌은 발생하지 않습니다. RejectedExecutionHandler는 거부된 작업을 처리합니다. Redis를 사용하는 것은 어떨까요? 하하