public safety alert system - donald bren school of ...cs237/all_past_years/old... · middleware,...

13
Team 1. Yuyang Chen, Fuyao Li, Yanqi Gu Public Safety Alert System Message Queue Based Middleware Implementation

Upload: others

Post on 03-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Team 1. Yuyang Chen, Fuyao Li, Yanqi Gu

Public Safety Alert System

Message Queue Based Middleware Implementation

Page 2: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Project Overview

1. Build a message Queue based on messaging middleware system to issue alert messages when emergency happens. 2. Send message to certain clients based on the their location and the emergency type. 3. Send message with priority. Clients closer to the emergency site will be prioritized and receive the message in shorter time. 4. Realize all the functionalities with three popular messaging middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities with Springboot (Spring based backend application framework). Implemented a UI test interface with thymeleaf.

Page 3: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Related work

•  Dobbelaere, Philippe, and Kyumars Sheykh Esmaili. "Kafka versus RabbitMQ: A comparative study of two industry reference publish/subscribe implementations: Industry Paper." Proceedings of the 11th ACM International Conference on Distributed and Event-based Systems. ACM, 2017.

Related  work:  This  paper  compares  the  common  func1onali1es  and  different  mechanisms   in  RabbitMQ  and   Ka:a   and   give   sugges1on   on   best   use   cases   for   these   two   frameworks.   In   architecture   side,  RabbitMQ,   based   on   AMQP   architecture,   uses   a   rou1ng   key   to   a   network   of   exchanges   to   publish  message.   Ka:a   publish   message   to   disk   based   on     appending   log   that   is   topic   specific.   Delivery  Guarantees(failure   rate,   can   be   reduced   by   replica1on),   ordering   guarantees,   availability   are   also  discussed(replica>on).  This  paper  helps  us  to  learn  the  tradeoffs  in  different  MQ  architectures.    •  John, Vineet, and Xia Liu. "A survey of distributed message broker queues." arXiv preprint arXiv:1704.00411 (2017). Related  Work:  This  paper  compared  the  Ka:a  Architecture  and  AMQP(RabbitMQ)  architecture  by  doing  experiment.  Finally,  they  reached  the  conclusion  that,  KaCa  Architecture   is  beJer  for  cases  which  have  higher   requirement   in   throughput.   AMQP   architecture   is   beIer   for   cases   need   high  reliability(Encryp1on  enabled,  mul1ple  broker  work  mode:  p2p,  publisher/consumer,  broadcas1ng).  This  paper  help  us  to  interpret  the  tes1ng  results.  

 •  Kreps, Jay, Neha Narkhede, and Jun Rao. "Kafka: A distributed messaging system for log processing." Proceedings of

the NetDB. 2011. Related  Work:  This  paper  gives  us  a  overview  of  KaCa  architecture  and  performance  metrics  compared  with  RabbitMQ.  This  paper  introduces  the  topic  based  architecture  of  KaCa,  efficient  transfer,  stateless  broker,  distributed  coordina>on.  We  use  these  concepts  to  design  our  code  for  Ka:a  demo.  

AMQP architecture

Kafka architecture

Page 4: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Workflow

l  Client: Client have a current location and a home location.

l  Emergency Type: We have six e m e r g e n c y t y p e choices(Flooding, Robbery, Earthquake, Sexual Assault, Gun shot, Fire). Different types will use different client location to send messages.

l  Message: Messages will be send to client based on how far t hey a re away f rom the emergency issue. We have three alert levels. The higher l e v e l m e s s a g e s w i l l b e prioritized during sending.

l  Broker : The te rmina l to distribute messages to users.

Keywords Work flow diagram

Create  userClient  id

Client  current  locationClient  home  location

Database(mySQL)

• Data  Prepara>on

• Demo  Process

Select  a  messaging  platform(RabbitMQ,  ActiveMQ,  Kafka)

Issue  an  emergency  Event  with  certain  type

Message  are  sent  based  on  client  current  location

Messages  are  sent  based  on  client  home  location

Prioritized  messages  based  on  client  location(high,  

medium,  low)

Send  messages  to  message  broker  based  on  framework  architecture

Send  message  to  message  queues

Get  result  and  graph  Analysis

Emergency  type:Flooding

EarthquakeFire

Emergency  type:Robbery

Sexual  AssaultGun  Shot

Page 5: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Prioritization for messages

Produce message to corresponding queues sequentially based on priority. ActiveMQ Prioritiz

ation

Create thread groups sequentially based on priority to create messages and publish message to corresponding topics. Kafka

Produce messages sequentially and push into exchange based on priority, then broadcast messages to clients with corresponding queues. RabbitMQ

1.  Calculate the Euclidean distance between the client location and the emergency issue location. If the distance is less than 10 miles, the client will be set up high priority group, if the distance is between 10 ~ 20 miles, the client will be in medium group. Otherwise, the client will be in low priority group.

2.  Add call back functions to get the elapse time for further analysis. 3.  Customize the approach to realize prioritization based on different framework mechanism (RabbitMQ,

ActiveMQ, Kafka).

Page 6: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

RabbitMQ Implementation

1.  We implement the exchange as a queue for a group of clients and let our prioritization module to do the matching job. 2.  In our system, the RabbitMQ producer will produce 1 message for one exchange. The exchange will broadcast this

message to the binding queues, which corresponds to a certain client belonging to this group. 3.  We send messages to exchange in a sequentially order based on priority. The high priority clients will receive message

relatively earlier, but with broadcast latency, the strict priority is not guaranteed.

• Architecture

• Explanation

Producer

Exchange  1(high  priority)

Exchange  2(medium  priority)

Exchange  3(low  priority)

Step1:  1message

Step2:  1  message

Step3:  1  message

Client  1

Client  2

...

Client  n

Broadcast

Same  queue  binding  rules  also  applies  for  exchange  2  

and  exchange  3.

Send  customized  message  to  

exchange  1,  2,3  sequentially

Initialize  emergency  type  and  location

Setup  Priority  Group  based  on  distance

High  Priority  Group

Medium  Priority  Group

Low  Priority  Group

Client  location  is  no  more  than  10  miles  away  from  emergency

Client  location  is  more  than  10  miles,  less  than  20  miles  away  from  emergency

Client  location  is  more  than  20  miles  away  from  emergencySet  up  priority  groups

Produce  customized  messages

Same  group  classification  logics  also  applies  to  medium  and  low  priority  groups

Page 7: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

ActiveMQ Implementation

1.  Support many Cross Language Clients and Protocols, easy to use, fully support JMS and J2EE. 2.  There is no exchange in ActiveMQ, we need to produce as many messages as the client’s number. 3.  We ensure the priority by sending messages to queue 1, 2, 3 sequentially. This strictly guarantee all the messages with

higher priority are received before lower priority message.

• Architecture

• Explanation

Producer

Queue  1(high  priority)

Queue  2(medium  priority)

Queue  3(low  priority)

Number  of  high  priority  message

Number  of  medium  priority  message

Number  of  low  priority  message

Client  1

Client  2

...

Client  n

Same  queue  binding  rules  also  applies  for  exchange  2  

and  exchange  3.

Send  message  to  queue  1,  2,  3  sequentially

Setup  Priority  Group  based  on  distance

High  Priority  Group

Medium  Priority  Group

Low  Priority  Group

Client  location  is  no  more  than  10  miles  away  from  emergency

Client  location  is  more  than  10  miles,  less  than  20  miles  away  from  emergency

Client  location  is  more  than  20  miles  away  from  emergency

Same  group  classification  logics  also  applies  to  medium  and  low  priority  groups

Initialize  emergency  type  and  location

Set  up  priority  groups

Produce  customized  messages

Page 8: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Kafka Implementation

1.  Kafka is a high-throughput distributed messaging system distributed, partitioned, replicated commit log service. 2.  In our implementation, we use multi-threaded programming to start multiple thread groups sequentially based on priority

groups. This generally guarantee the priority sequence.

• Architecture

• Explanation

Producer

Topic  1(high  priority)

Topic  2(medium  priority)

Topic  3(low  priority)

Number  of  high  priority  message

Number  of  medium  priority  message

Number  of  low  priority  message

Client  1

Client  2

...

Client  n

Same  queue  binding  rules  also  applies  for  exchange  2  

and  exchange  3.

Send  message(create    

by  thread  groups)  to  topic  

1,  2,  3  sequentially

Setup  Priority  Group  based  on  distance

High  Priority  Group

Medium  Priority  Group

Low  Priority  Group

Client  location  is  no  more  than  10  miles  away  from  emergency

Client  location  is  more  than  10  miles,  less  than  20  miles  away  from  emergency

Client  location  is  more  than  20  miles  away  from  emergency

Same  group  classification  logics  also  applies  to  medium  and  low  priority  groups

Initialize  emergency  type  and  location

Set  up  priority  groups

Produce  customized  messages

Page 9: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Simulation Visualization

High  priority  area Medium  priority  area

Low  priority  area

Emergency  Loca1on

Page 10: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Performance Analysis(Average Result)

Result of RabbitMQ is unpredictable. Priority works not so well

No significant difference in Kafka.(Multi-Threaded) Kafka can handle very high throughput.

ActiveMQ may take more time, but is more stable.

Page 11: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

RabbitMQ/ActiveMQ/Kafka Sample Experiment

RabbitMQ ActiveMQ

Kafka Red Line: High priority message Yellow Line: Medium priority message Blue Line: Low priority message X coordinate: the sequential order in all the received message Y coordinate: the message receiving time.

Page 12: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Demo Video

Page 13: Public Safety Alert System - Donald Bren School of ...cs237/all_past_years/old... · middleware, RabbitMQ, ActiveMQ and Kafka. Compare the performance metrics. 5. Integrate all functionalities

Q & A session Thanks for l i s ten ing!

Thanks