【转帖】Service Discovery: 6 questions to 4 experts
https://highops.com/insights/service-discovery-6-questions-to-4-experts/
What’s Service Discovery? Its benefits and challenges?
The successful format of ‘Immutable Infrastructure: 6 questions to 6 experts’ is back.
The topic of Service Discovery is not new (just think DNS!) but it’s been moving fast over the last few years thanks in part to the explosion of services and microservices architectures and, of course, Docker.
As it often happens in these cases, we see a lot of different interpretations of its meaning, benefits, challenges, and adoption paths. We asked 4 experts who have been thinking, writing and implementing Service Discovery to share their experience by answering the following questions on the topic:
1) What does Service Discovery mean to you?
2) What are the key aspects Service Discovery should have and why?
3) What are the main benefits you see/care about?
4) What are the most solid options out there today?
5) Biggest adoption challenges that are not there yet in your opinion?
6) Starting from scratch is (relatively) easy. What about those with existing systems? any hints on how people could get started introducing Service Discovery in existing systems?
The experts
- Sam Newman, a techie at ThoughtWorks. Aside from other things I’ve committed sporadically to open source projects, spoke at more than a few conferences, and wrote some things including the book Building Microservices for O’Reilly.
- Nitesh Kant is an engineer in the Cloud & Platform engineering team at Netflix, where he has been leading the evolution of the Inter Process Communication (IPC) stack to follow the reactive programming paradigm. He is the core contributor of the reactive IPC library RxNetty which forms the heart of this new stack. He’s also a contributor to eureka: Netflix’s Service Discovery system and has ideated and designed the 2.0 version. Eureka is the backbone of Netflix’s microservices architecture handling thousands of application instances in the Netflix ecosystem.
- Jeff Lindsay is the author of Dokku and many Docker related open source projects. He is the co-founder and principal of Glider Labs, a DevOps consultancy specializing in modern, Docker-oriented system architectures. Jeff was involved in the early stages of Docker development, and has worked with many other organizations such as Twilio, Digital Ocean, and NASA Ames on distributed systems and developer platforms.
- Eberhard Wolff works as a Fellow for innoQ. His technological focus is on modern architectures – often involving Cloud, Continuous Delivery, DevOps, Microservices and NoSQL Eberhard is a regular speaker at international conferences and author of over 100 articles and several books – most in German.
Highlights
The full transcript of all answers is at the end and we recommend you read them all since they cover a lot of ground. Here are just some highlights:
1) What does Service Discovery mean to you?
It keeps track of all the services in a (large scale) distributed system so that they can be found by both people and other services. Think of DNS as a simple example but on steroids: complex systems need features like storing metadata about a service, health monitoring, varying query capabilities, realtime updates, etc.
It differs depending on the context, e.g. network device discovery, rendezvous discovery, SOA discovery but in all cases it’s a coordination mechanism for services to announce themselves and find others without configuration.
2) What are the key aspects Service Discovery should have and why?
As the backbone of any large-scale service oriented architecture Service Discovery needs the be highly available and cover 3 main aspects: Registration, Directory and Lookup. Having just the Directory is not enough.
As mentioned the ability to store metadata is key since complex services provide multiple service interfaces and ports and often require non-trivial deployment environments. And once you have lots of metadata you need powerful querying capabilities, including health/status.
3) What are the main benefits you see/care about?
The main benefit is what in network discovery referred to as “zero configuration”: rather than hardcode addresses we specify a service name (and sometimes not even that!). In modern architectures nodes come and go and you need to decouple individual service instances from the knowledge of the deployment topology of your architecture.
Having a way to get insights into the deployment status of all the services and to control the available instances from a centralized place becomes key, especially in complex system s which warrant something more than just DNS.
4) What are the most solid options out there today?
Service Discovery solutions are a plenty today in the industry.
As mentioned DNS has been used for a long time and is probably the largest Service Discovery system out there. For small-scale setups start with DNS but once you start provisioning nodes more dynamically, DNS starts becoming problematic due to the propagation time.
Arguably, Zookeeper is the most mature of the config stores used for discovery since it has been around for quite some time and is a comprehensive solution including configuration management, leader election, distributed locking etc. This makes it a very compelling general-purpose solution although it’s often more complex than it could be.
etcd & doozerd are the new age cousins of Zookeeper, built with similar architectures and features sets and hence can be used interchangeably in place of Zookeeper
Consul is a newer solution in this space that provides configuration management and a generic key-value store apart from Service Discovery. It also has killer features of health checking of nodes and supporting DNS SRV for improved interop with other systems. A big differentiator from Zookeeper is the HTTP & DNS APIs that can be used to interact with consul vis-à-vis a Zookeeper client.
If you lean more towards AP systems Eureka is a great choice and is battle tested in Netflix and it prefers Availability over Consistency in the wake of network partitions.
5) Biggest adoption challenges that are not there yet in your opinion?
It’s more complicated than you realize: it’s an extension of the distributed systems problem.
You might roll out configuration files with service names, IPs and ports but when the system becomes very dynamic you need to migrate to a “real” Service Discovery solution and that migration is usually not as easy as you think. One of the biggest challenges is the inability to understand how intrusive the choice of a Service Discovery system is: once chosen it is very difficult to change it and hence it is critical to do it right.
Most systems implement some form of distributed consensus algorithms, designed to be resilient in the face of node outages, but these algorithms are notoriously hard to get right and understanding failure modes is both key and difficult and failing to analyse them correctly usually takes you to make the wrong choices.
6) Starting from scratch is (relatively) easy. What about those with existing systems? Any hints on how people could get started introducing Service Discovery in existing systems?
The first step of starting to use a Service Discovery system is for clients to stop baking knowledge about the dependent service deployment environments. Once the clients stop baking that knowledge in code they are forced to store that knowledge externally. Starting as simple as storing this knowledge in properties, they can slowly graduate to looking up this knowledge dynamically from an external Service Discovery system.
Once you pick a mechanism (network or service) and understand what you need to optimize for (and that’s maybe the hardest part), it’s just a matter of introducing integration points for registration and lookup.
【转帖】Service Discovery: 6 questions to 4 experts的更多相关文章
- Service Discovery with Apache Curator
Curator的介绍 Curator就是Zookeeper的一个客户端工具(不知道Zookeeper的同学可以到http://www.ibm.com/developerworks/cn/opensou ...
- Android WiFiDirect 学习(二)——Service Discovery
Service Discovery 简介 在Android WifiDirect学习(一 )中,简单介绍了如何使用WifiDirect进行搜索——连接——传输. 这样会有一个问题,那就是你会搜索到到附 ...
- Open-Source Service Discovery
Service discovery is a key component of most distributed systems and service oriented architectures. ...
- [译]Ocelot - Service Discovery
原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如 ...
- Service Discovery And Health Checks In ASP.NET Core With Consul
在这篇文章中,我们将快速了解一下服务发现是什么,使用Consul在ASP.NET Core MVC框架中,并结合DnsClient.NET实现基于Dns的客户端服务发现 这篇文章的所有源代码都可以在G ...
- ZooKeeper之service discovery
Zookeeper整体介绍 ZooKeeper is a centralized service for maintaining configuration information, naming, ...
- Service discovery
https://www.cnblogs.com/dirt2/p/5987067.html Use Assigned Numbers in the Service Discovery Protocol ...
- Service Discovery in WCF 4.0 – Part 2 z
Service Discovery in WCF 4.0 – Part 2 In the previous post I discussed about the basic usage of WCF ...
- Service Discovery in WCF 4.0 – Part 1 z
Service Discovery in WCF 4.0 – Part 1 When designing a service oriented architecture (SOA) system, t ...
随机推荐
- 快速排序及查找第K个大的数。
本文提供了一种基于分治法思想的,查找第K个大的数,可以使得时间复杂地低于nlogn. 因为快排的平均时间复杂度为nlogn,但是快排是全部序列的排序, 本文查找第k大的数,则不必对整个序列进行排序.请 ...
- maven 指定工程的 jdk 版本及编译级别
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- 配置Maven环境变量与Intelij IDE配置Maven
Maven有什么用? 以前我们导入第三方jar包的流程是什么?一般是download,然后copy到项目中,然后依赖(library)项目,最后被我们使用. 通俗的说,就是不用我们自己去downloa ...
- 初探Delphi中的插件编程
前言 我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构.随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个 ...
- DOM节点中属性nodeName、nodeType和nodeValue的区别 < Delphi >
http://msdn.microsoft.com/zh-cn/library/vstudio/hf9hbf87.aspx <?xml version="1.0"?> ...
- 三分钟教你学Git (四)之紧急救助
假设你不小心git reset --hard HEAD^ 然后这个commit又没有在别的git仓库中,怎么办?是不是这次改动就丢了呢? 当然不是,git为我们每次都历史都保留了reference l ...
- 从Log4j迁移到LogBack的理由
英文原文:Reasons to prefer logback over log4j 无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进.不过尽管难以一一细数,这里还是列举部分理由 ...
- python笔记3-邮件发送(smtplib)
前言 本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了. 以下代码兼容python2和python3, ...
- Android RadioButton设置选中时文字和背景颜色同时改变
主要应用在购物车,像淘宝的那样,点击以后弹出一个选择种类颜色这样的popuwindow以后,然后这个选择种类的地方要用到类似这个玩意儿. 搜了一下,效果和这个文章一致.转了. 原文地址:http:// ...
- OpenCV学习(12) 图像的腐蚀与膨胀(3)
通过使用不同的结构元素来进行膨胀腐蚀操作,可以检测图像中的角点,下面就一步一步看这个算法如果实现角点检测. 原图像: 首先我们创建四个结构元素 先用十字结构元素对原图像进行膨胀操作,得到下面的图像 再 ...