Skip to main content

Comment system Architecture



Sockets
A socket is one endpoint of a two-way communication link between two programs running on the network. It allows real time, bidirectional communication between the web client and server. This allows for logged in users to see comments in real time without refreshing the page in a similar way as in Google docs.

Architecture 
The GraphSpace notification system (pull request) sends users notifications when certain operations (such as graph deletion or graph creation) have been completed. In practice, many users (such as those in a large group) may receive these notifications, which involves creating database entries for each user. If we attempt to do all of these operations from the perspective of the user performing them. Thus, we elected to use Kafka (a messaging queue) to enable an asynchronous notification system. In the notification system architecture the notification has to be created only after a successful database operation of creating/deleting graph, creating/deleting group etc. In such cases the GraphSpace server then added messages to a Kafka queue that would then be consumed one-by-one on another server thread, which would add notifications to the database. The drawback of doing this is that if the Kafka queue goes down, notifications get dropped. But here in the comment system flow we only have to create a single database entry for a comment (rather than on per user), and we can directly send the comment via web-socket to the client once the comment is created, so we won't be using Kafka.
Architecture Flow Diagram

Comments

Popular posts from this blog

Project Introduction

Comment System for GraphSpace Organization : National Resource for Network Biology (NRNB) GraphSpace is an user-friendly web-based platform that collaborating research groups can utilize for storage, interaction, and network sharing. A GraphSpace user can import graphs created in Cytoscape , upload them through a REST API, interact with them by customizing and saving layouts, share them within and between groups of collaborators, search for different graphs, and organize them using tags. These functions are enabled through GraphSpace’s comprehensive REST API, which allows users to communicate. Several research groups and people using GraphSpace would like not only to visualize the graph but also discuss about different nodes, edges and subgraphs present in the graph. Effective discussion about the graphs can be promoted with the help of comments. The aim of this project is to implement a real-time system that will allow users to comment on graphs and discuss ideas with each...