GithubHelp home page GithubHelp logo

abhinavmishra14 / gytheio Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alfresco/gytheio

0.0 1.0 0.0 3.83 MB

Distributed content/file investigation and manipulation framework which leverages messaging queues to perform common low-level tasks.

License: GNU Lesser General Public License v3.0

Java 79.66% HTML 1.22% JavaScript 17.58% CSS 1.39% Shell 0.15%

gytheio's Introduction

Overview

Gytheio (pronounced yee-thee-oh) is a distributed content/file investigation and manipulation framework which leverages messaging queues to perform common low-level tasks like:

  • Content change handling
  • Transformations
  • Metadata extraction
  • Hash / checksum computation โ€ฆ

These tasks can be resource intensive so the focus of the project is on nodes that are as lightweight as possible allowing for an extremely scalable platform.

There are several conceptual pieces to the framework which can be mixed and matched in whatever manner best fits your needs, though several, common end-to-end implementations are available.

  • Client: Task messages are generated and sent which contain a reference to the source content and other options needed depending on the task such as a target reference, media type, hash algorithm, etc. That content reference could be anything the task nodes know how to deal with: a file on a shared volume, an S3 path, a CMIS document ID, etc.

  • Routing: A message routing system then directs the request to the appropriate queue for consumption by processing nodes.

  • Component: Listens for messages on a relevant queue and call on workers to perform the task on the source content reference, possibly sending a reply which can be consumed by the original requestor or elsewhere.

  • Task Nodes: Bootstraps one or more components.

Example architecture of a simple image transform node

Of course, you can produce messages by other means, plugin a different messaging system and routing, or even use node workers locally and forgo messaging altogether.

Project Layout

Commons

  • gytheio-commons

Serves as the minimal base for many content definitions, handling, and utility operations.

Content Handlers

  • gytheio-content-handlers/gytheio-content-handler-s3
  • gytheio-content-handlers/gytheio-content-handler-webdav

Handle the reading and writing of content references to their corresponding data store.

Messaging

  • gytheio-messaging/gytheio-messaging-commons
  • gytheio-messaging/gytheio-messaging-camel
  • gytheio-messaging/gytheio-messaging-amqp-direct
  • gytheio-messaging/gytheio-messaging-benchmark

Defines generic MessageConsumer and MessageProducer interfaces and Camel and AMQP implementations which process and send messages and contains a Jackson-based JSON marshaller.

A simple benchmark project is provided to measure the performance of brokers.

Transform

  • gytheio-transform/gytheio-transform-commons
  • gytheio-transform/gytheio-transform-messaging
  • gytheio-transform/gytheio-transform-worker-ffmpeg
  • gytheio-transform/gytheio-transform-worker-imagemagick
  • gytheio-transform/gytheio-transform-component

Contains the basic definitions of TransformationRequest and TransformationReply objects and the transformation option objects to be sent to content transformers.

The workers are responsible for converting transformation options objects into command-line or library parameters.

Hash

  • gytheio-hash/gytheio-hash-commons
  • gytheio-hash/gytheio-hash-messaging
  • gytheio-hash/gytheio-hash-worker-javase
  • gytheio-hash/gytheio-hash-component

Contains the basic definitions of HashRequest and HashReply objects to be sent to content hash nodes.

The worker is responsible for actually generating the hash.

Nodes

  • gytheio-node-simple

Bootstraps components above to form executable nodes.

ActiveMQ Broker

  • gytheio-messaging/messaging-broker-activemq

A convenience project which can start an ActiveMQ broker with a single Maven command.

Contributing

Thanks for your interest in contributing to this project!

The following is a set of guidelines for contributing to this module. Most of them will make the life of the reviewer easier and therefore decrease the time required for the patch be included in a future version.

Ways to contribute would be by submitting pull requests, reporting issues and creating suggestions. In the case of a defect please provide steps to reproduce the issue, as well as the expected result and the actual one.

You can report an issue in the ALF jira project of the Alfresco issue tracker. Read instructions for a good issue report.

If you'd like a hand at trying to implement features yourself, please validate your changes by running the tests. Also pull requests should contain tests whenever possible. Please follow the coding standards.

As a contributor you must sign a contribution agreement, but please keep in mind that the contribution process includes a recorded acceptance step.

Release Process

For a complete walk-through check out the build-and-release-101.MD under the docs folder.

gytheio's People

Contributors

rgauss avatar montgolfiere avatar dependabot[bot] avatar alfresco-build avatar dependabot-preview[bot] avatar tzclucian avatar dsibilio avatar cezarleahu avatar mstrankowski avatar gevagel avatar piecit87 avatar saraaspery avatar aonych avatar suneet-gupta avatar denisgabriela avatar damianujma avatar flv22 avatar kikouk avatar rpopa avatar tpage-alfresco avatar aftene avatar mikolajbrzezinski avatar sacreman avatar

Watchers

 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.