校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 從0到1搭建后端架構的演進(MVC,服務拆分,微服務,領域驅動)

從0到1搭建后端架構的演進(MVC,服務拆分,微服務,領域驅動)

熱門標簽:宿遷怎么辦理400電話 400電話辦理費用低 谷歌地圖標注日期 聯通外呼系統電腦app軟件 鶴壁高頻外呼系統多少錢一個月 外呼系統怎么群發短信 地圖標注項目幾個月 蘇州呼叫中心外呼系統哪家強 400電話申請到底哪家好

產品是一款服務于人力資源的SaaS在線服務,面向HR有Web Android/iOS 小程序多個客戶端

后端采用RESTful風格API來提供服務。主要使用Python語言,方便快速迭代。

架構的演進經歷了4個大的階段:

一、MVC

項目剛開始的時候,后端同事不超過5個,這個階段主要的工作是實現產品的原型,沒有太多的考慮架構

使用Django來快速實現功能,DB的表結構設計好之后,抽象出功能View

由于產品設計也很不完善,后端需要很多的預留設計,避免產品邏輯的變更帶來整個表結構的變動

在這個階段代碼上最重要的是確定適合團隊的代碼規范,代碼檢查規則。

整體上架構如上圖

  • Nginx負責負載均衡,分發流量到多個Django服務
  • Django處理邏輯
  • 異步任務就交給Celery
  • 數據量比較大的地方使用Redis做緩存
  • 同時還有實時消息通知的需要使用了Nginx Push Module

問題與優化方式:

  • Django并發性能差
  • 使用uWSGI Master+Worker 配合 gevent 攜程支持高并發Redis連接數過多
  • 使用redis-py自帶的連接池來實現連接復用MySQL連接數過多
  • 使用djorm-ext-pool(https://github.com/djangonauts/djorm-ext-pool)連接池復用連接Celery配置gevent支持并發任務

隨著開發的功能越來越多,Django下的app也越來越多,這就帶了發布上的不方便,每次發布版本都需要重啟所有的Django服務,如果發布遇到問題,只能加班解決了。而且單個Django工程下的代碼量也越來越多,不好維護。

二、服務拆分

隨著后端團隊的壯大,分給每個同事的需求也越來越細

如果繼續在一個工程里面開發所有的代碼,維護起來的代價太高

而我們的上一個架構中在Django里面已經按模塊劃分了一個個app

app內高類聚,app之間低耦合,這就為服務的拆分帶來了便利。

拆分的過程沒有遇到太大的問題,初期的拆分只是代碼的分離

把公用的代碼抽離出來實現一個公用的Python庫,數據庫,Redis還是共用,隨著負載的增加,數據庫也做了多實例。

如上圖,服務之間盡量避免相互調用,需要交互的地方采用http請求的方式,內網的調用使用hosts指向內網地址。

問題與優化方式:

  • Nginx Push Module由于長時間沒有維護,長連接最大數量不夠,
  • 使用Tornado + ZeroMQ實現了tormq(https://github.com/zhu327/tormq)服務來支撐消息通知
  • 服務之間的調用采用http的方式,并且要求有依賴的服務主機配置hosts指向被調用的地址,這樣帶來的維護上的不方便。
  • 以及在調用鏈的過程中沒有重試,錯誤處理,限流等等的策略,導致服務可用性差。
  • 隨著業務拆分,繼續使用Nginx維護配置非常麻煩,經常因為修改Nginx的配置引發調用錯誤。
  • 每一個服務都有一個完整的認證過程,認證又依賴于用戶中心的數據庫,修改認證時需要重新發布多個服務。

三、微服務架構

  • 首先是在接入層引入了基于OpenResty的Kong API Gateway,定制實現了認證,限流等插件。
  • 在接入層承接并剝離了應用層公共的認證,限流等功能。
  • 在發布新的服務時,發布腳本中調用Kong admin api注冊服務地址到Kong,并加載api需要使用插件。

為了解決相互調用的問題,維護了一個基于gevent+msgpack的RPC服務框架doge,借助于etcd做服務治理,并在rpc客戶端實現了限流,高可用,負載均衡這些功能。

  • 在這個階段最難的技術選型,開源的API網關大多用Golang與OpenResty(lua)實現,為了應對我們業務的需要還要做定制。
  • 前期花了1個月時間學習OpenResty與Golang,并使用OpenResty實現了一個短網址服務shorturl用在業務中。
  • 最終選擇Kong是基于Lua發布的便利性,Kong的開箱即用以及插件開發比較容易。
  • 性能的考量倒不是最重要的,為了支撐更多的并發,還使用了云平臺提供的LB服務分發流量到2臺Kong服務器組成的集群。
  • 集群之間自動同步配置。

餓了么維護一個純Python實現的thrift協議框架thriftpy,并提供很多配套的工具, 如果團隊足夠大,這一套RPC方案其實是合適的,但是我們的團隊人手不足,水平參差不齊,很難推廣這一整套學習成本高昂的方案。

最終我們開發了類Duboo的RPC框架doge,代碼主要參考了weibo開源的motan。

四、領域驅動設計

  • 在這一架構中我們嘗試從應用服務中抽離出數據服務層
  • 每一個數據服務包含一個或多個界限上下文,界限上下文類只有一個聚合根來暴露出RPC調用的方法。
  • 數據服務不依賴于應用服務,應用服務可以依賴多個數據服務。
  • 有了數據服務層,應用就解耦了相互之間的依賴,高層服務只依賴于底層服務。

在我離職時領域驅動設計還在學習設計階段,還沒有落地,但是我相信前公司的后端架構一定會往這個方向繼續演進。

Service Mesh這種新一代的微服務架構正在成為主流,雖然現在的工作與微服務無關了,但是也還會繼續關注學習。

架構的設計,技術的選型,不能完全按照流行的技術走,最終還是服務于產品,服務于客戶的需求。設計過程中由于團隊,人員的結構問題,有很多的妥協之處,如何在妥協中找到最優解才是最大的挑戰,更多相關問題的討論,請大家持續關注腳本之家!

您可能感興趣的文章:
  • 解讀Serverless架構的前世今生
  • SSM框架前后端信息交互實現流程詳解
  • 適合后臺管理系統開發的12個前端框架(小結)
  • 詳解Java 微服務架構
  • 淺談SpringCloud實現簡單的微服務架構

標簽:雙鴨山 鄂爾多斯 莆田 錫林郭勒盟 丹東 哈爾濱 遵義 襄陽

巨人網絡通訊聲明:本文標題《從0到1搭建后端架構的演進(MVC,服務拆分,微服務,領域驅動)》,本文關鍵詞  從,到,搭建,后端,架構,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《從0到1搭建后端架構的演進(MVC,服務拆分,微服務,領域驅動)》相關的同類信息!
  • 本頁收集關于從0到1搭建后端架構的演進(MVC,服務拆分,微服務,領域驅動)的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲一区欧美一区| 欧美伦理视频网站| 国产一区视频导航| 麻豆精品蜜桃视频网站| 国产一区二区不卡老阿姨| 开心九九激情九九欧美日韩精美视频电影| 亚洲欧美国产三级| 亚洲精品视频免费观看| 亚洲欧洲99久久| 蜜臀av性久久久久av蜜臀妖精| 日韩在线观看一区二区| 国产激情精品久久久第一区二区 | 亚洲精品免费一二三区| 国产精品色呦呦| 亚洲一区二区精品视频| 国模套图日韩精品一区二区 | 成人综合婷婷国产精品久久免费| 国内精品不卡在线| 欧美福利视频导航| 国产精品第13页| 美女尤物国产一区| a级高清视频欧美日韩| 成人性生交大片| 欧美探花视频资源| 综合激情网...| 国产麻豆一精品一av一免费| 92国产精品观看| 欧美精品一区二区在线观看| 亚洲第四色夜色| 欧美三级日韩三级| 亚洲欧美日韩国产手机在线| 国产不卡在线一区| 国产亚洲欧美中文| 精品一区二区三区在线观看国产| 在线中文字幕一区| 亚洲一区在线电影| 欧美日韩精品欧美日韩精品| 亚洲自拍偷拍欧美| 欧美乱妇20p| 免费成人av在线播放| 欧美日高清视频| 亚洲国产一区在线观看| a4yy欧美一区二区三区| 亚洲永久免费av| 在线播放国产精品二区一二区四区| 亚洲精品久久嫩草网站秘色| 欧美少妇性性性| 国产精品一区2区| 亚洲精品国产a久久久久久| 欧美日韩一二区| 极品尤物av久久免费看| 最新日韩av在线| 在线播放国产精品二区一二区四区| 男女性色大片免费观看一区二区| 久久久一区二区| 欧美精品视频www在线观看| 国产不卡视频在线播放| 亚洲欧洲日韩av| 日韩欧美成人一区| 91久久精品日日躁夜夜躁欧美| 青青草国产成人99久久| 亚洲精品成人a在线观看| 久久亚洲欧美国产精品乐播| 欧美亚洲日本一区| 成a人片国产精品| 国产精品亚洲一区二区三区在线| 亚洲色图一区二区| 中文字幕国产一区| 国产精品女同互慰在线看| 日韩欧美另类在线| 欧美精品一区二| 日韩欧美在线一区二区三区| 欧美日本一区二区在线观看| 一本一道久久a久久精品 | 一本一本大道香蕉久在线精品| 麻豆国产精品一区二区三区 | 中文字幕一区二区5566日韩| 国产欧美一区二区在线| 欧美国产日本韩| 中文字幕av一区二区三区高| 久久色.com| 一个色在线综合| 五月天国产精品| 国内成人精品2018免费看| 国产91对白在线观看九色| 国产成人精品免费网站| 成人av片在线观看| 欧美特级限制片免费在线观看| 欧美三级韩国三级日本三斤| 欧美岛国在线观看| 亚洲欧洲无码一区二区三区| 天堂av在线一区| 国产电影一区二区三区| 制服丝袜亚洲色图| 亚洲人成网站影音先锋播放| 日本美女一区二区三区| 日本道色综合久久| 国产精品视频在线看| 免费高清在线一区| 制服.丝袜.亚洲.另类.中文| 欧美国产禁国产网站cc| 天天综合网天天综合色| 国产成人精品在线看| 99国产精品久久久久久久久久| 日韩你懂的在线观看| 午夜一区二区三区视频| 色偷偷久久一区二区三区| 国产欧美日韩在线看| 国产一区二区在线影院| 国产欧美日韩在线观看| 国产成人99久久亚洲综合精品| 欧美大片一区二区| 麻豆久久久久久久| 久久久亚洲国产美女国产盗摄 | 欧美a一区二区| 精品国产免费人成电影在线观看四季| 日韩综合在线视频| 91麻豆精品国产91| 亚洲成va人在线观看| 欧美另类变人与禽xxxxx| 亚洲成人av一区二区三区| 欧美精品久久一区二区三区| 日本伊人色综合网| 国产网站一区二区| 在线观看成人免费视频| 蜜臀av性久久久久蜜臀av麻豆 | 99久久精品久久久久久清纯| 亚洲乱码中文字幕综合| 欧美一区二区视频观看视频| 国产成人超碰人人澡人人澡| 日韩二区三区在线观看| 国产精品久久久久久久久免费丝袜 | 综合久久久久久| 欧美一区二区福利在线| 色婷婷综合久久久中文字幕| 免费成人av资源网| 欧美一区二区三区在线观看视频| 国产一区二区看久久| 亚洲国产中文字幕在线视频综合| 日本一区二区三区久久久久久久久不 | 国产日韩欧美电影| 欧美一级生活片| 欧美日韩精品一区二区| 99这里只有精品| 粉嫩在线一区二区三区视频| 视频一区在线视频| 丝瓜av网站精品一区二区| 一区二区三区在线观看网站| 国产精品伦理在线| 欧美国产禁国产网站cc| 国产亚洲欧美日韩日本| 日韩精品一区二区三区视频播放| av一区二区久久| 在线看一区二区| 欧美在线观看一二区| 欧美日韩一区视频| 色综合中文字幕| 欧美日韩视频在线第一区| 欧美午夜宅男影院| 亚洲精品在线免费观看视频| 精品处破学生在线二十三| 国产日韩成人精品| 亚洲精品综合在线| 国产一区二区三区香蕉| 成人永久免费视频| 在线观看免费一区| 日本一区二区动态图| 亚洲成人自拍一区| 丁香激情综合五月| 欧美中文字幕亚洲一区二区va在线| 91原创在线视频| 久久先锋影音av鲁色资源| 午夜视频在线观看一区二区| 成人精品鲁一区一区二区| 国产乱人伦偷精品视频不卡| 一本色道久久综合亚洲aⅴ蜜桃| 欧美色手机在线观看| 欧美韩国日本不卡| 国产一区二区三区四| 在线不卡中文字幕| 亚洲国产精品综合小说图片区| 国产一区激情在线| 久久久久久久久久久电影| 五月婷婷久久综合| 欧美美女视频在线观看| 一区二区三区日韩精品视频| 不卡视频一二三四| 亚洲欧洲韩国日本视频| 成人免费视频一区| 一区二区三区资源| 欧美色图一区二区三区| 亚洲免费av观看| 欧美三级三级三级| 日韩成人伦理电影在线观看| 欧美乱妇23p| 麻豆精品视频在线| 欧美videossexotv100| 国产老妇另类xxxxx| 亚洲免费观看在线观看| 日韩精品一区二区三区视频播放|