Communication Module Proposal (UPDATE)

From Giews

Jump to: navigation, search

This update has beeen made necessary referring to "Communication Module Proposal"'s upgrades. Here is a new architecture proposal. Image:fenix-communication-architecture.png

Contents

[edit] Architecture Overview

Each workstation holds a copy of net's resources in its own database. All the information related to the communication module is crypted and stored into the DB. The access to the keys needed to decrypt DB's info is managed by a security layer. This layer is in charge to manage username/password access system and relation between accredited user and decryption keys. Once logged in an user can query the DB by means of Hibernate Search. DB holds a very small set of information about the resources: e.g. Title, Type and of course URL. Once a resource is selected for download its URL is used to invoke a web service.

[edit] Information Push - Proposal 1

Each workstation knows information about resources stored in the whole GIEWS network, this means that each node must be aligned with the network's status. In order to achieve this target with a low performance impact once a day all the nodes merge their own Lucene's indexes with other nodes. This is faster than push information to all nodes each time a new resource is added.

[edit] Information Push - Proposal 2

Lucene indexes file could be very heavy to transfer, moreover it could be a problem to match different nodes indexes. Proposal #2 is based on the following architecture: Image:Fenix-communication-2.png

To achieve information push into the GIEWS network, each time a node share a new resource it is in charge to propagate this new database entry to its "neighbours". Every time a node receive a new entry it checks if this resource is already in its local DB, then it propagates to its "nighbours".

TBD: neighbour peers.

[edit] Web Services

A big web services benefit is the use of HTTP protocol in order to transmit and receive information and attachments. Communication module will works on the same Workstation's port, this will avoid NAT and firewalls. Several web services will be devoleped:

  • Download resource
  • Push information
  • Retrieve resource's metadata
  • ...

[edit] Design Proposal

  • DATABASE: Postgres and Hibernate
  • SEARCH: Hibernate Search and Lucene
  • CRYPTOGRAPHY: Sun Java Crypto and Sun Java Security packages
  • SECURITY: Spring Security
  • WEB SERVICES: Axis2 or Restlet

[edit] About Axis2

[Axis2] is a web services engine (WSE) open source by Apache. It works like a normal web application under Tomcat, so it can works on the same workstation server (as is for fenix-birt). Axis2 is a very popular WSE, its documentation and tutorials are really well made and it's easy to find articles and forums about it. I (Guido) spent two days working on it, I find it really easy and clean. Spring integration is documented and (seems) easy to realise.

[edit] About Restlet

TBD, official link at: [1].

[edit] Design Decision

Personal tools