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