婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 從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,服務拆分,微服務,領域驅動)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩av电影天堂| 亚洲精品在线免费播放| 亚洲人成影院在线观看| 成人精品一区二区三区中文字幕 | 国产精品二三区| 欧美日韩成人一区二区| 91丨国产丨九色丨pron| 亚洲18色成人| 日韩av一区二区三区| 亚洲三级在线免费| 久久综合999| 欧美日韩一区二区三区在线 | 97超碰欧美中文字幕| 麻豆精品在线看| 亚洲18女电影在线观看| 性做久久久久久免费观看| 国产日韩欧美在线一区| 欧美肥妇bbw| 欧美精品在线观看播放| 国产成人综合在线| 自拍偷拍国产精品| 亚洲综合激情小说| 欧美蜜桃一区二区三区| 欧美日韩一区二区三区四区| 蜜臀久久久久久久| 国产亚洲成年网址在线观看| 在线观看网站黄不卡| 国产在线精品免费av| 亚洲一区二区精品3399| 午夜精品久久久久久不卡8050| 欧美日韩精品一区二区在线播放| 国产女人水真多18毛片18精品视频 | 色综合色综合色综合色综合色综合 | 欧美日韩国产首页| 成人网在线免费视频| 成人h动漫精品一区二区| 中文幕一区二区三区久久蜜桃| 国产精品初高中害羞小美女文| 91视频免费看| 国产不卡在线播放| 26uuuu精品一区二区| 精品中文字幕一区二区| 激情另类小说区图片区视频区| 日韩欧美色综合网站| 国产毛片一区二区| 国产电影精品久久禁18| 色爱区综合激月婷婷| 韩国女主播成人在线| 久久蜜桃av一区二区天堂| 久久久精品国产99久久精品芒果| 成人av电影观看| 国产精品欧美一区喷水| 亚洲精品伦理在线| 中文字幕乱码一区二区免费| 日韩欧美中文一区二区| 色先锋aa成人| 麻豆91在线看| 成人激情免费网站| 国产寡妇亲子伦一区二区| 午夜亚洲国产au精品一区二区| 夜夜精品视频一区二区| 欧美精品一区二区久久久| 久久99在线观看| 欧美午夜精品一区| 国产成都精品91一区二区三| 成人欧美一区二区三区小说| 日韩午夜激情视频| 欧美体内she精高潮| 日韩精品中午字幕| 91精品国产综合久久久蜜臀粉嫩| 男男gaygay亚洲| 丝袜美腿亚洲一区| 日韩精品高清不卡| 首页国产丝袜综合| 黄色精品一二区| 精品国产91九色蝌蚪| 日韩午夜电影av| a级精品国产片在线观看| 北条麻妃一区二区三区| 99视频国产精品| 国产综合色在线视频区| 91精品91久久久中77777| 韩国三级在线一区| 日韩一区二区在线看片| 日韩欧美国产午夜精品| 精品88久久久久88久久久| 日韩成人免费看| 六月丁香综合在线视频| 美腿丝袜亚洲三区| 欧美精品少妇一区二区三区| 欧美在线三级电影| 青青草97国产精品免费观看| 在线视频欧美区| 色婷婷激情久久| 88在线观看91蜜桃国自产| 538在线一区二区精品国产| 日韩一区二区不卡| 一区二区三区日韩欧美| 亚洲最大成人综合| 欧美巨大另类极品videosbest| 99国产精品久| 色激情天天射综合网| 亚洲日本免费电影| 亚洲精品一二三| 婷婷久久综合九色国产成人| 在线精品视频免费观看| 欧美私人免费视频| 国产一区日韩二区欧美三区| 久久久久久久久久久久久久久99 | 久久精品二区亚洲w码| 中文字幕一区二区三区在线不卡 | 日本美女一区二区| 亚洲视频图片小说| 国产精品一区久久久久| 欧美日韩和欧美的一区二区| 欧美军同video69gay| 亚洲国产成人精品视频| 成人a区在线观看| 日韩高清在线观看| 色综合久久88色综合天天6| 色综合色综合色综合| 91蜜桃在线免费视频| 欧美国产日韩在线观看| 日本网站在线观看一区二区三区| 一区二区三区电影在线播| 国产高清精品久久久久| 精品少妇一区二区三区视频免付费| 夜夜嗨av一区二区三区网页| 91免费视频大全| 在线播放亚洲一区| 亚洲午夜在线观看视频在线| 成人网在线免费视频| 91首页免费视频| 亚洲一区二区三区在线播放| proumb性欧美在线观看| 亚洲国产日韩精品| 欧美精选在线播放| 国产日韩欧美电影| 亚洲一区二区三区自拍| 一本到三区不卡视频| 久久青草欧美一区二区三区| 依依成人综合视频| 国产电影精品久久禁18| 中文字幕成人网| 成人av影视在线观看| 91免费看片在线观看| 亚洲欧洲成人精品av97| 国产一区二区电影| 久久精品夜色噜噜亚洲aⅴ| 午夜国产不卡在线观看视频| 国产激情一区二区三区桃花岛亚洲| 色婷婷av一区二区三区软件| 亚洲国产高清不卡| 不卡的av在线| 日本伊人色综合网| 日韩精品一区二区三区三区免费| 日韩精品电影一区亚洲| 欧美日韩一级二级| 韩国三级中文字幕hd久久精品| 一本大道综合伊人精品热热| 亚洲男人的天堂av| 欧美日韩国产小视频在线观看| 成人免费视频一区二区| 午夜电影久久久| 综合网在线视频| 26uuu色噜噜精品一区| 久久久久久久久99精品| 99久久免费精品| 91丝袜美女网| 日本一区二区三区在线观看| 日本成人中文字幕在线视频| 欧美精品一区二区三区很污很色的| 国产精品理伦片| 91精品国产综合久久婷婷香蕉 | 99精品国产视频| 国产成人啪午夜精品网站男同| 丝袜脚交一区二区| 国产91对白在线观看九色| 国产精品初高中害羞小美女文| 从欧美一区二区三区| 日本不卡不码高清免费观看| 欧美国产精品劲爆| 欧美三区在线观看| 在线中文字幕一区二区| 亚洲成av人片观看| av一区二区三区| 国产一区二区三区观看| av在线这里只有精品| 2020国产精品| 成人精品视频一区二区三区尤物| 亚洲国产精品黑人久久久| 欧美一级免费观看| 777午夜精品免费视频| 91精品国产欧美一区二区| 精品一区二区三区不卡| 91女神在线视频| 在线精品观看国产| 激情av综合网| 久久99精品久久久久婷婷| 欧美一区二区免费观在线|