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

主頁 > 知識庫 > 從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,服務拆分,微服務,領域驅動)的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩不卡免费视频| 欧美美女激情18p| 欧美猛男超大videosgay| 精品国产乱码久久久久久图片| 国产精品美女久久久久久| 香蕉乱码成人久久天堂爱免费| 成人免费高清在线观看| 日韩你懂的在线观看| 亚洲黄色免费电影| 国产.欧美.日韩| 日韩欧美色综合网站| 亚洲主播在线播放| 97久久精品人人做人人爽50路| 久久久久久久久伊人| 麻豆成人久久精品二区三区小说| 欧美在线你懂的| 亚洲日本乱码在线观看| 国产乱码精品一区二区三区av| 在线播放国产精品二区一二区四区| 亚洲欧美经典视频| 99热这里都是精品| 国产精品色在线| 国产91精品免费| 国产色一区二区| 国产成人免费在线| 欧美激情一区二区三区| 国产精品一区二区免费不卡| 精品国产亚洲在线| 国产乱人伦偷精品视频不卡| 久久久久久久久久看片| 国产一区二区在线看| 久久蜜桃一区二区| 国产自产视频一区二区三区| 精品国产在天天线2019| 激情深爱一区二区| 精品少妇一区二区三区免费观看| 丝袜美腿亚洲一区二区图片| 欧美一区二区免费| 麻豆精品一区二区av白丝在线| 欧美日本一区二区三区| 视频一区二区中文字幕| 欧美videossexotv100| 国产乱子伦视频一区二区三区| 国产亚洲欧洲一区高清在线观看| 国产精品一级在线| 国产精品久久久久影院亚瑟| 日本道精品一区二区三区| 亚洲v中文字幕| 欧美大白屁股肥臀xxxxxx| 国产一区二区三区四区五区美女| 亚洲国产高清不卡| 91丨九色丨蝌蚪富婆spa| 亚洲图片欧美色图| 欧美精品一区二区三区视频| 成人av动漫在线| 亚洲小少妇裸体bbw| 日韩一级二级三级精品视频| 久久综合综合久久综合| 国产精品美女久久久久久久 | 欧美一区二区三区视频免费| 美女www一区二区| 国产农村妇女精品| 色哦色哦哦色天天综合| 日韩av不卡在线观看| 久久久久99精品国产片| 在线免费亚洲电影| 国产在线一区二区| 亚洲精品乱码久久久久久日本蜜臀| 欧美高清视频www夜色资源网| 国产福利91精品一区二区三区| 一区二区三区久久| 精品处破学生在线二十三| 色八戒一区二区三区| 国产综合一区二区| 亚洲国产欧美日韩另类综合 | 久久激情五月婷婷| 亚洲品质自拍视频网站| 精品国产亚洲在线| 欧美羞羞免费网站| 波多野结衣精品在线| 蜜臀av性久久久久蜜臀aⅴ | 一区精品在线播放| 91麻豆精品国产综合久久久久久| 成人在线综合网| 美女mm1313爽爽久久久蜜臀| 一区二区三区视频在线看| 久久久精品免费免费| 7777精品伊人久久久大香线蕉经典版下载 | 国产激情视频一区二区在线观看 | 亚洲丝袜自拍清纯另类| 日韩丝袜美女视频| 欧美图片一区二区三区| jvid福利写真一区二区三区| 精品一区二区三区在线播放视频| 亚洲亚洲人成综合网络| 中文字幕精品一区二区三区精品| 91精品国产免费| 在线观看亚洲a| 99精品欧美一区二区蜜桃免费 | 99久久伊人精品| 国内精品伊人久久久久av一坑 | 亚洲一区二区精品久久av| 国产精品久久久久久妇女6080 | 日韩精品一区二区在线| 欧美日韩精品一区二区三区四区| a在线欧美一区| 国产成人免费av在线| 国产自产高清不卡| 激情综合色综合久久| 蜜臀av国产精品久久久久| 午夜精品福利久久久| 亚洲综合精品自拍| 亚洲宅男天堂在线观看无病毒| 亚洲免费毛片网站| 一二三区精品视频| 亚洲综合在线免费观看| 一区二区日韩电影| 亚洲国产精品影院| 亚洲一区二区三区中文字幕| 亚洲激情中文1区| 亚洲欧美一区二区不卡| 亚洲美女视频在线观看| 亚洲一级不卡视频| 丝袜美腿一区二区三区| 美女国产一区二区三区| 国产一区二区不卡老阿姨| 粉嫩一区二区三区性色av| 国产精品资源站在线| 成人激情免费网站| 91在线小视频| 欧美日韩精品一区视频| 欧美xxxxx牲另类人与| 国产欧美日韩综合精品一区二区| 国产精品久久久久久久久免费相片| 国产精品女上位| 亚洲影院久久精品| 人人狠狠综合久久亚洲| 国产一区二区看久久| 91影院在线观看| 欧美私人免费视频| 日韩欧美一区二区在线视频| 国产亚洲成av人在线观看导航| 亚洲同性同志一二三专区| 图片区小说区国产精品视频| 经典三级在线一区| 97久久超碰精品国产| 91精品久久久久久久91蜜桃| 国产亚洲成年网址在线观看| 夜夜精品视频一区二区 | 午夜视频久久久久久| 国产精品自在欧美一区| 欧美在线影院一区二区| 精品国产免费一区二区三区四区| 亚洲欧洲国产专区| 丝袜亚洲另类欧美| 成人av在线资源网| 欧美精品久久久久久久多人混战| 国产亚洲欧美色| 亚洲高清视频中文字幕| 国产成人精品亚洲午夜麻豆| 欧美另类z0zxhd电影| 一区免费观看视频| 国内成人精品2018免费看| 91成人在线免费观看| 久久精品在线免费观看| 日产欧产美韩系列久久99| av中文字幕亚洲| 精品蜜桃在线看| 婷婷中文字幕一区三区| 色综合中文字幕国产| 日韩精品在线一区| 香蕉影视欧美成人| 色噜噜狠狠成人中文综合 | 日韩欧美中文字幕精品| 亚洲午夜精品久久久久久久久| 国产精品一区在线观看你懂的| 欧美日韩国产一级片| 国产精品福利电影一区二区三区四区| 天天操天天色综合| 色欲综合视频天天天| 久久久不卡网国产精品一区| 麻豆精品精品国产自在97香蕉| 欧美日韩亚洲国产综合| 亚洲免费伊人电影| 99精品国产99久久久久久白柏 | 亚洲丝袜美腿综合| 国产成人在线免费观看| 精品国产一区二区在线观看| 日韩黄色免费网站| 欧美日韩成人综合天天影院| 亚洲狼人国产精品| 成人av电影观看| 欧美极品xxx| 国产成人精品www牛牛影视| 精品成人私密视频| 喷白浆一区二区| 日韩欧美亚洲一区二区| 蜜臀av性久久久久av蜜臀妖精 | 国产精品美日韩| 不卡视频免费播放|