We use proprietary and third party's cookies to improve your experience and our services, identifying your Internet Browsing preferences on our website; develop analytic activities and display advertising based on your preferences. If you keep browsing, you accept its use. You can get more information on our Cookie Policy
Cookies Policy
FIWARE.ArchitectureDescription.Data.CloudMessaging - FIWARE Forge Wiki

FIWARE.ArchitectureDescription.Data.CloudMessaging

From FIWARE Forge Wiki

Jump to: navigation, search

Contents

Preface

Within this document you find a self-contained open specification of a FI-WARE generic enabler, please consult as well the FI-WARE Architecture, the website on http://www.fiware.org and similar pages in order to understand the complete context of the FI-WARE project.

Copyright

© Copyright 2015, ATOS.

Legal Notice

Please check the following FIWARE Open Specification Legal Notice (implicit patents license) to understand the rights to use this open specification.

Overview

Cloud Messaging GE aims to manage real time communication infrastructures. It born from the strong need to be (always) interconnected, whether personal reasons or business needs. Constantly we are interchanging information through different applications, emails, instant messaging, location, etc. not caring about the amount of information or the receptor's location. These applications are supported by a communication network, but, which infrastructure is being used? Who is the owner? What if I have similar communication needs than WhatsApp? Cloud Messaging platform creates and manages your own infrastructures, which later will support different applications with real time and high performance requirements.

What does “Real Time Communication Infrastructure” means? In our current technological stage, the amount of information that it is going to be created during the next five minutes, in the computing world, is almost impossible to be calculated: Facebook generates 2.5B likes by day, FourSquare receives 5M checking (user’s locations) each day. This situation converges to the need of new infrastructures where it has no limits about gathering (web services), storing (cloud distributed storage) data, and faster communication channels (event-driven architectures). From a more functional point of view: “Cloud infrastructures which spread web services over the unlimited network, capable of processing millions of request by second, and communications with just a few milliseconds of delay”.

Having these premises as basis, Cloud Messaging will provide infrastructures able to communicate an unlimited number of entities, interchanging an unlimited amount of information. But it is not only about the infrastructure, it also provides a platform for easily management of your entities and communication channels: create your own communication entities (mobile, truck, box, thermometer, even yourself...), establish and configure your channel's privacy.

When your environment is ready, you will be able to share your channels. Cloud Messaging infrastructure will make “the magic” that communicate all the entities in real time.

Cloud Messaging has been built with very strong requirements about performance and scalability from the beginning of the project, thus, cutting edge technologies about cloud, big data and real time services have been analysed and implemented.

Basic Concepts

Cloud Messaging is a real time communication platform based on a pub/sub mechanism. It manages two important concepts: entities and channels. An Entity can be defined as any object belonging to the Internet of Things. Cloud Messaging allows the user to create a taxonomy of entities that will allow him to facilitate their management.

A Channel is a concept strongly linked to the Entities. Each of these entities can have as many channels as required, acting each as topics managing different kind of information. Channels are the communication link between an owner of an entity and its subscribers. Each channel owns an endpoint to publish information and another one to get subscribed and receive it.

Technologies used to develop Cloud Messaging are extremely fast and scalable. That allows getting response times close to real time. That means that, when an entity publishes information, the subscribers get it instantaneously, e.g. A truck driver that gets notified because the wagon temperature is too low. These conditions are subject to external factors such as network quality or peeks usage.

Architecture

High level architecture

image:Architecture-Overview-GE.jpg

The Cloud Messaging architecture is composed by three main functional blocks:

  • Resources Management: This block is in charge of users and resources management, it also manages privacy issues. Through a REST API provides the main operations for:
  • Users management. Create, delete, register your users that will interact with the platform.
  • Resources management.
  • Entities: an entity is a basic resource: boxes, trucks, mobiles, an applications, whatever you need to send information.
  • Channels: each entity will posses his own channels. A channel is composed of a tuple of publication (send) and subscription identifiers (receive).
  • Messaging Management: These block make use of the publication and subscription identifiers in order to facilitate the use of the real-time-communication-infrastructure of Cloud Messaging.

Every message send it through the publication identifier will be received by the list of subscribers. As extra functionalities, is also in charge of checking messages correctness and the subscriptions requirements. This last point is crucial important, you could share your subscription channels but limiting the audience: registered users, public, payments.

  • Messaging broker: The service in charge of maintaining channels, queues, subscribed lists, etc. The block is not strictly part of the platform, it will be a AMQP server used by Cloud Messaging.

APIs and interfaces exposed by the architecture

Cloud Messaging open API allows you to implement your resources management in your own way. This is a key point of Cloud Messaging, your applications could have flexibility enough, not only to send/receive data, but also to configure your environment in a very dynamic way. For example, a chat application could manage rooms creating and deleting entities and channels regarding the needs.

If you are a developer, this should be your section. Here you will find a description of the REST API for resources management and pub/sub functionality.

  • API Users Documentation
  • API Entities Documentation
  • API Channels Documentation
  • API Publication/Subscription Documentation


SDK

Cloud Messaging provides a Software Development Kit to develop applications over its platform. The utilization of this SDK is very simple and efficient as show in the next subsections.

  • SDK for Java
  • SDK for Javascript
  • SDK for node.js

Main Interactions

Cloud Messaging was designed with the idea of being a very easy-to-use software that could allow developers to focus on their real application implementations forgetting about the communication infrastructure, which is usually something very complex and takes a lot of tie on what really matters, the domain application itself. Therefore, here it is shown how easy to use Cloud Messaging is:

Image:publish.png Image:suscribe.png

In the images above, it can be seen how easy is for the user to communicate his application. Internally, the system is more complex when a publish/subscription request arrives. To provide the subscription mechanism, Cloud Messaging uses the RabbitMQ message broker to manage the all the messages to be delivered to the different subscribers. In the image below, this mechanism is explained:

Image:internal.png

Anyway, it does not matter how complex Cloud Messaging is inside. What makes it so powerful is the easy way of integrating it within the developer's code and start using it.

Basic Design Principles

The main design principles for Cloud Messaging are:

  • Extremely simple: A powerful tool to be used the easiest way. SDKs and API available.
  • Scalable: Capacity of handling big amounts of messages in real time and give support to all the users that Cloud Messaging may have.
  • Fast: Delivering messages in real time.
  • Developer friendly: Easy to use and integrate. Earn time to develop what you really want.
  • IoT approach: API based on a world of entities and communication channels.
Personal tools
Create a book