Code Monkey home page Code Monkey logo

sesdad's Introduction

Olá 👋🏾

I am Isabel Costa, a Software Engineer from Portugal 🇵🇹 working in London, UK.

I mentor at both Black CodHer bootcamp and As Raparigas do Codigo organization. Previously, I was as an admin at AnitaB.org Open Source, Google Summer of Code student in 2018 and admin/mentor in 2020 and Google Code-in mentor in 2019. I am also a GitHub Star alumni 🌟 !

✍🏾 Blog / 🎙️ Talks / LinkedIn / Twitter / 👐🏾 Volunteer work

sesdad's People

Contributors

franciscocaixeiro avatar isabelcosta avatar vicenterocha avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

sesdad's Issues

[PuppetMaster] Processes in freeze state should not receive commands

Processes should not receive orders from Puppet Master while they're in freeze/unfreeze state

Procedure:

  • Freeze state
    • Flags the service to freeze = true
    • for each remote method:
      if not in freeze state executes order
      else adds instruction and args to vector in order
  • Unfreeze state
    • Flags the service to freeze = false
    • calls remote invocation to execute all orders awating in vector in order

[Ordering guarantees] FIFO order

All events published with FIFO order guarantee by a publisher P are delivered in the same order according to which P published them.

  • option available for configuration file

[Puppet Master] Parser of single commands

Do a parser method of single input commands given to the Puppet Master GUI.

  • Subscriber processname Subscribe topicname
  • Subscriber processname Unsubscribe topicname
  • Publisher processname Publish numberofevents Ontopic topicname Interval x ms
  • Status
  • Crash processname
  • Freeze processname
  • Unfreeze processname

Fault-Tolerant Architecture

Problem

  • The basic architecture described above has the disadvantage that, if a broker fails, the entire system stops operating, because events can no longer be routed from publishers to providers.
    The fault-tolerant variant of the architecture aims at overcoming this limitations.

Objective

  • In this version of the system, 3 brokers are assigned to each site. This should ensure that a site remains operational in face of the failure of a single broker at each site. Note 3 that, in the fault-tolerant version, sites are still organised in a tree. However, a broker at a site can now connect to one or more of the 3 servers that may be operational in its parent site. Similarly, a broker may connect to more than one broker at each of its children sites.
  • Finally, publishers and subscribers may connect to any of the brokers in their site. In case of failures, the system should reconfigure automatically, without disrupting the reliable stream of events. For instance, if the broker to which a publisher is connected crashes, the publisher should automatically reconnect to another broker at its site and subscribers should receive, nevertheless, all the events in the order by which they have been sent.
  • The students are free to use the replication technique they feel more appropriate to solve the problem at hand. Also, the students are encouraged to use techniques that may leverage from the availability of different brokers to perform some load balancing whenever possible.

[Ordering guarantees] Total order

All events published with total order guarantees are delivered in the same order at all matching subscribers. More formally, if two subscribers s1, s2 deliver events e1, e2, s1 and s2 deliver e1 and e2 in the same order. This ordering property is established on all events published with total order guarantee, independently of the identity of the producer and of the topic of the event.

Puppet Master

Tasks:

  • Create PuppetMaster Console/GUI #1
  • LoggingLevel #6
  • Parse single commands #11
  • Parse a script file #12
  • Communication among master and slaves #13

Final Report

Explanation of algorithms

  • Event Routing
    • Flooding
    • Filtering
  • Ordering
    • Total Order
    • FIFO

Fault-Tolerant Architecture
Distributed Experience with laptops

[Puppet Master] Logging Level

Format used in configuration file:

LoggingLevel full | light

  • default level: light;
  • full: all events described above should be included in the log;
  • light: the forwarding of events by the brokers need not be included in the log
    and therefore the brokers need not notify the PuppetMaster of those events;
  • Same as full mode without the BroEvents
Events Full Mode Light Mode Observation
Commands x x
PubEvent x x
BroEvent x light mode: brokers don't need to notify the PuppetMaster
SubEvent x x

Related to story: #2 PuppetMaster

[Routing Policy] Flooding

  • In this approach events are broadcast across the tree.
  • This is the default routing policy.

A resolver

  • Brokers não conseguem adicionar brokers, esta em ciclo infinito
  • Brokers não estão a verificar se o subscriber esta subscrito, apenas reencaminham
  • PuppetMaster ainda não é o responsável por criar os processos
  • Processos ainda não têm ID
  • ...

Routing Policy

Format in configuration file:

RoutingPolicy flooding | filter

  • Flooding #3 - events are broadcast across the tree.
  • Filter #4 - events are only forwarded only along paths leading
    to interested subscribers

[Routing Policy] Filter

  • Events are only forwarded only along paths leading
    to interested subscribers. To this end, brokers maintain information regarding which
    events should be forwarded to their neighbours.

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.