simulador para algoritmos distribuídos caio kinzel filho

Post on 07-Apr-2016

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Motivação

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

Solução

• Modelo + Templates + Algoritmos

• C#• DSL Tools• Visual Studio• T4

Modelo

Modelo

Modelo

Templates

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

Templates

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; }}

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;}

Algoritmos

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

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; }}

Algoritmos

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

Limitações

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

Possibilidades

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

top related