主题
面试速答(先看这里)
**一句话结论:**1、服务注册 :服务提供者在启动时,会向注册中心注册自己提供的服务,并将服务相关的信息(如服务名称、版本号、IP地址、端口号、协议、权重等)一并注册。
60秒标准回答:
Dubbo的整体架构中,有多个角色,分别是服务提供者,服务调用者以及服务注册中心。一次完整的服务调用过程其实要分为服务注册、服务发现和服务调用三个过程
1、服务注册 :服务提供者在启动时,会向注册中心注册自己提供的服务,并将服务相关的信息(如服务名称、版本号、IP地址、端口号、协议、权重等)一并注册。Dubbo支持多种注册中心,包括ZooKeeper、Redis、Multicast、Simple等。一旦服务注册成功,服务提供者就可以等待服务调用请求的到来
2、服务发现 :服务调用者在启动时,需要向注册中心订阅自己所需的服务,注册中心会将服务提供者列表返回给服务调用者。当过程中,如果服务提供者列表发生变化,那么Dubbo会通知客户端进行变更
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**Dubbo的整体架构中,有多个角色,分别是服务提供者,服务调用者以及服务注册中心。
- **要点2:**Dubbo会对服务调用进行监控,包括调用次数、调用时间、响应时间、异常次数、异常信息等,以便于服务提供者和服务调用者进行故障排查和性能调优。
- **要点3:**Dubbo提供了多种通信协议和通信方式 ,包括dubbo、http、hessian等,对于不同的通信方式,Dubbo也提供了不同的通信模型。
- **要点4:**对于服务提供者和注册中心之间的通信,Dubbo同样提供了多种注册中心实现,包括ZooKeeper、Redis、Multicast和Simple等,这些注册中心实现了不同的通信协议和通信方式。
- **要点5:**在使用ZooKeeper作为注册中心时,Dubbo会通过ZooKeeper的长连接来注册服务和订阅服务提供者列表,并通过ZooKeeper提供的watch机制来监听服务提供者列表的变化。
**记忆锚点:**Dubbo → ZooKeeper → Redis → Multicast → Simple → 客户端将调用请求序列
关键取舍:
- 在整个调用过程中 Dubbo会对服务调用进行监控,包括调用次数、调用时间、响应时间、异常次数、异常信息等,以便于服务提供者和服务调用者进行故障排查和性能调优。
- 对于服务提供者和服务消费者之间的通信, 可以使用长连接模式或短连接模式 ,可以使用NIO或者Netty等高性能的通信框架, 还可以设置心跳等机制来保持连接的稳定性。
加分表达:
- 当过程中,如果服务提供者列表发生变化,那么Dubbo会通知客户端进行变更。
追问准备:
- 围绕「Dubbo」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「ZooKeeper」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Redis」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
Dubbo的整体架构中,有多个角色,分别是服务提供者,服务调用者以及服务注册中心。一次完整的服务调用过程其实要分为服务注册、服务发现和服务调用三个过程。

1、服务注册:服务提供者在启动时,会向注册中心注册自己提供的服务,并将服务相关的信息(如服务名称、版本号、IP地址、端口号、协议、权重等)一并注册。Dubbo支持多种注册中心,包括ZooKeeper、Redis、Multicast、Simple等。一旦服务注册成功,服务提供者就可以等待服务调用请求的到来。
2、服务发现:服务调用者在启动时,需要向注册中心订阅自己所需的服务,注册中心会将服务提供者列表返回给服务调用者。当过程中,如果服务提供者列表发生变化,那么Dubbo会通知客户端进行变更。
3、服务调用:服务调用者需要根据负载均衡策略选择一个服务提供者,之后,就可以发送服务调用请求了。Dubbo支持多种通信协议和序列化方式。Dubbo客户端将调用请求序列化成二进制数据,并使用网络协议发送给服务提供者,服务提供者将调用请求反序列化后,调用目标方法并将结果序列化成二进制数据返回给服务调用者。在整个调用过程中
Dubbo会对服务调用进行监控,包括调用次数、调用时间、响应时间、异常次数、异常信息等,以便于服务提供者和服务调用者进行故障排查和性能调优。
扩展知识
连接方式
Dubbo提供了多种通信协议和通信方式,包括dubbo、http、hessian等,对于不同的通信方式,Dubbo也提供了不同的通信模型。对于服务提供者和服务消费者之间的通信,可以使用长连接模式或短连接模式,可以使用NIO或者Netty等高性能的通信框架,还可以设置心跳等机制来保持连接的稳定性。
对于服务提供者和注册中心之间的通信,Dubbo同样提供了多种注册中心实现,包括ZooKeeper、Redis、Multicast和Simple等,这些注册中心实现了不同的通信协议和通信方式。
在使用ZooKeeper作为注册中心时,Dubbo会通过ZooKeeper的长连接来注册服务和订阅服务提供者列表,并通过ZooKeeper提供的watch机制来监听服务提供者列表的变化。而在使用Redis作为注册中心时,则会使用Redis提供的订阅-发布机制来进行服务注册和发现。