Springboot+dubbo+zookeeper學習筆記(二)

時隔數月,第一版基本上線測試,開發組面臨第二版重構。因爲第一版遭遇需求零碎和管理混亂,毫無節制地修改,導致原來架構好的項目被無情撕碎,體系完全被打亂,程序處處耦合,經常是改完這一處,就會在另一處翻出新問題。加之原來的項目因爲無法整體預先規劃,四個app和一個管理網站的接口雜揉在一起,臃腫而且雜亂。我就想着趕緊上線,到安排第二版重構的時候實現分佈式架構。

架構的初始想法,是全部利用SpringCloud來做,不借用外部的軟件。不過SpringBoot的服務調用方式是基於RestFul的,自己感覺到有點多餘,不但服務提供者要多做一層,而且提供服務的同時也把接口暴露了出來,誰都可以調用,也不太安全。總之是感覺到有點複雜,於是就想到利用Springboot+dubbo_zookeeper的組合。

雖然幾個月前做過一些嘗試,基本瞭解這種分佈式的使用,但是也知道還是有很多坑沒有踩到。以前是在win7本地電腦上面安裝的zookeeper,今天實在centos服務器上面安裝的,這一點小小的不同,就遇到了坑,折騰了好久。大意就是連接異常。猜測是因爲服務器端口沒有開放,於是特意開放了端口,還是不行。最後是完全關閉了防火牆,踩完全解決問題。

第二個坑就是包的問題。以前我認爲提供者和消費者scan的包名必須一樣,通過嘗試發現不是這樣。這兩個參數表示的是提供者類和消費者類的包名,可以不一樣,但是好像z這種模式用到了一種叫做hassian的序列化方式,從提供者傳到消費者的類,引用的類都是用的是完全類名序列化,也就是包含包名的,如果在本地複製一個類,就算都相同,包名不同也不可以。但是這樣依賴就感覺好煩瑣,難道我在提供者寫好的公用的類和接口不但要全部複製給消費者,貌似消費者還要建立一個名稱完全相同的包放進去纔可以用。

還好我最近再努力拆分項目,極力實現低耦合,這種複製來複制去的做法不但容易開放修改權,造成不同步的問題,而且總感覺到在做重複工作,這挺讓人難受的。

解決方法是把這些文件另外起一個與業務無關的基本依賴包libs,把需要用到的model和interface都放到這個項目裏面install,然後分別在服務提供者和服務消費者中依賴就可以了。我已經嘗試成功。有什麼擴展只需要分開去修改,然後升級版本就搞定了。不過,如果不希望把jar包發來發去,團隊可以建立一個maven私服,使用自己的依賴包會更加方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章