2012-05-11 3 views
1

데이터베이스에 저장 될 수 있도록 사용 로그를 내 서버로 보내려는 안드로이드 애플리케이션이 있습니다.MQTT VS REST로 앱 로그 보내기

기본적으로 사용자가 수행하는 거의 모든 동작을 기록하고 싶습니다. 간단한 버튼을 클릭해도됩니다.

MQTT가 이미 응용 프로그램에서 사용 되었기 때문에 로깅을 위해 MQTT를 사용하는 것이 좋습니다.

예를 들어, 로그 할 때마다 MQTT를 통해 조치를 게시하고 일부 서버 부 서비스가 해당 로깅 채널을 구독하고 로그 게시가 도착할 때마다 그것을 DB에 삽입하십시오. 30 개 문자의 사용자가 어떤 대역폭 무거운 것 수행 할 때마다 메시지를 게시하면 내가 원하는

  1. 이 알 -

    그러나 내가 걱정하는 건 몇 가지가 있습니다.

  2. 해당 채널을 수신하고 각 메시지를 DB에 삽입하는 서비스에 가장 적합한 솔루션은 무엇이 될까요?

또 다른 옵션은 정규 REST 메서드를 통해 데이터를 보내는 것입니다.하지만 두 가지 옵션이 있습니다. 큰 벌크로 보내거나 (응용 프로그램이 닫히기 전에 언제 보내야하는지 알고 있어야합니다.)) 또는 로깅 동작이 발생할 때 실시간으로 보내십시오.

그러면 MQTT 로깅 채널에 가입 할 서비스가 필요하지 않습니다.

그리고 내 서버가 수천 명의 사용자를 동시에 처리 할 수 ​​있어야한다고 가정 해 봅시다.

흥미로운 의견이 있으십니까?

감사합니다.

+1

대역폭은 대략적으로 (사용자 수) * (패킷 당 바이트) * (초당 이벤트)입니다. 2000 사용자 * 30 자 * 초당 1 이벤트 = 60kB/s. – ralight

답변

4

MQTT를 이미 사용하고 있다면,이를 로깅에 사용하는 것이 좋습니다. 대역폭 요구 사항에 대한 위의 빠른 계산은 엄청난 부담이 될 것 같지 않습니다. 로깅 앱은 필자의 예에서 초당 2000 개의 메시지를 처리 ​​할 수 ​​있어야합니다. 그것은 단지 당신이 사용하는 어떤 데이터베이스에 연결되어있는 단순한 MQTT 클라이언트 일 것이다. mysql에 대한 간단한 예제가 있습니다. https://bitbucket.org/oojah/mosquitto/src/426b311d682d/examples/mysql_log/mysql_log.c

많은 이벤트를 보내는 데 전력을 많이 사용하는 것이 좋습니다. Stephen Nicholas는 여러 시나리오 (http://stephendnicholas.com/archives/219)와 두 번째로 암호화 된 MQTT 대 HTTPS (http://stephendnicholas.com/archives/1217)에서 간단한 MQTT 사용법을 처음으로 살펴본 MQTT 사용법을보고 Android에 대한 두 가지 연구를 수행했습니다. 고려해야 할 점은 연결을 활성 상태로 유지하는 배터리 비용과 메시지를 보내는 비용과 속도입니다. 초당 하나의 메시지, keepalive = 240 초를 가정하고 사용자가 동일한 전화를 갖고 있다고 가정 할 때, 전화에서 일어나는 다른 작업보다 시간당 약 3.1 %의 배터리 수명을 소비합니다.