spring/spring boot/spring cloud開發總結,springcloud

來源:互聯網
上載者:User

spring/spring boot/spring cloud開發總結,springcloud

  背景

       針對RPC遠程調用,都在使用dubbo、dubbox等,我們也是如此。由於社區暫停維護、應對未來發展,我們準備嘗試新技術(或許這時候也不算什麼新技術了吧),選擇使用了spring cloud架構。在此期間使用spring boot項目嘗試開發,結果良好。所以想重構原spring項目至spring cloud一步一步進行,因此開發中會出現各種問題。

  問題

      問題總是伴隨著開發一步一步顯露出來,遇到問題總要去解決:

      spring cloud相關問題:

        1.跨系統調用,傳參對象接收不到問題

           解決:服務方在對象參數前@RequestBody即可(ps:public void saveUser(@RequestBody User user)),資料存在報文體中。

        2.系統間重試問題,會多次調用是正常業務資料出現重複,造成垃圾資料

           解決分為2步且所有都在調用方配置,第一步新增類:

           return中是參照feign.Retryer,至於方法名字任意。

@Configurationpublic class FeignConfig {    @Bean    public Retryer feignRetryer() {        return new Retryer.Default(100, SECONDS.toMillis(1), 0);    }}

        第二步: 

       # Max number of next servers to retry (excluding the first server)

        sample-client.ribbon.MaxAutoRetriesNextServer=1對於叢集服務會隨機播放下一個服務,有可能還是選擇訪問自己。不是叢集設定為1會訪問自己會造成2次訪問。

        sample-client 對於多個服務端,sample-client可以刪掉。 

           查看配置發現,針對配置部分請點擊這裡:

    # Max number of retries on the same server (excluding the first try)
    sample-client.ribbon.MaxAutoRetries=1  發現沒用     

    3.部署伺服器,註冊中心服務均存在,但是無法訪問擷取資料,報服務拒絕串連

           解決:其實這算是個注意點,平時開發都是SpringApplication啟動項目,打包部署服務時tomcat連接埠與server.port(spring boot)配置不一致造成。猜測spring cloud訪問從註冊中心擷取主機與連接埠,根據主機和連接埠訪問服務但是服務tomcat設定連接埠與配置不一致,造成問題。

    spring boot相關問題:

         1.項目使用SpringApplication啟動正常,但是訪問不了頁面

            解決:@ComponentScan只掃描當前程式所在包結構(包含子包)中聲明

      | - src
      | | - main
      | | | - java
      | | | | - com
      | | | | | - controller/service/dao
      | | | | - SpringApplication.java

         2.請求url響應問題,不同尾碼響應不同

              解決:該情境是因為spring boot有多個視圖解析器,ajax請求可以直接使用a/b,頁面a/b.htm

      spring相關問題:

         1.spring調用spring cloud項目問題

               解決:使用HttpClient佈建要求頭Content-Type:application/json訪問spring cloud對外系統(gateway)即可,至於內網外網訪問隨意

      異常問題:

         spring cloud有Hystrix斷路由,雖然好處多多,但是訪問每個介面都要相應斷路由介面,如果處理邏輯有區別還好,沒有區別我就不說了。由於我們是統一返回,所以針對出現問題使用全域異常攔截記錄日誌返回失敗,這有個缺點是訪問通異常可以處理,至於逾時這些沒有訪問通就要捕獲。

 討論

      學藝不精,有些都是似懂非懂,希望大神能指點指點。其中有點疑惑,spring訪問spring  cloud最後都打成war包部署發布,個人覺得spring應該也可以註冊到註冊中心,希望知道的可以分享。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.