Sistemas Distribuídos

3° Trabalho 

 

Erik Tronkos

Pedro Boueke

UFRJ - 2016.05.19

  • 4 Cores físicos
  • 4 Virtuais

UFRJ - 2016.05.19

Specs

 Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz

  • 8GB RAM DDR3

GO

  • Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

GO

  • Multithreading fácil

  • func HelloGo() {

    • fmt.Println("Hello Go!") }

  • func main(){

    • for i := 0; i < 5; i++ {

      • go HelloGo()

            }

  •  }

  •  

Hello Go!

Hello Go!

Hello Go!

Hello Go!

Hello Go!

GO

  • Proto3

service Operador {
 
  rpc rpcLog (Numbers) returns (Result) {}


  rpc rpcSqrt (Numbers) returns (Result) {}


  rpc rpcPower (NumbersPower) returns (Result) {}
}


message Numbers {
  bytes array = 1;
  int32 size = 2;
}

message NumbersPower {
  bytes array = 1;
  int32 size = 2;
  int32 power = 3;
}

message Result {
  bytes array = 1;
}

gRPC

Funções

func (s *OperadorServer) RpcLog(ctx context.Context, in *pb.Numbers) (*pb.Result, error)

c.RpcLog(context.Background(), &pb.Numbers{Array: buffer.Bytes(), Size: len(slice)}

Cliente

Servidor

Proto3

  • Linguagem de programação para a criação de um protocolo

 service Operador {
 
  rpc
rpcLog (Numbers) returns (Result) {}


  rpc rpcSqrt (Numbers) returns (Result) {}


  rpc rpcPower (NumbersPower) returns (Result) {}
}


message Numbers {
  bytes array = 1;
  int32 size = 2;
}

message NumbersPower {
  bytes array = 1;
  int32 size = 2;
  int32 power = 3;
}

message Result {
  bytes array = 1;
}

gRPC-GO Server

gRPC-GO Client

JS

  • Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

JS

  • const cluster = require('cluster');
    
    if (cluster.isMaster) {
      console.log('I am master');
      cluster.fork();
    
    } else if (cluster.isWorker) {
      console.log(`I am worker #${cluster.worker.id}`);
    }
  • Cluster

Exclusão Mútua

Mutex

Base da exclusão mútua

var mutex = locks.createMutex();

Comunicação

Comunicação por mensagens interprocesso

Master

Worker

grant

request

release

Trabalho 3 SD - UFRJ

By Pedro Boueke

Trabalho 3 SD - UFRJ

  • 356