Teach your (micro)services speak Protocol Buffers with grpc.
|
|
- Belinda Bryant
- 5 years ago
- Views:
Transcription
1 Teach your (micro)services speak Protocol Buffers with grpc. Mihai
2 What s inside?
3 What s inside? Message serialization and deserialization
4 What s inside? Message serialization and deserialization Message transport
5 What s inside? Message serialization and deserialization Message transport Services diversity
6 How it works in real life B A C D
7 How it works in real life B A C D
8 In a nutshell Client Service
9 In a nutshell Client Service Over HTTP Serialized to JSON
10 In a nutshell Client Service Over HTTP Proprietary protocol Serialized to JSON Remote objects
11 JSON advantages
12 Human readable JSON advantages
13 JSON advantages Human readable Schema-less
14 JSON advantages Human readable Schema-less Language agnostic
15 JSON disadvantages
16 JSON disadvantages Human readable
17 JSON disadvantages Human readable Isn t it a benefit?
18 JSON disadvantages Human readable Isn t it a benefit? Schema-less
19 JSON disadvantages Human readable Isn t it a benefit? Schema-less Isn t it a benefit as well?
20 JSON disadvantages Human readable Isn t it a benefit? Schema-less Isn t it a benefit as well? Type-less
21 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler.
22 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler.
23 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler. JSON
24 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
25 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
26 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
27 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
28 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
29 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
30 Protocol Buffers example message Person { reserved 1, 2, 5; reserved "name"; int32 id = 3; repeated string aliases = 4; }
31 Why protocol buffers Binary format
32 Why protocol buffers Enforcing the schema
33 Why protocol buffers Language neutral
34 Why protocol buffers Out-of the box backward compatibility
35 Why protocol buffers Out-of the box backward compatibility
36 Why protocol buffers Out-of the box backward compatibility if version == 3:... elif version > 4: if (version == 5):......
37 Why protocol buffers Generally faster
38 How to message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }
39 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; }
40 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } Person john = Person.newBuilder().setId(1234).setName("John Doe").addAliases("ionel").build();
41 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } Person john = Person.newBuilder().setId(1234) Object creation.setname("john Doe").addAliases("ionel").build();
42 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } john = Person() Object creation john.id = 1234 john.name = 'John Doe' john.aliases.add( ionel )
43 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } john = Person(id=1234, Object creation name='john Doe', aliases=['ionel'])
44 Communication (REST-ish) 1. URI: 2. Make an HTTP GET Request 3. Receive a plaintext JSON 4. Parse it 5.
45 Request GET /person/42 HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: api.example.com...
46 Response headers HTTP/ OK Access-Control-Allow-Credentials: true Cache-Control: public, max-age=14400 Content-Encoding: gzip Content-Type: application/json; charset=utf-8...
47 Response body { "name": "John Doe", "id": 42, "aliases": [ "ionel", "honzík" ] }
48 HTTP2
49 Distributed objects
50 Distributed objects First Law of Distributed Object Design: don't distribute your objects. Martin Fowler
51 The 8 Fallacies of distributed computing 1. The network is reliable. 5. Topology doesn't change. 2. Latency is zero. 6. There is one administrator. 3. Bandwidth is infinite. 7. Transport cost is zero. 4. The network is secure. 8. The network is homogeneous.
52 Keep in mind Anything that can go wrong will go wrong. Murphy s Law
53 So, what s next?
54 Services not Objects, Messages not References
55 Coverage & Simplicity
56 How does it work
57 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
58 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
59 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
60 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
61 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
62 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
63 Service definition message GetRoutesRequest { Location origin = 1; Location destination = 2; } message GetRoutesResponse { } repeated Route routes = 1;
64 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
65 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
66 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
67 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
68 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
69 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
70 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto
71 Generated code $ tree. route_planner_pb2.py route_planner_pb2_grpc.py 0 directories, 2 files
72 Implementing the service
73 Implementing the service
74 Service code class Servicer(route_planner_pb2_grpc.RoutePlannerServicer): """Service implementation.""" def GetRoutes(self, request, context): return process_magically_the_request(request)
75 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()
76 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()
77 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()
78 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()
79 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()
80 Implementing the client
81 Implementing the client
82 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
83 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
84 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
85 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
86 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
87 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)
88 Client code (async) response_future = stub.getroutes.future(request) response_future.result()
89 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO
90 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO
91 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO
92 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO
93 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO
94 grpc_cli Rpc succeeded with OK status Response: routes: <...> routes: <...> routes: <...> routes: <...>
95 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
96 Service definition - response streaming service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (stream GetRoutesResponse) {} }
97 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }
98 Service definition - request streaming service RoutePlanner { rpc GetRoutes (stream GetRoutesRequest) returns (GetRoutesResponse) {} }
99 Request streaming? Response streaming?
100 Request streaming? Response streaming?
101 Service definition - bidirectional streaming service RoutePlanner { rpc GetRoutes (stream GetRoutesRequest) returns (stream GetRoutesResponse) {} }
102 Keep in mind Things will go wrong
103 Timeouts? ms A D? ms? ms Client Service B? ms? ms E? ms C
104 Uniform timeout Client Service A B
105 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout Client Service A B
106 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms Client Service A B
107 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms Client Service A B
108 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms Client Service A B
109 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms Client Service A 420 ms B
110 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout X 20 ms 30 ms Client Service A 40 ms 420 ms B
111 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms X X Client Service A 20 ms 420 ms B
112 Fine-tuned timeout Client Service A B
113 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout Client Service A B
114 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms Client Service A B
115 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms Client Service A B
116 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms 15 ms Client Service A B
117 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms 15 ms Client Service A 40 ms B
118 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms X Client Service A 15 ms 40 ms B
119 Adaptive timeout Client Service A B
120 Adaptive timeout 200 ms timeout Client Service A B
121 Adaptive timeout 200 ms timeout 20 ms Client Service A B
122 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 20 ms Client Service A B
123 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 20 ms 30 ms Client Service A B
124 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms Client Service A B
125 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A B
126 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 40 ms B
127 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 20 ms 40 ms B
128 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B
129 grpc: Deadlines
130 Timeout is relative grpc: Deadlines
131 grpc: Deadlines Timeout is relative Deadline is absolute
132 Deadline propagation Start TS: Timeout: 200 Deadline: Client Service A B
133 Deadline propagation Start TS: Timeout: 200 Deadline: TS: Client Service A B
134 Deadline propagation Start TS: Timeout: 200 Deadline: TS: ms Client Service A B
135 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms Client Service A B
136 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms 30 ms Client Service A B
137 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 30 ms Client Service A B
138 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 30 ms 15 ms Client Service A B
139 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A B
140 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms B
141 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms B TS:
142 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 20 ms 40 ms B TS:
143 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 20 ms 40 ms B TS: TS:
144 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B TS: TS:
145 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B TS: TS: TS:
146 Deadline propagation Start TS: Timeout: 200 Deadline: Client Service A B
147 Deadline propagation Start TS: Timeout: 200 Deadline: TS: Client Service A B
148 Deadline propagation Start TS: Timeout: 200 Deadline: TS: ms Client Service A B
149 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms Client Service A B
150 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms 100 ms Client Service A B
151 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms Client Service A B
152 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B
153 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B DEADLINE_EXCEEDED
154 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B DEADLINE_EXCEEDED DEADLINE_EXCEEDED
155 Cancellation
156 Cancellation Can be initiated by both client/server
157 Cancellation Can be initiated by both client/server Immediately terminates the RPC
158 Cancellation Can be initiated by both client/server Immediately terminates the RPC It is not a roll-back
159 Cancellation Can be initiated by both client/server Immediately terminates the RPC It is not a roll-back Automatically cascaded
160 Backward compatibility
161 grpc language support C++ C# Python JS (Node) Java Android Java Go Objective-C Ruby PHP
162 grpc Platform support Linux macos Windows Android ios
163 Success stories
164 Success stories
165 Benefits
166 Benefits Focus on the API design & contract
167 Benefits Focus on the API design & contract HTTP2 is awesome
168 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming
169 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language
170 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language Service-to-Service and Service-to-Mobile friendly
171 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language Service-to-Service and Service-to-Mobile friendly Production ready
172 Fin. Thank you.
{ REST } vs. Battle of API s
{ REST } vs Battle of API s Software Engineer at Sensedia Who am I? MBA in java projects Java and microservice enthusiastic Microservices Agenda REST grpc Demo Questions Moving to Microservices Monolith
More informationSemesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Remote Procedure Calls
Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Wintersemester 16/17 Remote Procedure Calls Patrick Schäfer patrick.schaefer@hu-berlin.de Marc Bux buxmarcn@informatik.hu-berlin.de
More informationCSCI-1680 RPC and Data Representation. Rodrigo Fonseca
CSCI-1680 RPC and Data Representation Rodrigo Fonseca Today Defining Protocols RPC IDL Problem Two programs want to communicate: must define the protocol We have seen many of these, across all layers E.g.,
More informationProtocol Buffers, grpc
Protocol Buffers, grpc Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration Dr. Balázs Simon BME, IIT Outline Remote communication application level vs. transport level protocols
More informationgrpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer
grpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer About me Software Engineer at Google (since 2013) Working
More informationREST Easy with Infrared360
REST Easy with Infrared360 A discussion on HTTP-based RESTful Web Services and how to use them in Infrared360 What is REST? REST stands for Representational State Transfer, which is an architectural style
More informationCSCI-1680 RPC and Data Representation John Jannotti
CSCI-1680 RPC and Data Representation John Jannotti Original Slides from Rodrigo Fonseca Today Defining Protocols RPC IDL Problem Two programs want to communicate: must define the protocol We have seen
More informationUsing OAuth 2.0 to Access ionbiz APIs
Using OAuth 2.0 to Access ionbiz APIs ionbiz APIs use the OAuth 2.0 protocol for authentication and authorization. ionbiz supports common OAuth 2.0 scenarios such as those for web server, installed, and
More informationGoogles Approach for Distributed Systems. Slides partially based upon Majd F. Sakr, Vinay Kolar, Mohammad Hammoud and Google PrototBuf Tutorial
Protocol Buffers Googles Approach for Distributed Systems Slides partially based upon Majd F. Sakr, Vinay Kolar, Mohammad Hammoud and Google PrototBuf Tutorial https://developers.google.com/protocol-buffers/docs/tutorials
More informationCross-Platform Data Models and API Using grpc
Cross-Platform Data Models and API Using grpc Sebastian Hagedorn, Felix Lamouroux Outline 1. Motivation & Goals 2. Choosing the Right Cross-Platform Technology 3. Introduction to Protocol Buffers and grpc
More informationApache Thrift Introduction & Tutorial
Apache Thrift Introduction & Tutorial Marlon Pierce, Suresh Marru Q & A TIOBE Index Programming Language polyglotism Modern distributed applications are rarely composed of modules written in a single language.
More informationDistributed Systems. 03r. Python Web Services Programming Tutorial. Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017
Distributed Systems 03r. Python Web Services Programming Tutorial Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017 1 From Web Browsing to Web Services Web browser: Dominant model for user interaction
More informationCS October 2017
From Web Browsing to Web Services Web browser: Dominant model for user interaction on the Internet Distributed Systems 03r. Python Web Services Programming Tutorial Not good for programmatic access to
More informationREST as a better web service paradigm
REST as a better web service paradigm Norman Gray VO-TECH / Uni. Leicester / Uni. Glasgow IVOA Interop, Beijing, 2007 May 15 overview Plan: First, a bit of SOAP-bashing, just to get warmed up. What is
More informationProjects and Apache Thrift. August 30 th 2018 Suresh Marru, Marlon Pierce
Projects and Apache Thrift August 30 th 2018 Suresh Marru, Marlon Pierce smarru@iu.edu, marpierc@iu.edu Todays Outline Final Project Proposals Apache Thrift Overview Open Discussion Project Life Cycle
More informationSERVICE API SPECIALIST Certification. Service API Specialist
SERVICE API SPECIALIST Certification Service API The new generation SOACP program from Arcitura is dedicated to excellence in the fields of contemporary service-oriented architecture, microservices, service
More informationWriting REST APIs with OpenAPI and Swagger Ada
Writing REST APIs with OpenAPI and Swagger Ada Stéphane Carrez FOSDEM 2018 OpenAPI and Swagger Ada Introduction to OpenAPI and Swagger Writing a REST Ada client Writing a REST Ada server Handling security
More informationCS 417 9/18/17. Paul Krzyzanowski 1. Socket-based communication. Distributed Systems 03. Remote Procedure Calls. Sample SMTP Interaction
Socket-based communication Distributed Systems 03. Remote Procedure Calls Socket API: all we get from the to access the network Socket = distinct end-to-end communication channels Read/write model Line-oriented,
More informationDistributed Systems. 03. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Fall 2017
Distributed Systems 03. Remote Procedure Calls Paul Krzyzanowski Rutgers University Fall 2017 1 Socket-based communication Socket API: all we get from the OS to access the network Socket = distinct end-to-end
More informationComposer Help. Web Request Common Block
Composer Help Web Request Common Block 7/4/2018 Web Request Common Block Contents 1 Web Request Common Block 1.1 Name Property 1.2 Block Notes Property 1.3 Exceptions Property 1.4 Request Method Property
More informationHTTP Reading: Section and COS 461: Computer Networks Spring 2013
HTTP Reading: Section 9.1.2 and 9.4.3 COS 461: Computer Networks Spring 2013 1 Recap: Client-Server Communication Client sometimes on Initiates a request to the server when interested E.g., Web browser
More informationElliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens
Elliotte Rusty Harold elharo@ibiblio.org August 2018 From XML to Flat Buffers: Markup in the Twenty-teens Warning! The Contenders XML JSON YAML EXI Protobufs Flat Protobufs XML JSON YAML EXI Protobuf Flat
More informationOther architectures are externally built or expanded
RESTful interfaces http://rest.elkstein.org/ (but not Section 11) http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/ and for a laugh (or cry) : http://www.looah.com/source/view/2284
More informationCSCI-1680 RPC and Data Representation. Rodrigo Fonseca
CSCI-1680 RPC and Data Representation Rodrigo Fonseca Administrivia TCP: talk to the TAs if you still have questions! ursday: HW3 out Final Project (out 4/21) Implement a WebSockets server an efficient
More informationDistributed Systems 8. Remote Procedure Calls
Distributed Systems 8. Remote Procedure Calls Paul Krzyzanowski pxk@cs.rutgers.edu 10/1/2012 1 Problems with the sockets API The sockets interface forces a read/write mechanism Programming is often easier
More informationDevelop Mobile Front Ends Using Mobile Application Framework A - 2
Develop Mobile Front Ends Using Mobile Application Framework A - 2 Develop Mobile Front Ends Using Mobile Application Framework A - 3 Develop Mobile Front Ends Using Mobile Application Framework A - 4
More informationThe Life of an Open-Source Project
The Life of an Open-Source Project David Garcia Quintas Xoogler, grpc C Core Team dgquintas@gmail.com How I Got Here Agenda Why develop [a new project] in open-source. What is being developed: grpc. How
More informationUnderstanding RESTful APIs and documenting them with Swagger. Presented by: Tanya Perelmuter Date: 06/18/2018
Understanding RESTful APIs and documenting them with Swagger Presented by: Tanya Perelmuter Date: 06/18/2018 1 Part 1 Understanding RESTful APIs API types and definitions REST architecture and RESTful
More informationREST in a Nutshell: A Mini Guide for Python Developers
REST in a Nutshell: A Mini Guide for Python Developers REST is essentially a set of useful conventions for structuring a web API. By "web API", I mean an API that you interact with over HTTP - making requests
More informationCisco IOS XR Programmability for Cloud-Scale Networking
Cisco IOS XR Programmability for Cloud-Scale Networking LABRST-2332 Santiago Álvarez, Distinguished Technical Marketing Engineer @111pontes Level of Expertise With Network Programmability 1. Can t spell
More informationA short introduction to Web Services
1 di 5 17/05/2006 15.40 A short introduction to Web Services Prev Chapter Key Concepts Next A short introduction to Web Services Since Web Services are the basis for Grid Services, understanding the Web
More informationEffective Testing with API Simulation and (Micro)Service Virtualisation
Effective Testing with API Simulation and (Micro)Service Virtualisation Andrew Morgan Daniel Bryant @Spectolabs 1 tl;dr Testing distributed systems is hard Many of us building distributed systems (microservices)
More informationOperating Systems. 18. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Spring /20/ Paul Krzyzanowski
Operating Systems 18. Remote Procedure Calls Paul Krzyzanowski Rutgers University Spring 2015 4/20/2015 2014-2015 Paul Krzyzanowski 1 Remote Procedure Calls 2 Problems with the sockets API The sockets
More informationThe Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh
The Future of the Realtime Web BETTER APIS WITH GRAPHQL Josh Price @joshprice STEPPING STONES TO FP Language (Elixir) Strongly-Typed APIs (GraphQL) GRAPHQL WAS HERE? http://whiteafrican.com/2008/05/12/crossing-the-mapping-chasm/
More informationWeb Architecture and Technologies
Web Architecture and Technologies Ambient intelligence Fulvio Corno Politecnico di Torino, 2015/2016 Goal Understanding Web technologies Adopted for User Interfaces Adopted for Distributed Application
More informationModel-Driven Telemetry. Shelly Cadora Principal Engineer, Technical Marketing
Model-Driven Telemetry Shelly Cadora Principal Engineer, Technical Marketing We Need More Data Use Cases Network Health Troubleshooting / Remediation SLAs, Performance Tuning Capacity Planning Product
More informationReST 2000 Roy Fielding W3C
Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST
More informationREST Web Services Objektumorientált szoftvertervezés Object-oriented software design
REST Web Services Objektumorientált szoftvertervezés Object-oriented software design Dr. Balázs Simon BME, IIT Outline HTTP REST REST principles Criticism of REST CRUD operations with REST RPC operations
More informationCopyright 2014 Blue Net Corporation. All rights reserved
a) Abstract: REST is a framework built on the principle of today's World Wide Web. Yes it uses the principles of WWW in way it is a challenge to lay down a new architecture that is already widely deployed
More informationBackend Development. SWE 432, Fall Web Application Development
Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy
More informationHTTP, REST Web Services
HTTP, REST Web Services Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2018 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) HTTP, REST Web Services Winter Term 2018 1 / 36 Contents 1 HTTP 2 RESTful
More informationBlack Box DCX3000 / DCX1000 Using the API
Black Box DCX3000 / DCX1000 Using the API updated 2/22/2017 This document will give you a brief overview of how to access the DCX3000 / DCX1000 API and how you can interact with it using an online tool.
More informationExternal data representation
External data representation https://developers.google.com/protocol-buffers/ https://github.com/protobuf-c/protobuf-c http://www.drdobbs.com/webdevelopment/after-xml-json-thenwhat/240151851 http://www.digip.org/jansson/
More informationPiqi-RPC. Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP. Friday, March 25, 2011
Piqi-RPC Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP 1 Anton Lavrik http://piqi.org http://www.alertlogic.com 2 Overview Call Erlang functions using HTTP POST : Server
More informationMicroservices. SWE 432, Fall 2017 Design and Implementation of Software for the Web
Micros SWE 432, Fall 2017 Design and Implementation of Software for the Web Today How is a being a micro different than simply being ful? What are the advantages of a micro backend architecture over a
More informationTowards a more RESTful world. Anurup Joseph Elegan Consulting
Towards a more RESTful world Anurup Joseph Elegan Consulting About Anurup coding professionally since 1994 working with Java since 1996 different industries/sectors/geographies loves to explore enjoys
More informationDistance vector and RIP
DD2490 p4 2008 Distance vector and RIP Olof Hagsand KTHNOC/NADA Literature RIP lab RFC 245: RIPv2. Sections 1 2 contains some introduction that can be useful to understand the context in which RIP is specified..1.4
More informationgrpc Network Management Interface
grpc Network Management Interface draft-openconfig-rtgwg-gnmi-spec-00 Rob Shakir, Anees Shaikh, Paul Borman, Marcus Hines, Carl Lebsack, Chris Morrow (Google) IETF 98 RTGWG What is gnmi? specification
More informationA Brief History of Distributed Programming: RPC. YOW Brisbane 2016
A Brief History of Distributed Programming: RPC YOW Brisbane 2016 Christopher Meiklejohn Université catholique de Louvain @cmeik christophermeiklejohn.com Caitie McCaffrey Distributed Systems Engineer
More informationGoogle Protocol Buffers for Embedded IoT
Google Protocol Buffers for Embedded IoT Integration in a medical device project Quick look 1: Overview What is it and why is useful Peers and alternatives Wire format and language syntax Libraries for
More informationRESTful Services. Distributed Enabling Platform
RESTful Services 1 https://dev.twitter.com/docs/api 2 http://developer.linkedin.com/apis 3 http://docs.aws.amazon.com/amazons3/latest/api/apirest.html 4 Web Architectural Components 1. Identification:
More informationLecture 04 Introduction: IoT Networking - Part I
Introduction to Industry 4.0 and Industrial Internet of Things Prof. Sudip Misra Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 04 Introduction: IoT Networking
More informationPowerBuilder User Regional Seminar Barcelona, Spain. Hotel NH Sants Barcelona DISCLAIMER
RECAP SEMINAR PowerBuilder User Regional Seminar Barcelona, Spain Hotel NH Sants Barcelona /JSON vs /XML Marco MEONI 27-28 November 2018 2018 Appeon Limited and its subsidiaries. All rights reserved. DISCLAIMER
More informationRESTFUL WEB SERVICES - INTERVIEW QUESTIONS
RESTFUL WEB SERVICES - INTERVIEW QUESTIONS http://www.tutorialspoint.com/restful/restful_interview_questions.htm Copyright tutorialspoint.com Dear readers, these RESTful Web services Interview Questions
More informationCoding Intro to APIs and REST
DEVNET-3607 Coding 1001 - Intro to APIs and REST Matthew DeNapoli DevNet Developer Evangelist Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find this session
More informationToday s Agenda. Today s Agenda 9/8/17. Networking and Messaging
CS 686: Special Topics in Big Data Networking and Messaging Lecture 7 Today s Agenda Project 1 Updates Networking topics in Big Data Message formats and serialization techniques CS 686: Big Data 2 Today
More informationBEAAquaLogic. Service Bus. Interoperability With EJB Transport
BEAAquaLogic Service Bus Interoperability With EJB Transport Version 3.0 Revised: February 2008 Contents EJB Transport Introduction...........................................................1-1 Invoking
More informationDistributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016
Distributed Systems 2015 Exam 1 Review Paul Krzyzanowski Rutgers University Fall 2016 1 Question 1 Why did the use of reference counting for remote objects prove to be impractical? Explain. It s not fault
More informationInternet Connectivity with
Internet Connectivity with Introduction The purpose of this workshop is to help you g et acquainted with the basics of internet connectivity by leveraging ARM mbed tools. If you are not already familiar
More informationJSON is a light-weight alternative to XML for data-interchange JSON = JavaScript Object Notation
JSON The Fat-Free Alternative to XML { Lecture : 27, Course : CSC375, Days : TTh", Instructor : Haidar Harmanani } Why JSON? JSON is a light-weight alternative to XML for data-interchange JSON = JavaScript
More informationShackbus. interconnecting your Shack. Tobias
Shackbus interconnecting your Shack Tobias Wellnitz @DH1TW Today we have: - Proprietary Protocols - Legacy Hardware - No / very limited interoperability What we want: Interconnected devices in our Shacks!
More informationHoverfly Documentation
Hoverfly Documentation Release v0.13.0 SpectoLabs Jul 13, 2017 Contents 1 Source 3 2 Contents 5 2.1 Introduction............................................... 5 2.2 Key Concepts...............................................
More informationTechnologies for the future of Network Insight and Automation
Technologies for the future of Network Insight and Automation Richard Wade (ricwade@cisco.com) Technical Leader, Asia-Pacific Infrastructure Programmability This Session s Context Service Creation Service
More informationApica ZebraTester. Advanced Load Testing Tool and Cloud Platform
Whether Fortune 100 or the next big startup, Apica s bestin-class load testing and test automation platform helps companies ensure their web and mobile services runs with optimal performance. is an enterprise-level
More informationWeb Services Week 10
Web Services Week 10 Emrullah SONUÇ Department of Computer Engineering Karabuk University Fall 2017 1 Recap BPEL Process in Netbeans RESTful Web Services Introduction to Rest Api 2 Contents RESTful Web
More informationPython & Web Mining. Lecture Old Dominion University. Department of Computer Science CS 495 Fall 2012
Python & Web Mining Lecture 6 10-10-12 Old Dominion University Department of Computer Science CS 495 Fall 2012 Hany SalahEldeen Khalil hany@cs.odu.edu Scenario So what did Professor X do when he wanted
More informationC22: Browser & Web Server Communication
CISC 3120 C22: Browser & Web Server Communication Hui Chen Department of Computer & Information Science CUNY Brooklyn College 11/01/2017 CUNY Brooklyn College 1 Web Application Architecture Client apps
More informationAdministering Jive Mobile Apps for ios and Android
Administering Jive Mobile Apps for ios and Android TOC 2 Contents Administering Jive Mobile Apps...3 Configuring Jive for Android and ios...3 Custom App Wrapping for ios...3 Authentication with Mobile
More informationJSON-RPC NETWORK PROTOCOL ANALYSIS USING WIRESHARK
JSON-RPC NETWORK PROTOCOL ANALYSIS USING WIRESHARK Rajdeep S. Manjre Abstract JSON-RPC (JavaScript Object Notation Remote Procedure Call) is a protocol which is used for communication through internet.
More informationRESTful API Design APIs your consumers will love
RESTful API Design APIs your consumers will love Matthias Biehl RESTful API Design Copyright 2016 by Matthias Biehl All rights reserved, including the right to reproduce this book or portions thereof in
More informationNotes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title
Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion
More informationServices Web Nabil Abdennadher
Services Web Nabil Abdennadher nabil.abdennadher@hesge.ch 1 Plan What is Web Services? SOAP/WSDL REST http://www.slideshare.net/ecosio/introduction-to-soapwsdl-and-restfulweb-services/14 http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/
More informationBasic Concepts of the Energy Lab 2.0 Co-Simulation Platform
Basic Concepts of the Energy Lab 2.0 Co-Simulation Platform Jianlei Liu KIT Institute for Applied Computer Science (Prof. Dr. Veit Hagenmeyer) KIT University of the State of Baden-Wuerttemberg and National
More informationExtraHop Rest API Guide
ExtraHop Rest API Guide Version 5.0 Introduction to ExtraHop REST API The ExtraHop REST application programming interface (API) enables you to automate administration and configuration tasks on your ExtraHop
More informationGuzzle: Extraordinary HTTP Client
Guzzle: Extraordinary HTTP Client Rob Allen @akrabat ~ akrabat.com ~ September 2016 Why HTTP clients in PHP? Talking to web services Authentication with 3rd parties Social media interaction Remote APIs
More informationCopyright 2012, Oracle and/or its affiliates. All rights reserved.
1 JAX-RS-ME Michael Lagally Principal Member of Technical Staff, Oracle 2 CON4244 JAX-RS-ME JAX-RS-ME: A new API for RESTful web clients on JavaME This session presents the JAX-RS-ME API that was developed
More informationFoundations of Python
Foundations of Python Network Programming The comprehensive guide to building network applications with Python Second Edition Brandon Rhodes John Goerzen Apress Contents Contents at a Glance About the
More informationIntroduction and Overview Socket Programming Lower-level stuff Higher-level interfaces Security. Network Programming. Samuli Sorvakko/Nixu Oy
Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 5, 2009 Agenda 1 Introduction and Overview 2 Socket Programming 3
More informationLOG8430: Architecture logicielle et conception avancée
LOG8430: Architecture logicielle et conception avancée Microservices, REST and GraphQL Automne 2017 Fabio Petrillo Chargé de Cours This work is licensed under a Creative 1 Commons Attribution-NonCommercialShareAlike
More informationIntroduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy
Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 16, 2008 Agenda 1 Introduction and Overview Introduction 2 Socket
More informationModern web applications and web sites are not "islands". They need to communicate with each other and share information.
441 Modern web applications and web sites are not "islands". They need to communicate with each other and share information. For example, when you develop a web application, you may need to do some of
More informationAssigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a. U+00A9 is a copyright symbol U+0F03 is an
Unicode Unicode Assigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a UTF U+00A9 is a copyright symbol U+0F03 is an Universal Character Set Transformation Format describes how zeroes
More informationAvro Specification
Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 3 Data Serialization...6 3.1 Encodings... 6 3.2 Binary Encoding...6 3.3 JSON
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationJSON as an XML Alternative. JSON is a light-weight alternative to XML for datainterchange
JSON The Fat-Free Alternative to XML { Lecture : 27, Course : CSC375, Days : TTh", Instructor : Haidar Harmanani } JSON as an XML Alternative JSON is a light-weight alternative to XML for datainterchange
More informationLibelium Cloud Hive. Technical Guide
Libelium Cloud Hive Technical Guide Index Document version: v7.0-12/2018 Libelium Comunicaciones Distribuidas S.L. INDEX 1. General and information... 4 1.1. Introduction...4 1.1.1. Overview...4 1.2. Data
More informationBackend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web
Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/
More informationIntegration with Magento Order Management
Integration with Magento Order Management Who are we? Félix Delval Architect Magento, an Adobe Company Twitter : @fe_lix_ Elena Kolodyazhna Technical Architect Magento, an Adobe Company Twitter: @ekolod
More informationNetwork Automation using modern tech. Egor Krivosheev 2degrees
Network Automation using modern tech Egor Krivosheev 2degrees Key parts of network automation today Streaming Telemetry APIs SNMP and screen scraping are still around NETCONF RFC6241 XML encoding Most
More informationLesson 3 SOAP message structure
Lesson 3 SOAP message structure Service Oriented Architectures Security Module 1 - Basic technologies Unit 2 SOAP Ernesto Damiani Università di Milano SOAP structure (1) SOAP message = SOAP envelope Envelope
More informationNoSQL & Firebase. SWE 432, Fall Web Application Development
NoSQL & Firebase SWE 432, Fall 2018 Web Application Development Review: Nouns vs. Verbs URIs should hierarchically identify nouns describing resources that exist Verbs describing actions that can be taken
More informationGuzzle: Extraordinary HTTP Client
Guzzle: Extraordinary HTTP Client Rob Allen @akrabat ~ akrabat.com ~ September 2016 Why HTTP clients in PHP? Talking to web services Authentication with 3rd parties Social media interaction Remote APIs
More informationMcAfee Next Generation Firewall 5.8.0
Reference Guide Revision A McAfee Next Generation Firewall 5.8.0 SMC API This guide gives an overview of the Security Management Center (SMC) application programming interface (API). It describes how to
More informationOracle RESTful Services A Primer for Database Administrators
Oracle RESTful Services A Primer for Database Administrators Sean Stacey Director Database Product Management Oracle Server Technologies Copyright 2017, Oracle and/or its affiliates. All rights reserved.
More informationAvro Specification
Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 2.4 Aliases... 6 3 Data Serialization...6 3.1 Encodings... 7 3.2 Binary Encoding...7
More informationHigh performance and scalable architectures
High performance and scalable architectures A practical introduction to CQRS and Axon Framework Allard Buijze allard.buijze@trifork.nl Allard Buijze Software Architect at Trifork Organizers of GOTO & QCON
More informationFamily Map Server Specification
Family Map Server Specification Acknowledgements The Family Map project was created by Jordan Wild. Thanks to Jordan for this significant contribution. Family Map Introduction Family Map is an application
More informationWS/HTTP-DDS Accessing Real-Time DDS Data From Web-Based Clients
WS/HTTP-DDS Accessing Real-Time DDS Data From Web-Based Clients Andrea Iannitti Fabrizio Bertocci Gerardo Pardo, Ph.D. Nick Stavros, Ph.D. July 14, 2008 1 The Challenge Integrating WebApps with DDS requires
More informationCOSC 2206 Internet Tools. The HTTP Protocol
COSC 2206 Internet Tools The HTTP Protocol http://www.w3.org/protocols/ What is TCP/IP? TCP: Transmission Control Protocol IP: Internet Protocol These network protocols provide a standard method for sending
More informationApache Avro. Sharing and managing data efficiently
Apache Avro Sharing and managing data efficiently Scott Carey Apache Avro PMC Chair Principal Architect, RichRelevance scottcarey@apache.org March 6, 2012 What is Apache Avro? "Apache Avro is a data serialization
More information