클라우드 컴퓨팅 & NoSQL/M2M & IOT

MQTT 서버 간단 공부 노트

조대협 2014. 2. 13. 20:21



MQTT 스터디 노트

스터디 노트

- IBM에서 만듬

- FB 메신져가 이걸 사용. 국내 통신사 PUSH 서버도 이걸 사용함

- 일단 FB가 쓰니, 동남아권 Telco에서 패킷 걸리는 문제는 없을듯

- Qos 0,1,2로 해서, 2 의 경우 message delivery를 gurantee함

- 저전력!! 이게 중요.

- XMPP에 비해서 훨씬 경량. (XMPP는 XML, MQTT는 byte로 보내는데, 2바이트부터 시작)

- MQTT 서버를 라즈베리와 같은 임베디드 서버에도 넣을 수 있음. IOT용!! 즉 Things가 서버가 될 수 있다!!

- 대부분 사용자 인증만 제공 (user id/password 방식) 이것도 대부분 서버들이 파일에 저장한다. (IDM이나 KEY 시스템과 연계 필요)

- TLS/SSL은 지원. X.509 인증서를 이용한 양방향 인증도 지원


간단 테스트

1. http://mosquitto.org/download/ 에서 윈도우즈용 받아서 설치

2. 서버 구동



2. Message Subscriber 기동

: -h host명, -t 토픽명



3. 메세지 보내기

: -h 호스트명 -t 토픽명 -m "메세지"



※ 참고 : 

  • 그냥 오래 놔두면, 서버에서 Subscriber로 hearbeat를 보내는 것을 볼 수 있음. 
  • Subscriber를 hangup 시켜 버리면, 서버에서 자동으로 Connection을 끊음.
  • Subscriber hangup을 풀어주면, 자동으로 서버로 붙는 걸 볼 수 있음

MQTT 서버 검토 결과 요약

mosquitto 

- 간편해서 좋기는 한데. C 기반. 그리고 클러스터링이 안됨.  (HA, Fail over는 어케 한다냐?). Facebook이 쓴다고 하는데. Consistent hashing같은걸 써야 하는데, Fail back이 복잡할듯

- user authentication을 이건. file에 넣고 한다.

- 테스트 해보니 일정 시간 패킷이 안오면 하트비트 메세지 보내기 시작하고, 메세지가 안오면 끊어 버린다.


HiveMQ (저가 상용)

- Clustering 됨 (Infinispan 씀)

- JMX 모니터링 디는 걸로 봐서. 이것은 JAVA

- MultiCast로 클러스터링을 하지만, TCP로 Fixed Size 클러스터나, AWS EC2 클러스터 지원이 가능함.

- AWS/Azure 모두 지원

- 근데 회사가 좀 작아 보인다?? 독일 SI회사


Rabbit MQ

- shared memory 구조가 없어서 어떻게 하는가 궁금하기는 하지만, federation이나 shovel 컨셉을 쓰면 WAN 구간도 가능하기 때문에, 주의깊게 볼만함. 무엇보다 무료에다가 상대적으로 Learning curve가 낮음.

- MQTT 3.1 지원

- QoS0과 1만 지원 (2는 지원 안함)

- SSL 지원

- Session stickiness 지원


IBM MQ 

- http://www-03.ibm.com/software/products/en/wmq-telemetry 이게 갑인듯


Vert.x

-  아직 부족한듯. - 특히 QoS2 지원하려면 Q나 메세지 전송에 대한 결과치를 가지고 resend할 수 있는 메카니즘이 있어야 하는데 없는듯.


추가적인 의문사항

  • 서버에 붙고 떨어지는 이벤트를 받을 수 있나?
  • 클라이언트가 떨어지는 이벤트는 어떻게 받지? mosquitto는 단순 서버라서 몬가 event listener를 달 수 없어. 그래서, 클라이언트가 떨어질때 몬가를 할 수 없지.
  • 근데, 로그를 보면 주기적으로 ping을 보내는 걸?


클라이언트

- 이클립스 Paho등 제법 많음

- Embedded 시스템에 넣을 수 있을 정도로 작음


괜찮은 자료


'클라우드 컴퓨팅 & NoSQL > M2M & IOT' 카테고리의 다른 글

구글의 IOT 솔루션  (0) 2017.03.10
TI의 IOT 개발용 센서 키트  (0) 2016.03.17
MQTT 서버 간단 공부 노트  (2) 2014.02.13
1 2 3