婷婷综合国产,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
    懂色一区二区三区免费观看| 91成人在线免费观看| www.成人在线| 欧美美女视频在线观看| 国产亚洲欧美日韩日本| 亚洲成a人在线观看| 日韩主播视频在线| 91原创在线视频| 国产女人水真多18毛片18精品视频| 亚洲欧美区自拍先锋| 成人涩涩免费视频| 日韩欧美中文一区二区| 亚洲高清不卡在线观看| 色综合久久中文综合久久牛| 国产欧美日韩在线看| 国产乱一区二区| 欧美mv和日韩mv国产网站| 亚洲成人三级小说| 欧美日韩精品一区二区三区四区 | 久久久欧美精品sm网站| 蜜臀av亚洲一区中文字幕| 欧美日韩国产大片| 亚州成人在线电影| 欧美三级日本三级少妇99| 亚洲国产sm捆绑调教视频| 国产成人在线视频播放| 中文字幕免费在线观看视频一区| 国产成人精品在线看| 国产精品美女久久久久久久久久久| 成人亚洲一区二区一| 国产精品成人一区二区艾草| 97aⅴ精品视频一二三区| 亚洲欧美日韩一区| 日本精品一区二区三区高清 | 激情五月激情综合网| 久久精品视频免费| 成人黄色一级视频| 亚洲国产日韩精品| 欧美一区二区成人6969| 国产成人欧美日韩在线电影| 国产精品色哟哟| 欧美日韩一区二区三区四区| 日本成人在线电影网| 精品国产伦理网| 9i看片成人免费高清| 日本怡春院一区二区| 久久精子c满五个校花| 国产高清视频一区| 一区二区三区在线观看欧美 | 国产一区二区三区综合| 国产精品久久99| 欧美一卡二卡在线| 风间由美一区二区三区在线观看| 亚洲自拍另类综合| 久久影院午夜片一区| 欧美一级欧美三级| 国产精品99久久久久| 亚洲成人精品在线观看| 欧美极品另类videosde| 丰满放荡岳乱妇91ww| 视频在线观看91| 亚洲天堂2014| 久久奇米777| 91国产成人在线| 国内精品写真在线观看| 一区二区国产视频| 欧美特级限制片免费在线观看| 日韩av一区二区在线影视| 亚洲国产岛国毛片在线| 精品免费一区二区三区| 欧美影院午夜播放| 一本大道av一区二区在线播放 | 亚洲精品ww久久久久久p站| 精品国产污污免费网站入口 | 色婷婷精品久久二区二区蜜臂av| 一区二区三区成人在线视频| 精品国产亚洲在线| 777午夜精品免费视频| 亚洲精品国产第一综合99久久| 久久久久成人黄色影片| 国产亚洲精品超碰| 亚洲素人一区二区| 天天做天天摸天天爽国产一区| 天天综合日日夜夜精品| 久久99九九99精品| 99精品1区2区| 日韩欧美国产1| 国产喂奶挤奶一区二区三区| 亚洲视频一区二区免费在线观看| 午夜精品福利一区二区三区av| 蜜桃传媒麻豆第一区在线观看| 久久国产乱子精品免费女| 福利91精品一区二区三区| 一本久道久久综合中文字幕| 91精品国产福利在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩精品成人一区二区在线| 精品一区二区三区免费毛片爱 | 国产成人免费xxxxxxxx| 国产精品热久久久久夜色精品三区 | 日本欧美韩国一区三区| 国产丶欧美丶日本不卡视频| 91精品91久久久中77777| 精品国产网站在线观看| 亚洲精品成人a在线观看| 免费人成在线不卡| 色香色香欲天天天影视综合网| 欧美电影免费观看高清完整版在线| 亚洲免费在线视频| 国产精品综合在线视频| 777色狠狠一区二区三区| 中文字幕亚洲一区二区av在线| 精品亚洲欧美一区| 欧美精品欧美精品系列| 亚洲另类在线视频| 综合欧美亚洲日本| 国产在线播放一区| 91精品国产综合久久婷婷香蕉| 亚洲伦在线观看| 美女脱光内衣内裤视频久久影院| 免费人成在线不卡| 在线视频欧美精品| 久久品道一品道久久精品| 日韩免费一区二区三区在线播放| 国产精品久久久久永久免费观看| 免费欧美高清视频| 欧美日韩亚洲不卡| 一个色在线综合| 91亚洲精品久久久蜜桃网站| 久久久久综合网| 精品在线亚洲视频| 日韩精品专区在线| 午夜欧美电影在线观看| av男人天堂一区| 亚洲欧洲色图综合| 成人黄色国产精品网站大全在线免费观看| 日韩欧美综合在线| 欧美大肚乱孕交hd孕妇| 日本韩国精品在线| 亚洲免费电影在线| 色综合天天综合在线视频| 97成人超碰视| 91精品欧美福利在线观看| 中文字幕国产精品一区二区| 欧美欧美欧美欧美| 亚洲视频狠狠干| 中文字幕成人网| 成人国产精品视频| 欧美激情在线看| 91浏览器在线视频| 一区二区三区中文字幕| 日本二三区不卡| 亚洲午夜免费福利视频| 久久精品国产在热久久| 日韩免费性生活视频播放| 激情六月婷婷久久| 中文字幕中文字幕一区二区| 色综合久久九月婷婷色综合| 亚洲sss视频在线视频| 精品福利视频一区二区三区| 国产福利一区二区三区在线视频| 国产精品免费网站在线观看| 91国在线观看| 久久99国产精品免费| 国产精品热久久久久夜色精品三区| 91色乱码一区二区三区| 首页国产欧美日韩丝袜| 亚洲国产电影在线观看| 欧美精品在线视频| 国产不卡一区视频| 日韩中文欧美在线| 国产精品人成在线观看免费 | 麻豆成人在线观看| 国产精品入口麻豆原神| 欧美日本在线一区| www..com久久爱| 日韩电影在线观看一区| 中文字幕不卡在线观看| 欧美高清你懂得| www.成人网.com| 韩国三级中文字幕hd久久精品| 亚洲卡通动漫在线| 日韩免费视频线观看| 在线观看日韩一区| 高清国产一区二区| 美女网站色91| 婷婷六月综合网| 自拍偷拍欧美精品| 久久精品男人的天堂| 91精品国产一区二区| 欧美优质美女网站| 97精品电影院| 精品国产精品网麻豆系列| 欧美人与z0zoxxxx视频| 99久久精品免费| 国产原创一区二区三区| 日韩电影免费在线| 亚洲影院免费观看| 亚洲靠逼com| 亚洲精品欧美专区|