Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Dynamic routing in micro-
service oriented
architecture
Daniel Leon
Optymyze
[13th
of May 2017]
Content table
•Dynamic routing role
•Linkerd concepts
•Some exercises for computing a route with
Linkerd
•Demo
•Q&A
Why routing ?
•Why now?
•What is the real purpose ?
What is Linkerd
•Scalable service mesh for cloud-native
applications
•Built on top of Finagle
What Linkerd does ?
• Manages the difficult, error-prone parts of
cross-service communication:
− Latency-aware load balanc...
Linkerd simplified
•Transparent + Reverse proxy
•Being deployed per-host or per-pod every
call is made to the local Linker...
Linkerd architecture
Step 2 & 3
•Pluggable by configuring the interpreter
attribute in the router configuration
•Can be handled by a separate s...
Step 1 - Identification
•Protocol specific (http 1.1, http 2, thrift,
thriftMux, Mux)
•Request → Service name/logical name...
Step 2 - Binding
•Configured by the client and dtab attributed
in the router section
•Delegation table(Dtab) – ordered lis...
Step 2 - Binding
•Dtab:
– /svc => /datacenter1/cluster1
– /datacenter1/ => /#/io.l5d.fs
•Request → /svc/production
•What i...
Step 2 - Binding
•Dtab:
– /svc => /datacenter1/cluster1
– /datacenter1/ => /#/linkerd_resolver
•Request = svc/production
•...
Step 2 - Binding
•Dtab:
– /svc => /datacenter1/cluster1
– /svc => /datacenter1/cluster2
– /datacenter1/ => /#/linkerd_reso...
Step 3 - Resolving
•Performed by the namer
•Called by the client of linkerd
•Further specifications in the ‘service’ attri...
Conclusions for Linkerd
•Easy to configure and maintain
•No code writing is needed
•Scalable and easy to integrate
•Helps ...
Q & A
Dynamic routing in microservice oriented architecture
Dynamic routing in microservice oriented architecture
Dynamic routing in microservice oriented architecture
Upcoming SlideShare
Loading in …5
×

Dynamic routing in microservice oriented architecture

305 views

Published on

When splitting an application into different micro-services and each application access URL is dynamically generated, the hell gets loose. If you are tired of manually setting a route in your ngnix, come see linkerd in action.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Dynamic routing in microservice oriented architecture

  1. 1. Dynamic routing in micro- service oriented architecture Daniel Leon Optymyze [13th of May 2017]
  2. 2. Content table •Dynamic routing role •Linkerd concepts •Some exercises for computing a route with Linkerd •Demo •Q&A
  3. 3. Why routing ? •Why now? •What is the real purpose ?
  4. 4. What is Linkerd •Scalable service mesh for cloud-native applications •Built on top of Finagle
  5. 5. What Linkerd does ? • Manages the difficult, error-prone parts of cross-service communication: − Latency-aware load balancing − Connection pooling − TLS − Instrumentation etc
  6. 6. Linkerd simplified •Transparent + Reverse proxy •Being deployed per-host or per-pod every call is made to the local Linkerd instance
  7. 7. Linkerd architecture
  8. 8. Step 2 & 3 •Pluggable by configuring the interpreter attribute in the router configuration •Can be handled by a separate service called namerd: – Dynamic update of routing tables – Minimal interaction with service discovery endpoints
  9. 9. Step 1 - Identification •Protocol specific (http 1.1, http 2, thrift, thriftMux, Mux) •Request → Service name/logical name •The logical name maps with the Name concept in Finagle •Example for http 1.1 : GET http://example/hello → /svc/example •Is handled by a router configuration with the identifier attribute
  10. 10. Step 2 - Binding •Configured by the client and dtab attributed in the router section •Delegation table(Dtab) – ordered list of delegation which define how a path should be interpreted •Delegation – rewrite rule •Load-balancing options can be specified to the client section
  11. 11. Step 2 - Binding •Dtab: – /svc => /datacenter1/cluster1 – /datacenter1/ => /#/io.l5d.fs •Request → /svc/production •What is the resolved path ?
  12. 12. Step 2 - Binding •Dtab: – /svc => /datacenter1/cluster1 – /datacenter1/ => /#/linkerd_resolver •Request = svc/production •svc/production → /datacenter1/cluster1/production →/#/linkerd_resolver/cluster1/production
  13. 13. Step 2 - Binding •Dtab: – /svc => /datacenter1/cluster1 – /svc => /datacenter1/cluster2 – /datacenter1/ => /#/linkerd_resolver •Request = svc/production •svc/production → /datacenter1/cluster2/production →/#/linkerd_resolver/cluster1/production
  14. 14. Step 3 - Resolving •Performed by the namer •Called by the client of linkerd •Further specifications in the ‘service’ attribute: – responseClassifiers – retries
  15. 15. Conclusions for Linkerd •Easy to configure and maintain •No code writing is needed •Scalable and easy to integrate •Helps developers focus on the actual code instead on service availability, graceful degradation or load-balancing
  16. 16. Q & A

×