gRPC in py si go

Categorii: Programare

03-May-2020 20:46 - 72 vizionari

Multa vreme am ignorat gRPC si mi-am bazat solutiile software pe XML-RPC si MessagePack RPC si chiar am corectat o mica eroare petru MessagePack RPC go.

Am ezitat sa aprofundez gRPC pentru ca mi s-a parut complicat sa compilez o definitie de protocol si apoi sa o import in aplicatie, dar vazand un fim pe Youtube mi-am schimbat parerea.

Protocolul gRPC este binar, este compact, contine numai datele transmise, nu si denumirea functiiler apelate, nu si numele argumentelor folosite.

In plus, definitia de protocol (fisierul cu descrierea dialogului client-server) poate fi compilata pentru mai multe limbaje de programare si poate fi usor importata in aplicatie, dar cel mai important este ca se pot face repede modificari ale protocolului (urmate de recompilare a definitiei) urmate de recompilarea aplicatiei. O noua aplicatie care vrea sa se conecteze la serverul gRPC, doar importa definitia generata si completeaza cu cod aditional de utilizare.

Daca am un client interesat in serviciile oferite de server, doar ii trimit definitia protocolului, iar restul se implementeaza usor. Desigur in protocol trebuie sa existe o autentificare, urmata de generarea unui jeton, o tabela de sesiuni cu data de expirare, iar urmatoarele apeluri la server vor fi considerate valide numai daca jetonul primit este cel generat de server, …

Astazi am publicat pe github un test gRPC pentru Python si golang, care creaza o legatura client-server, clientul trimite serverului un bloc de date de 2 mega,  serverul calculeaza codul crc32 al blocului si raspunde clientului cu valoarea gasita, clientul calculeaza si el codul crc32 si compara cu raspunsul serverului: https://github.com/icoman/benchmark-grpc-py-go

Din teste, este evident ca golang este foarte rapid in comparatie cu python, dar eu sunt interesat de integrarea serviciului gRPC in diferite limbaje de programare.

Cu orice serviciu de RPC, in general, pot conecta aplicatii scrise in diverse limbaje de programare.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric


Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.