rabbitmq의 성능 테스트와 대비, 고가용 집단 구축
4418 단어 mq
rabbitMq 압력 측정 방안
rabbitmq 압력 측정 성능 코드
public class Send2 {
//
private final static String QUEUE_NAME = "helloword2";
public static void main(String[] args) throws Exception {
/**
* MabbitMQ
*/
ConnectionFactory factory = new ConnectionFactory();
// MabbitMQ ip
factory.setHost("127.0.0.1");
//
factory.setUsername("springcloud");
factory.setPassword("springcloud");
//
factory.setPort(AMQP.PROTOCOL.PORT);
//
Connection connection = factory.newConnection();
//
Channel channel = connection.createChannel();
//
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//
String message = "hello world!hello world!hello world!hello world!hello world!hello world!hello world!hello world!hello world!hello world!";
// String message = "hello world!";
//
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
for(int i=0;i<3000000;i++){
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
}
//
channel.close();
connection.close();
}
}
끊임없이 메시지를 쓰는 거예요.
소비자 코드를 가동한 다음에 위의 생산자를 가동한다.queue는 다르다. 합계 초당 대략적인 ack 수량을 보면 나의 mac는 약 12000개/s로 메시지 수량을 늘리고 10배, 초당 대략적인 ack 수량은 4000/s로 메시지 수량을 늘린다. 10배는 변하지 않는다. 생산을 멈추고 소비만 본다. 초당 대략적인 ack 수량은 7000/s이다. 그리고 소비자를 멈추고 단순히 쓰기를 한다. 쓰기 속도는 40000/s이다. 그러나 불안정한 것 같다.때로는 수천 초가 나타날 수도 있다.거울로 삼을 만하다https://www.cnblogs.com/yulia/p/6369894.html
jmeter를 이용하여 압력 측정을 진행하면 참고할 수 있다https://www.cnblogs.com/xpp142857/p/8457068.html또는 jmeter의 설치 및 사용https://www.cnblogs.com/dyh2025/p/9461964.html---jmeter 사용https://www.cnblogs.com/by-dream/p/5611555.html
rabbitMq 클러스터 범주 및 구축 시나리오
rabbitMq, rocketMq, kafaka 적용 장면 비교
구조면: Kafaka는 정상적인 mq 구조로provider broker consumer를 포함합니다.kafaka는 메시지 확인 메커니즘이 없는rabbitMq의broker는 exchange,binderqueue 세 부분으로 구성되어 있는데 그 중에서 exchange와binding은 메시지의 루트 키를 구성한다.클라이언트 프로듀서는 채널과 서버를 연결하여 통신을 하고,Consumer는queue에서 메시지를 받아 소비하고,rabbit는 메시지 확인 메커니즘이 있습니다
토출량 측면: Kafaka는 zero-copy 방식을 사용한다. 즉, 데이터 저장과 획득은 로컬 디스크 순서의 대량 작업이고 O(1)의 복잡도를 가진다. 데이터 처리 효율이 매우 높고 RabbitMq는 토출량 면에서 Kafaka보다 못하다. RabbitMq는 메시지에 대한 신뢰할 수 있는 전달을 지원하고 사무를 지원하며 대량 조작을 지원하지 않는다.
가용성 측면에서 Kafaka의 브로커는 기본 모드를 사용하기 때문에 가용성이 매우 높습니다. RabbitMq는 miror queue를 지원하고 주queue가 효력을 상실하고 minor queue가 적용됩니다.
집단 부하의 경우 Kafaka는 zookeeper를 사용하여 부하 균형을 실현한다. zookeeper는 집단 중의 broker sonsumer를 관리한다. zookeeper의 조율 메커니즘을 통해 Producer는 topic에 대응하는 broker를 기록하고 broker에 대해 윤문하거나 무작위로 broker를 방문한다. 부하 균형을 실현하려면 RabbitMq는 부하 균형을 단독으로 사용자 정의해야 한다.
메시지의 정확성에 있어서 카파카는 업무를 지원하지 않고 메시지의 중복, 분실, 오류에 대해 엄격한 요구가 없다.rabbitMq는 AMQP 프로토콜을 사용하고 AMQP 프로토콜은 기업 시스템에서 더 많이 사용되며 데이터의 일치성, 안정성과 신뢰성에 대한 요구가 높은 장면이다.
rabbitMq,rocketMq는 rabbitmq보다 전체적으로 안정적이고 지연이 적습니다. rabbitMq 커뮤니티가 더욱 활발합니다. rabbitmq 관리 인터페이스가 더욱 좋습니다. rabbitmq의 토출량은 만 레벨이고 한 량급이 적습니다.