Top Banner
Simulador para Algoritmos Distribuídos Caio Kinzel Filho
16

Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Apr 07, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Simulador para Algoritmos Distribuídos

Caio Kinzel Filho

Page 2: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

• as ideias, as funcionalidades, as limitações, as possíveis extensões, então tem que ser equilibrado

Page 3: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Motivação

• Exercicio: fazer um algoritmo distribuido• Debugar...• Testar em mais de uma topologia• Baseado em composição

Page 4: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Solução

• Modelo + Templates + Algoritmos

• C#• DSL Tools• Visual Studio• T4

Page 5: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Modelo

Page 6: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Modelo

Page 7: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Modelo

Page 8: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Templates

• T4• Criação do código C# para as topologias• Customizável

Page 9: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Templates

Page 10: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Algoritmospublic interface IAlgorithm{ Action<INode, IMessage> BeforeSend { get; } Action<INode, IMessage> AfterSend { get; } Action<INode> BeforeReceive { get; } Action<INode, IMessage> AfterReceive { get; } Action<IMessage> Handle { get; } Action<INode, IMessage> Send { get; } Action<INode> Start { get; }}

Page 11: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Algoritmospublic interface IChannel{ INode Source { get; } INode Sink { get; } Queue<IMessage> InputMessages { get; set; } Queue<IMessage> OutputMessages { get; set; } void Receive(); void Send<T>(T args) where T : IMessage; event EventHandler MessageSent;}

Page 12: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Algoritmos

public interface IMessage{ INode Sender { get; set; } INode Receiver { get; set; } INode Originated { get; set; } string Content { get; set; }}

Page 13: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Algoritmos

public interface INode{ int ID { get; set; } List<IChannel> SendsTo { get; set; } List<IChannel> ReceivesFrom { get; set; } IAlgorithm Algorithm { get; set; } Dictionary<string, object> NodeInfo { get; set; }}

Page 14: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Algoritmos

• MultiThread, MonoThread• Sincrono, Assincrono• Com falhas, Sem falhas

Page 15: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Limitações

• Desempenho MultiThread• Grandes topologias– Tempo de computação– Debugging

Page 16: Simulador para Algoritmos Distribuídos Caio Kinzel Filho.

Possibilidades

• Novos modelos de canais• Estratégias de injeção de falhas• Estratégias de Halting