ZeroMQ : 데이터 유형 당 소켓 또는 하나의 소켓?

Kramer65

약 10 개의 다른 (센서 읽기) 프로그램에서 정보를 수신하는 프로그램이 있습니다 (모두 스스로 제어). 이제 ZeroMQ를 사용하여 통신하게 만들고 싶습니다 .

대부분의 대기열에서 중요한 것은 중앙 수신 프로그램에 항상 최신 센서 데이터가 있으며 모든 오래된 메시지는 더 이상 중요하지 않다는 것입니다. 몇 개의 메시지가 손실 되어도 상관 없습니다. 그래서 그들 모두를 위해 나는 별도의 PUB/SUB소켓으로 시작했습니다 . 각 프로그램에 하나씩. 그러나 그것이 올바른 방법인지 확실하지 않습니다. 내가 이해하는 한 두 가지 옵션이 있습니다.

  1. 모든 프로그램에 대해 별도의 소켓을 만들고 루프에서 읽습니다. 그렇게하면 정보가 무엇인지 소켓이 알 수 있습니다 (종종 int.
  2. 모든 프로그램이 연결되는 하나의 소켓을 만들고 내가 보내는 모든 메시지와 함께 string받는쪽에 메시지의 내용을 알려줍니다.

모든 연결은 PUB/SUB기본이므로 하나의 소켓을 만드는 것이 좋습니다. 이것이 가장 효율적인 방법인지 확실하지 않습니다.

모든 팁을 환영합니다!

사용자 3666197

- PUB/SUB 괜찮 및 N-센서에서 쉽게 변환 할 수 있습니다 : N-센서로 1 로거 : 2 + -loggers
- 하나는 또한 액세스 포트에서 소켓의 개념 분리 혜택을 누릴 수있는 하나 개 이상의 소켓을 얻을 수 있습니다 연결됨

항상 실제 (마지막) 센서 판독 값을 얻는 방법 :

시스템 통합 제약으로 인해 일부 초기 ZeroMQ API에 바인딩되지 않은 경우 메서드 를 통해 정확히 이에 대한 멋진 기능이 있습니다.setsockopt( ZMQ_CONFLATE, True ) .

ZMQ_CONFLATE: 마지막 메시지 만 유지

설정되면 소켓은 인바운드 / 아웃 바운드 큐에 하나의 메시지 만 유지해야하며이 메시지는 마지막으로 수신 된 메시지 / 마지막 메시지가 전송됩니다.
무시 ZMQ_RCVHWMZMQ_SNDHWM옵션. 않습니다 하지 여러 부분으로 메시지를 지원, 특히, 그것의 한 부분이 소켓 내부 큐에 보관됩니다.


디자인 딜레마 :

당신의 실시간 제어 안정성을 소개합니다 일부 하드 실시간 제한하지 않는 한, PUB- 측 자유롭게 결정, 새로운 값을 지시하는 빈도 .send()SUB(-s)를. 여기에는 마법이 필요하지 않으며, ZMQ_CONFLATE관리되는 내부 발신 대기열에 대한 옵션 설정 이 적습니다 .

SUB(-s) 측 수신기 (들)도 도움이됩니다 ZMQ_CONFLATE관리 내부 수신 큐에 대한 옵션을 설정하지만, 개인의 집합 주어진 .bind()당신의 "마지막"값 것이다, 다른 개인의 감각 판독의 전달을 위해 별도의 착륙 포트를 인스턴스화 -s 일관되게 "마지막"판독 값을 유지합니다. 모든 판독 값이 공통 랜딩 패드로 이동하면 수신 프로세스가 모든 판독 값을 마스킹 (손실)하게되지만 우연히 "마지막"판독 값이 발생한 바로 전에는 .recv()그다지 도움이되지 않을 것입니다.

일부 I / O 성능 관련 조정이 필요한 경우 .Context( n_IO_threads )+ ZMQ_AFFINITY매핑 옵션이 증가하고 ioDataPumpIO 성능 향상을 위해 활용할 수 있는 리소스의 우선 순위를 지정할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

소켓 유형의 차이점

분류에서Dev

소켓 용 Python C # 데이터 유형

분류에서Dev

java.net. *를 가져온 후에도 오류가 발생하는 소켓 데이터 유형;

분류에서Dev

소켓의 하위 유형 인 SSLSocket에 create_connection 메소드가없는 이유는 무엇입니까?

분류에서Dev

고유하게 식별하는 소켓

분류에서Dev

소켓 및 데이터 전송 형식

분류에서Dev

소켓이 유효하지 않을 때

분류에서Dev

Android의 소켓에서 데이터를 읽는 방법

분류에서Dev

응답에서 데이터를 추출하는 방법 (소켓)

분류에서Dev

동일한 프로세스에서 여러 ZeroMQ 소켓 유형을 작동하는 방법은 무엇입니까?

분류에서Dev

소켓 종료 보내기 또는 받기에 해당하는 TcpClient

분류에서Dev

소켓이 1KB (425B)의 데이터 만 보내는 이유는 무엇입니까?

분류에서Dev

데이터 그램 Unix 소켓의 ECONNREFUSED

분류에서Dev

링 토폴로지를위한 ZeroMQ-소켓을 구성하는 방법?

분류에서Dev

Unix 소켓을 사용하는 Quarkus 데이터 소스는 무시됩니다.

분류에서Dev

유닉스 소켓의 ssh

분류에서Dev

ZeroMQ 영구 PULL 소켓

분류에서Dev

ZeroMQ REP 소켓 주제

분류에서Dev

데이터 그램 유형 소켓 용 ServerSocket?

분류에서Dev

받는 피어의 소켓이 "control-c"를 사용하여 보내는 피어의 소켓을 닫을 때 ''계속 수신하는 이유

분류에서Dev

android의 listview에서 소켓 io에서 데이터를 검색하는 방법

분류에서Dev

소켓이 이렇게 작동하는 이유는 무엇입니까?

분류에서Dev

소켓이란?

분류에서Dev

소켓을 사용하여 java-bean을 사용하여 로그인 데이터를 공유하는 것이 얼마나 안전합니까?

분류에서Dev

MySQL 데이터베이스를 쿼리하는 Java 소켓 서버

분류에서Dev

항상 데이터를 수신하는 소켓 클라이언트 설정

분류에서Dev

블록이 끝날 때까지 유지하는 페이 웹 소켓

분류에서Dev

socket.io는 일치하는 소켓에 데이터를 보냅니다.

분류에서Dev

웹 소켓 당 하나의 DB 연결 만 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    소켓 유형의 차이점

  2. 2

    소켓 용 Python C # 데이터 유형

  3. 3

    java.net. *를 가져온 후에도 오류가 발생하는 소켓 데이터 유형;

  4. 4

    소켓의 하위 유형 인 SSLSocket에 create_connection 메소드가없는 이유는 무엇입니까?

  5. 5

    고유하게 식별하는 소켓

  6. 6

    소켓 및 데이터 전송 형식

  7. 7

    소켓이 유효하지 않을 때

  8. 8

    Android의 소켓에서 데이터를 읽는 방법

  9. 9

    응답에서 데이터를 추출하는 방법 (소켓)

  10. 10

    동일한 프로세스에서 여러 ZeroMQ 소켓 유형을 작동하는 방법은 무엇입니까?

  11. 11

    소켓 종료 보내기 또는 받기에 해당하는 TcpClient

  12. 12

    소켓이 1KB (425B)의 데이터 만 보내는 이유는 무엇입니까?

  13. 13

    데이터 그램 Unix 소켓의 ECONNREFUSED

  14. 14

    링 토폴로지를위한 ZeroMQ-소켓을 구성하는 방법?

  15. 15

    Unix 소켓을 사용하는 Quarkus 데이터 소스는 무시됩니다.

  16. 16

    유닉스 소켓의 ssh

  17. 17

    ZeroMQ 영구 PULL 소켓

  18. 18

    ZeroMQ REP 소켓 주제

  19. 19

    데이터 그램 유형 소켓 용 ServerSocket?

  20. 20

    받는 피어의 소켓이 "control-c"를 사용하여 보내는 피어의 소켓을 닫을 때 ''계속 수신하는 이유

  21. 21

    android의 listview에서 소켓 io에서 데이터를 검색하는 방법

  22. 22

    소켓이 이렇게 작동하는 이유는 무엇입니까?

  23. 23

    소켓이란?

  24. 24

    소켓을 사용하여 java-bean을 사용하여 로그인 데이터를 공유하는 것이 얼마나 안전합니까?

  25. 25

    MySQL 데이터베이스를 쿼리하는 Java 소켓 서버

  26. 26

    항상 데이터를 수신하는 소켓 클라이언트 설정

  27. 27

    블록이 끝날 때까지 유지하는 페이 웹 소켓

  28. 28

    socket.io는 일치하는 소켓에 데이터를 보냅니다.

  29. 29

    웹 소켓 당 하나의 DB 연결 만 사용하는 방법은 무엇입니까?

뜨겁다태그

보관