文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 12:52

关注

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

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

服务发现模式​

大概流程​

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

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

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

基本过程如下图

服务发现是否太过简单?​

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

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

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

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

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

常见的服务发现方案​

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

来源:程序员小饭内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯