Dubbo和springcloud對cap理論的踐行:
Dubbo 實(shí)踐通常以ZooKeeper 為注冊中心(Dubbo 原生支持的Redis 方案需要服務(wù)器時(shí)間同步俺榆,且性能消耗過大)感昼。針對分布式領(lǐng)域著名的CAP理論(C——數(shù)據(jù)一致性,A——服務(wù)可用性罐脊,P——服務(wù)對網(wǎng)絡(luò)分區(qū)故障的容錯(cuò)性)定嗓,Zookeeper 保證的是CP ,但對于服務(wù)發(fā)現(xiàn)而言爹殊,可用性比數(shù)據(jù)一致性更加重要 蜕乡,而 Eureka 設(shè)計(jì)則遵循AP原則
spring-cloud和dubbo的區(qū)別
dubbo由于是二進(jìn)制的傳輸,占用帶寬會(huì)更少(基于netty等)
springCloud是http協(xié)議傳輸梗夸,帶寬會(huì)比較多,同時(shí)使用http協(xié)議(http+restful api)一般會(huì)使用JSON報(bào)文号醉,消耗會(huì)更大反症。
http協(xié)議的通信對于應(yīng)用的負(fù)載量會(huì)否真正成為瓶頸點(diǎn)(Spring Cloud也并不是和http+JSON強(qiáng)制綁定的辛块,如有必要Thrift、protobuf等高效的RPC铅碍、序列化協(xié)議同樣可以作為替代方案)
dubbo的開發(fā)難度較大润绵,原因是dubbo的jar包依賴(存在代碼級別的強(qiáng)依賴)問題很多大型工程無法解決
springcloud的接口協(xié)議約定比較自由且松散,需要有強(qiáng)有力的行政措施來限制接口無序升級
dubbo的注冊中心可以選擇zk,redis等多種胞谈,springcloud的注冊中心只能用eureka或者自研
從系統(tǒng)結(jié)構(gòu)簡易程序:
.cloud程序結(jié)構(gòu)簡單尘盼,“springMVC+注冊”=spring-cloud
.dubbo相對復(fù)雜,Url烦绳,protocol卿捎,register,invocation径密,dubbofilter午阵,dubboSPI,dubbo序列化
從性能:
dubbo網(wǎng)絡(luò)開銷略小于cloud享扔,但是可以通過壓縮底桂、二進(jìn)制、高速緩存、分段降級等方法解決
開發(fā)難易度:
dubbo的神坑是jar包依賴,開發(fā)階段難度極大店印,jar升級是大問題
springcloud比較自由稻艰,但帶來的問題是無法“強(qiáng)力約束接口規(guī)范”,建議用行政方式解決
后續(xù)改進(jìn):
dubbo的改進(jìn)是通過dubbofilter琢锋,很多東西沒有,需要自己繼承,如監(jiān)控拖云,如日志,如限流应又,如追蹤宙项。
springcloud具有配置管理、服務(wù)發(fā)現(xiàn)株扛、斷路器尤筐、智能路由、微代理洞就、控制總線盆繁、一次性token、全局鎖旬蟋、選主油昂、分布式會(huì)話和集群狀態(tài)等,滿足了構(gòu)建微服務(wù)所需的所有解決方案
參考博客
1.【http://342104628.iteye.com/blog/2409218】分別談了dubbo和springcloud的區(qū)別