dubbo调用超时回滚_面试必问之Dubbo面试题
Dubbo 支持哪些協(xié)議,每種協(xié)議的應(yīng)用場(chǎng)景,優(yōu)缺點(diǎn)?
- ? dubbo: 單一長(zhǎng)連接和 NIO 異步通訊,適合大并發(fā)小數(shù)據(jù)量的服務(wù)調(diào)用, 以及消費(fèi)者遠(yuǎn)大于提供者。傳輸協(xié)議 TCP,異步,Hessian 序列化;
- ? rmi: 采用 JDK 標(biāo)準(zhǔn)的 rmi 協(xié)議實(shí)現(xiàn),傳輸參數(shù)和返回參數(shù)對(duì)象需要實(shí)現(xiàn) Serializable 接口,使用 java 標(biāo)準(zhǔn)序列化機(jī)制,使用阻塞式短連接,傳輸數(shù) 據(jù)包大小混合,消費(fèi)者和提供者個(gè)數(shù)差不多,可傳文件,傳輸協(xié)議 TCP。 多個(gè)短連接,TCP 協(xié)議傳輸,同步傳輸,適用常規(guī)的遠(yuǎn)程服務(wù)調(diào)用和 rmi 互 操作。在依賴低版本的 Common-Collections 包,java 序列化存在安全漏 洞;
- ? webservice: 基于 WebService 的遠(yuǎn)程調(diào)用協(xié)議,集成 CXF 實(shí)現(xiàn),提供和 原生 WebService 的互操作。多個(gè)短連接,基于 HTTP 傳輸,同步傳輸,適 用系統(tǒng)集成和跨語(yǔ)言調(diào)用;
- ? http: 基于 Http 表單提交的遠(yuǎn)程調(diào)用協(xié)議,使用 Spring 的 HttpInvoke 實(shí) 現(xiàn)。多個(gè)短連接,傳輸協(xié)議 HTTP,傳入?yún)?shù)大小混合,提供者個(gè)數(shù)多于消 費(fèi)者,需要給應(yīng)用程序和瀏覽器 JS 調(diào)用;
- ? hessian: 集成 Hessian 服務(wù),基于 HTTP 通訊,采用 Servlet 暴露服務(wù), Dubbo 內(nèi)嵌 Jetty 作為服務(wù)器時(shí)默認(rèn)實(shí)現(xiàn),提供與 Hession 服務(wù)互操作。多 個(gè)短連接,同步 HTTP 傳輸,Hessian 序列化,傳入?yún)?shù)較大,提供者大于 消費(fèi)者,提供者壓力較大,可傳文件;
- ? memcache: 基于 memcached 實(shí)現(xiàn)的 RPC 協(xié)議
- ? redis: 基于 redis 實(shí)現(xiàn)的 RPC 協(xié)議
Dubbo 超時(shí)時(shí)間怎樣設(shè)置?
Dubbo 超時(shí)時(shí)間設(shè)置有兩種方式:
- ? 服務(wù)提供者端設(shè)置超時(shí)時(shí)間,在 Dubbo 的用戶文檔中,推薦如果能在服務(wù) 端多配置就盡量多配置,因?yàn)榉?wù)提供者比消費(fèi)者更清楚自己提供的服務(wù)特 性。
- ? 服務(wù)消費(fèi)者端設(shè)置超時(shí)時(shí)間,如果在消費(fèi)者端設(shè)置了超時(shí)時(shí)間,以消費(fèi)者端 為主,即優(yōu)先級(jí)更高。因?yàn)榉?wù)調(diào)用方設(shè)置超時(shí)時(shí)間控制性更靈活。如果消 費(fèi)方超時(shí),服務(wù)端線程不會(huì)定制,會(huì)產(chǎn)生警告。
Dubbo 有些哪些注冊(cè)中心?
- ? Multicast 注冊(cè)中心: Multicast 注冊(cè)中心不需要任何中心節(jié)點(diǎn),只要廣播地 址,就能進(jìn)行服務(wù)注冊(cè)和發(fā)現(xiàn)。基于網(wǎng)絡(luò)中組播傳輸實(shí)現(xiàn);
- ? Zookeeper 注冊(cè)中心: 基于分布式協(xié)調(diào)系統(tǒng) Zookeeper 實(shí)現(xiàn),采用 Zookeeper 的 watch 機(jī)制實(shí)現(xiàn)數(shù)據(jù)變更;
- ? redis 注冊(cè)中心: 基于 redis 實(shí)現(xiàn),采用 key/Map 存儲(chǔ),住 key 存儲(chǔ)服務(wù)名 和類型,Map 中 key 存儲(chǔ)服務(wù) URL,value 服務(wù)過(guò)期時(shí)間。基于 redis 的發(fā) 布/訂閱模式通知數(shù)據(jù)變更;
- ? Simple 注冊(cè)中心
Dubbo 和 Dubbox 之間的區(qū)別?
dubbox 基于 dubbo 上做了一些擴(kuò)展,如加了服務(wù)可 restful 調(diào) 用,更新了開源組件等。
Dubbo 和 Spring Cloud 的關(guān)系?
Dubbo 是 SOA 時(shí)代的產(chǎn)物,它的關(guān)注點(diǎn)主要在于服務(wù)的調(diào)用,流 量分發(fā)、流量監(jiān)控和熔斷。而 Spring Cloud 誕生于微服務(wù)架構(gòu)時(shí) 代,考慮的是微服務(wù)治理的方方面面,另外由于依托了 Spirng、 Spirng Boot 的優(yōu)勢(shì)之上,兩個(gè)框架在開始目標(biāo)就不一致,Dubbo 定位服務(wù)治理、Spirng Cloud 是一個(gè)生態(tài)。 最大的區(qū)別:Dubbo 底層是使用 Netty 這樣的 NIO 框架,是基于 TCP 協(xié)議傳輸?shù)?#xff0c;配合以 Hession 序列化完成 RPC 通信。
而 SpringCloud 是基于 Http 協(xié)議+Rest 接口調(diào)用遠(yuǎn)程過(guò)程的通信, 相對(duì)來(lái)說(shuō),Http 請(qǐng)求會(huì)有更大的報(bào)文,占的帶寬也會(huì)更多。但是 REST 相比 RPC 更為靈活,服務(wù)提供方和調(diào)用方的依賴只依靠一紙契 約,不存在代碼級(jí)別的強(qiáng)依賴。
服務(wù)調(diào)用超時(shí)問(wèn)題怎么解決?dubbo 在調(diào)用服務(wù)不成功時(shí),默認(rèn)是會(huì)重試兩次的。
Dubbo 在安全機(jī)制方面是如何解決?
Dubbo 通過(guò) Token 令牌防止用戶繞過(guò)注冊(cè)中心直連,然后在注冊(cè)中 心上管理授權(quán)。Dubbo 還提供服務(wù)黑白名單,來(lái)控制服務(wù)所允許的調(diào) 用方。
Dubbo 超時(shí)時(shí)間怎樣設(shè)置?
Dubbo 超時(shí)時(shí)間設(shè)置有兩種方式:
- ? 服務(wù)提供者端設(shè)置超時(shí)時(shí)間,在Dubbo的用戶文檔中,推薦如果能 在服務(wù)端多配置就盡量多配置,因?yàn)榉?wù)提供者比消費(fèi)者更清楚自己 提供的服務(wù)特性。
- ? 服務(wù)消費(fèi)者端設(shè)置超時(shí)時(shí)間,如果在消費(fèi)者端設(shè)置了超時(shí)時(shí)間,以消 費(fèi)者端為主,即優(yōu)先級(jí)更高。因?yàn)榉?wù)調(diào)用方設(shè)置超時(shí)時(shí)間控制性更 靈活。如果消費(fèi)方超時(shí),服務(wù)端線程不會(huì)定制,會(huì)產(chǎn)生警告。
Dubbo 的默認(rèn)集群容錯(cuò)方案?
Failover Cluster
Dubbo 支持哪些序列化方式?
默認(rèn)使用 Hessian 序列化,還有 Duddo、FastJson、Java 自帶序列 化。
總結(jié)
以上是生活随笔為你收集整理的dubbo调用超时回滚_面试必问之Dubbo面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 多路查找树之2-3树的插入原理
- 下一篇: Qt可执行程序写入版本信息