美文网首页
被妖魔化的服务发现原来这么简单

被妖魔化的服务发现原来这么简单

作者: 程序员小饭 | 来源:发表于2022-11-02 19:06 被阅读0次

微服务在当今的互联网架构中的重要性我在这里就不多说了,随着微服务的大范围应用,服务发现这个词也变的越来越火热。在平时的工作中,我发现现在很多人喜欢把一些很简单的事情说的很复杂,比如什么BFF架构,这中台那中台的。其实服务发现也是一样,很多文章把这块内容写的过于妖魔化,导致很多人看起来云里雾里的感觉好像很高深的样子,接下来就放弃这块了。其实服务发现是个很简单的过程,稍微有点编码基础的人都能看懂。今天对此做一个总结,如果对您有用,记得点个赞点个关注,如果有问题也可以留言,我看到了会第一时间回复。

传统的客户端和服务端的交互模式

  • 服务端1 2 3 分别提供了一个服务的ip端口号
  • 这里的客户端不是咱们狭义理解的客户端app或者前端,客户端也可以是一个服务端,比如你在一个golang项目中需要不同的服务等,那么你这个golang项目就是上图中的客户端,这一点尤其要注意。
  • 如果说的准确一点,这里的客户端应该叫做服务消费者,服务端应该叫做服务提供者

上面这种传统的交互模式看着没什么问题,但是其实可用性并没那么好,首先比如你的服务端2挂了,但是客户端还是不知道的,依然会继续请求,这样可用性当然是大大的下降的,所以接下来就引发出了我们接下来要讲的服务发现模式

服务发现模式

大概流程


其实所谓的服务发现,就是服务消费者在调用服务提供者提供的服务的时候,多了一层服务中介。服务中介中有很多key/value键值对,key是服务名称,value是服务提供者的地址列表当你新增一个服务提供者的时候,就往服务中介中写入kv数据,这个过程叫做服务注册 当你请求一个服务的时候,直接拿着key去服务中介中取对应的value,也就是服务提供者的地址列表,然后去请求就可以了。

当服务提供者节点挂掉时,要求服务能够及时取消注册,比便及时通知消费者重新获取服务地址。

当服务提供者新加入时,要求服务中介能及时告知服务消费者,你要不要尝试一下新的服务。

基本过程如下图
  • 步骤1:每次新增加一个服务提供者,需要先去服务注册中心注册一个key/value(服务名称/服务提供者的地址列表)
  • 步骤2:服务调用者不直接调用服务提供者,而是拿着标志(也就是上面注册的key(服务名称))去服务注册中心查找对应的value(服务提供者的地址列表)
  • 步骤3:服务注册中心会告诉服务调用者对应的key(服务名称)是否有value(服务提供者的地址列表),有的话会把对应的value(服务提供者的地址列表)返回给服务调用者
  • 步骤4:服务调用者会拿着返回的value(服务提供者的地址列表)去请求对应的服务

服务发现是否太过简单?

上面的过程看起来好像是有点太简单了,而且看起来也没解决什么问题呀,而且好像还徒增了复杂度。其实并不是这样的。

服务提供者进程如果被kill -9暴力杀死,服务消费者不知道怎么办?

这个不用担心,服务发现中引入服务保活和检查机制,并更换数据结构。服务提供者需要每隔5秒左右向服务发现汇报存活,服务发现将服务地址和汇报时间记录在kv中。服务中介需要每隔10秒左右检查kv数据结构,踢掉汇报时间严重落后的服务地址项。这样就可以准实时地保证服务列表中服务地址的有效性。这也就是我们说的服务健康检查

服务列表变动时如何通知消费者?

第一种方法是轮询,消费者需要每隔几秒查询服务列表是否有改变。如果服务很多,服务列表很大,消费者很多,那么服务发现也会有一定的压力
第二种方法是订阅消费模式,服务消费者订阅一个消息,服务提供者有变动直接往消息中发送对应变化就行。

常见的服务发现方案

- DNS
- mDNS
- Zookeeper
- Etcd
- Consul

具体方案大概了解一下就行,后面我们会详细介绍一下Consul,那么我们下期再见吧。如果这篇文章有帮助到你,记得点赞分享哦,我们下期见。

本文由mdnice多平台发布

相关文章

  • 被妖魔化的服务发现原来这么简单

    微服务在当今的互联网架构中的重要性我在这里就不多说了,随着微服务的大范围应用,服务发现这个词也变的越来越火热。在平...

  • 什么是服务发现?

    什么是服务发现? 服务发现并没有怎样的高深莫测,它的原理再简单不过。只是市面上太多文章将服务发现的难度妖魔化,读者...

  • 150206

    才发现原来以为很简单的毕业设计是这么的难。

  • 原来这么简单

    本文参加简书七大主题正文S2和故事 天空无云,晴朗正好。 我永远忘不了那一天,当我坐在气氛严肃紧张的中...

  • 原来这么简单

    眼前赫然立着那棵圣诞树,微红的手心仍在隐隐作痛,回眸望入他那明澈的目光,我已了然。喔,原来这么简单。 ...

  • 原来这么简单

    抛开一切思想杂念 摒弃诸多繁文缛节 不去计较得失与成败 不去揣测别人的行为动机 就做自己喜欢又想做的事情 —— 坐...

  • 原来这么简单

    回来了啊 这两天干什么去了 追了个女生 多大 十八 我去 怎么样 搞定 擦嘞 这么容易? 200 ……

  • 原来这么简单

    今天,在电脑上登录简书写文章,打字明显快多了。写什么呢?今天没做什么“正事”,一直在“打酱油”,哈哈。眼看要下班了...

  • 原来这么简单

    文/广州一考生 原以为两点一线的生活埋没了我的情感;原以为分数至上的世界里,让我的心变得木然;原以为每天泡...

  • 原来这么简单

    做作业。对于我这个脑速很快的小孩不是什么问题,但是不知道什么时候开始,我的作业很难按时完成了。因为作业没能按...

网友评论

      本文标题:被妖魔化的服务发现原来这么简单

      本文链接:https://www.haomeiwen.com/subject/jenjtdtx.html