鍍金池/ 問答/人工智能  Linux/ 有關(guān)分布式系統(tǒng)的負載均衡問題

有關(guān)分布式系統(tǒng)的負載均衡問題

目前做微服務接觸到spring cloud,使用ribbon做了負載均衡;
而dubbo本身也實現(xiàn)了負載均衡;
但是在實際生產(chǎn)環(huán)境中依然使用了nginx;
它們有什么區(qū)別呢?既然dubbo和spring cloud實現(xiàn)了負載均衡,為什么生產(chǎn)系統(tǒng)還要使用nginx呢?

回答
編輯回答
生性

負載均衡是用于平衡每臺服務的請求量,防止產(chǎn)生熱點。

dubbo提供的是RPC的服務調(diào)用,這種服務一般用于內(nèi)部接口,例如公司內(nèi)部跨業(yè)務的操作,A 業(yè)務需要通過dubbo訪問B 業(yè)務的服務。
此時dubbo的負載均衡相當于對于B業(yè)務的服務做負載均衡。

ribbon是提供http請求的負載均衡,這種一般用于對外的API接口,例如基于restful的接口。
例如A業(yè)務有100個節(jié)點,其中30個節(jié)點是對外的Api接口,這種情況下就可以使用這種方式進行均在均衡。

nginx是在網(wǎng)關(guān)層面的負載均衡,這種負載均衡不需要代碼入侵,可以實現(xiàn)動態(tài)配置。并且無關(guān)協(xié)議,可以對于多種協(xié)議實現(xiàn)負載均衡,包括http, rpc等。

總結(jié)來看,dubbo的負載均衡只面向dubbo服務,是rpc服務的負載均衡。ribbon的負載均衡面向http請求。這兩種都是細粒度化的負載均衡。
nginx是網(wǎng)關(guān)層面的負載均衡。

參考閱讀:https://www.roncoo.com/course...

2018年8月23日 22:02