Skuteczna komunikacja w naszych aplikacjach, czy to w mikroserwisach, czy w monolicie, to kluczowa kwestia. A im większa skala i ilość danych, tym problem bardziej złożony. Podczas prezentacji wprowadzę Was w świat usług gRPC, omówimy na przykładzie sposób działania, znajdziemy jego mocne i słabe strony oraz porównamy gRPC do innych rozwiązań.
6. EFFECTIVE
COMMUNICATION
A two way information sharing process which
involves one party sending a message that is
easily understood by the receiving party.
12. WHAT'S RPC?
Remote Procedure Call (RPC) is a protocol that
one program can use to request a service from
a program located in another computer on a
network without having to understand the
network's details. A procedure call is also
sometimes known as a function call or a
subroutine call.
13. WHY RPC?
WRAPS NETWORKS INTERACTIONS
FLEXIBLE & MAINTAINABLE
EASY TO DEVELOP
DISTRIBUTED SYSTEMS
15. STUBS
A stub in distributed computing is a piece of
code that converts parameters passed
between client and server during a remote
procedure call (RPC).
25. LOW LATENCY, HIGHLY SCALABLE, DISTRIBUTED SYSTEMS.
DEVELOPING MOBILE CLIENTS WHICH ARE COMMUNICATING
TO A CLOUD SERVER.
DESIGNING A NEW PROTOCOL THAT NEEDS TO BE ACCURATE,
EFFICIENT AND LANGUAGE INDEPENDENT.
LAYERED DESIGN TO ENABLE EXTENSION EG.
AUTHENTICATION, LOAD BALANCING, LOGGING AND
MONITORING ETC.
27. WHAT ARE THE KEY DIFFERENCES TO
HTTP/1.X?
IS BINARY, INSTEAD OF TEXTUAL
IS FULLY MULTIPLEXED, INSTEAD OF ORDERED AND BLOCKING
CAN THEREFORE USE ONE CONNECTION FOR PARALLELISM
USES HEADER COMPRESSION TO REDUCE OVERHEAD
ALLOWS SERVERS TO “PUSH” RESPONSES PROACTIVELY INTO
CLIENT CACHES
37. PROS
IDIOMATIC CLIENT LIBRARIES IN 10 LANGUAGES
HIGHLY EFFICIENT ON WIRE AND WITH A SIMPLE SERVICE
DEFINITION FRAMEWORK
BI-DIRECTIONAL STREAMING WITH HTTP/2 BASED TRANSPORT
PLUGGABLE AUTH, TRACING, LOAD BALANCING AND HEALTH
CHECKING
46. import grpc from "grpc";
import twitter from "twitter";
import twitterService from "./../server/twitter.service";
import services from "./../grpc/twitter_grpc_pb";
const client = new twitter(credentials);
const service = new twitterService(client);
function main() {
const server = new grpc.Server();
server.addService(services.TwitterBoardService, service);
server.bind('0.0.0.0:50052', grpc.ServerCredentials.createInsecure())
server.start();
}
main();