Web服務端開發需要考慮的問題(續)

來源:互聯網
上載者:User

標籤:擴大   commit   資料   引入   監控   sum   eclipse   服務端   水平   

方案匯總
API設計
應用架構
程式碼程式庫管理
工具鏈
工作計劃
目標
預期
關鍵過程
service-driver介面定義及實現
web範例

方案匯總API設計

基於https。
只提供純資料。
基於一開始提出的restful方案外,提出了讀寫分離方案如下。

  • 相比restful,url可以表示動作,如下的url是允許的。
    /accounts/1/update

  • http GET表示讀操作,POST表示寫操作

  • 響應狀態與restful方案相同
應用架構

  • API Gateway
    一旦API規模擴大,再加上微服務的使用,路由分發、管理、監控馬上就會變得繁瑣、複雜,需要有相應工具來解決這個問題,參考工具orange。
    在前期API規模還小的時候,可以直接使用nginx管理。

  • 微服務
    微服務解決快速小規模迭代、水平擴充方面的問題。
    諸如“服務間相互調用”,屬於系統架構方面的問題,是SOA的目標,此“服務”並不等同於微服務的“服務”。

  • 工程模組劃分

    1. framework。基礎架構、工具庫,業務無關,基於spring boot。(包含全部service介面定義,及部分預設驅動實現)
    2. service-driver(s)。基礎service驅動。(例如cache的redis驅動、filesystem的mongodb驅動等)
    3. common-biz。通用商務邏輯。
    4. common-web。web相關的通用商務邏輯。
    5. module(s)。具體業務模組,web類型的模組基於spring webmvc。
  • 業務模組內層次劃分,以web模組為例

    • request interceptor(filter)
    • controller(action)
    • view resolver
    • model
    • biz。跨controller、model的商務邏輯。
    • actuator。內部管理和監控介面。
程式碼程式庫管理
  • 工程劃分

    • 架構庫
      包含的模組有:framework、service-driver、common-biz、common-web、web範例
    • 業務庫
      自身模組劃分如前文。同時依賴架構庫輸出的framework、service-driver、common-biz模組。
  • 業務庫分支方案

    約定current的意思是當前最大版本號碼

    • 常設分支包括多個線上分支,master、dev分支。
    • 線上分支均為版本分支,如v1、v2。
    • 版本分支的產生。

      • v(current) <= master < v(current + 1)
      • 當api有不相容改變時,在master的head上建立v(current + 1)分支,然後current += 1。
    • 以v1分支為例,當current>1且需要在v1分支上新增commit時,在v1的head上建立v1-release分支,開發過程中產生的commit提交到v1-release,測試通過後合并到v1,上線後刪除v1-release。

    • 線上分支不會合并,當某個commit涉及多個線上分支時,使用cherry-pick的方式同步到多個分支。
    • 版本分支自身會分出子維護分支以適應微服務部署,如v1可以分出v1-account、v1-order等。
      子維護分支的新增commit用獨立的release分支完成。
  • 代碼複用

    • 有私人maven倉庫,按通常的依賴管理複用
    • 無私人maven倉庫,業務工程庫使用git subtree引入架構工程庫
工具鏈

只提供基於預設工具的工程指導,使用其他工具的成員,如eclipse,需要有能力自行解決工具問題。

  • idea
  • gradle
    -sourcetree
工作計劃

需要完成架構庫、搭建業務庫。

目標

項目可滿足基本的業務需求,並可投入實際使用。
完成架構庫、搭建業務庫。

預期
  • 所有應帶預設實現的service-driver已完成local類型的實現。
  • web範例中示範帶預設實現的service的使用,關聯式資料庫工具的使用。
關鍵過程service-driver介面定義及實現

自上而下優先順序由高到低,自左至右優先順序不分先後。
低優先順序的service可能會依賴高優先順序service。
default標籤表示framework模組會有預設實現,不需要driver(s)模組。
大部分driver都需要考慮local、global兩種類型的實現。
不好抽象出介面或者工作量大且已有成熟第三方定義及實現的service,例如關聯式資料庫工具、httpclient工具等,不在framework中定義,直接在業務模組中引用,避免抽象得不好的service出現在上遊以至於汙染下遊模組。

  1. filesystem default
  2. session default、log default
  3. auth default
  4. cache default
  5. queue
  6. event
  7. mail
  8. sms
web範例

基於web的業務模組

Web服務端開發需要考慮的問題(續)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.