美团面试:如何设计一个注册中心?
Hollis
共 2747字,需浏览 6分钟
· 2022-01-01
今天,给大家分享如何设计一个
订单系统 商品系统
怎么调用?
API
地址存放到某个地方。API
了。问题来了
所以,注册中心就来了。
注册中心来了
注册中心
。下面我们用服务提供方(商品系统)称之为provider,服务调用方(订单系统)我们称之为consumer。
如何设计一个注册中心
服务如何注册 consumer如何知道provider 服务注册中心如何高可用 服务上下线,消费端如何动态感知
服务注册
服务列表保存通常有三种方式:本地内存、数据库、第三方缓存系统
同一个服务注册中心,我们可以注册多个服务,比如用户服务、商品服务、订单服务...
服务消费
注册中心高可用
cluster-url
即可。动态感知服务上下线
heartBeat
,即就是服务注册中心,每隔一定时间去监测一下provider,如果监测到某个服务挂了,那就把对应服务地址从服务列表中删除。根据心跳检测,来提出无效服务。
push:服务注册中心主动推送服务列表给consumer。 pull:consumer主动从注册中心拉取服务列表。
我得知道你的微信好友,不然我怎么把我手里的资源发给你
API
,这个API
给服务注册中心进行回调。本质是我们是使用HTTP协议还是使用Socket监听
如果定时任务是每隔30秒拉去一次,那就是说,延迟最长时间是30秒。
与简单轮询相似,只是在服务端在没有新的返回数据情况下不会立即响应,而会挂起,直到有数据或即将超时 优点
:实现也不复杂,同时相对轮询,节约带宽缺点
:还是存在占用服务端资源的问题,虽然及时性比轮询要高,但是会在没有数据的时候在服务端挂起,所以会一直占用服务端资源,处理能力变少应用
:一些早期的对及时性有一些要求的应用:web IM 聊天
小总结
服务是如何注册 消费端如何获取服务 如何保证注册中心的高可用 动态感知服务的上下线
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论