Git Product home page Git Product logo

ccf / spring-boot-graph-processing-example Goto Github PK

View Code? Open in Web Editor NEW

This project forked from smbale/spring-boot-graph-processing-example

0.0 2.0 0.0 252 KB

A sample application that demonstrates how to build a graph processing platform as microservices to create a ranking dashboard of influential Twitter profiles

Home Page: http://www.kennybastani.com/2016/01/spring-boot-graph-processing-microservices.html

License: Apache License 2.0

Shell 27.31% Batchfile 17.48% Java 38.41% CSS 3.79% JavaScript 6.19% HTML 6.83%

spring-boot-graph-processing-example's Introduction

Spring Boot Graph Processing Example

A sample application that demonstrates how to build a graph processing platform to create a ranking dashboard of influential Twitter profiles. A guided tutorial is provided with this sample project.

Architecture

The diagram below shows each component and microservice as a part of this sample application. The connections are communication points between each service, describing what protocol is used.

Twitter Crawler Architecture Diagram

The three Spring Boot applications that are colored in blue are stateless services. Stateless services will not attach a persistent backing service or need to worry about managing state locally. The Spring Boot application that is colored in green is the Twitter Crawler service. Components that are colored in green will typically have an attached backing service. These backing services are responsible for managing state locally, and will either persist state to disk or in-memory.

Spring Boot Services

  • Ranking Dashboard
  • Discovery Service
  • Configuration Service
  • Twitter Crawler

Backing Services

  • Neo4j (GraphDB)
  • Hadoop (HDFS)
  • Analysis Service (Apache Spark)
  • RabbitMQ (AMQP)
  • Twitter API (HTTP)

Graph Processing Platform

The diagram below details the graph processing platform that is used in this sample project. This diagram is based on Neo4j Mazerunner.

Graph Processing Platform

We can see from the diagram that new job requests are sent from Neo4j to RabbitMQ. Before Neo4j sends a message to RabbitMQ requesting a new job, it will export a graph replica to HDFS. The analysis service, which is the hexagon that is colored in purple, has an embedded standalone instance of Apache Spark, and will listen for messages from RabbitMQ containing new job requests. Each message that is received by the analysis service contains information about where the exported graph replica is stored on HDFS and what graph algorithm to execute.

After the analysis service has completed execution of a job, it sends a message to RabbitMQ that will be received by a listener on Neo4j. The message will contain a path on HDFS of the resulting graph that was saved by the analysis service. Neo4j will then import the results from HDFS back into the database without interrupting or impacting transactions that are being made by other database clients.

License

This library is licensed under the Apache License, Version 2.0.

spring-boot-graph-processing-example's People

Contributors

kbastani avatar pidster avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.