黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Python的后端架構(gòu)演進(jìn)過程

Python的后端架構(gòu)演進(jìn)過程

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-05 21:21:50 1699190510

架構(gòu)的演進(jìn)經(jīng)歷了4個(gè)大的階段:1.MVC2.服務(wù)拆分3.微服務(wù)架構(gòu)4.領(lǐng)域驅(qū)動設(shè)計(jì).

1.MVC

項(xiàng)目剛開始的時(shí)候,后端同事不超過5個(gè),這個(gè)階段主要的工作是實(shí)現(xiàn)產(chǎn)品的原型,沒有太多的考慮架構(gòu),使用Django來快速實(shí)現(xiàn)功能,DB的表結(jié)構(gòu)設(shè)計(jì)好之后,抽象出功能View,由于產(chǎn)品設(shè)計(jì)也很不完善,后端需要很多的預(yù)留設(shè)計(jì),避免產(chǎn)品邏輯的變更帶來整個(gè)表結(jié)構(gòu)的變動,在這個(gè)階段代碼上最重要的是確定適合團(tuán)隊(duì)的代碼規(guī)范,代碼檢查規(guī)則.

整體上架構(gòu)如上圖,Nginx負(fù)責(zé)負(fù)載均衡,分發(fā)流量到多個(gè)Django服務(wù),Django處理邏輯,需要異步任務(wù)就交給Celery,然后數(shù)據(jù)量比較大的地方使用Redis做緩存.同時(shí)還有實(shí)時(shí)消息通知的需要使用了NginxPushModule.

問題與優(yōu)化方式:

Django并發(fā)性能差使用uWSGIMaster+Worker配合gevent攜程支持高并發(fā)

Redis連接數(shù)過多使用redis-py自帶的連接池來實(shí)現(xiàn)連接復(fù)用

MySQL連接數(shù)過多使用djorm-ext-pool連接池復(fù)用連接

Celery配置gevent支持并發(fā)任務(wù)

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

2.服務(wù)拆分

隨著后端團(tuán)隊(duì)的壯大,分給每個(gè)同事的需求也越來越細(xì),如果繼續(xù)在一個(gè)工程里面開發(fā)所有的代碼,維護(hù)起來的代價(jià)太高,而我們的上一個(gè)架構(gòu)中在Django里面已經(jīng)按模塊劃分了一個(gè)個(gè)app,app內(nèi)高類聚,app之間低耦合,這就為服務(wù)的拆分帶來了便利.拆分的過程沒有遇到太大的問題,初期的拆分只是代碼的分離,把公用的代碼抽離出來實(shí)現(xiàn)一個(gè)公用的Python庫,數(shù)據(jù)庫,Redis還是共用,隨著負(fù)載的增加,數(shù)據(jù)庫也做了多實(shí)例.

如上圖,服務(wù)之間盡量避免相互調(diào)用,需要交互的地方采用http請求的方式,內(nèi)網(wǎng)的調(diào)用使用hosts指向內(nèi)網(wǎng)地址.

問題與優(yōu)化方式:

NginxPushModule由于長時(shí)間沒有維護(hù),長連接最大數(shù)量不夠,使用Tornado+ZeroMQ實(shí)現(xiàn)了tormq服務(wù)來支撐消息通知

服務(wù)之間的調(diào)用采用http的方式,并且要求有依賴的服務(wù)主機(jī)配置hosts指向被調(diào)用的地址,這樣帶來的維護(hù)上的不方便.以及在調(diào)用鏈的過程中沒有重試,錯(cuò)誤處理,限流等等的策略,導(dǎo)致服務(wù)可用性差.隨著業(yè)務(wù)拆分,繼續(xù)使用Nginx維護(hù)配置非常麻煩,經(jīng)常因?yàn)樾薷腘ginx的配置引發(fā)調(diào)用錯(cuò)誤.每一個(gè)服務(wù)都有一個(gè)完整的認(rèn)證過程,認(rèn)證又依賴于用戶中心的數(shù)據(jù)庫,修改認(rèn)證時(shí)需要重新發(fā)布多個(gè)服務(wù).

3.微服務(wù)架構(gòu)

首先是在接入層引入了基于OpenResty的KongAPIGateway,定制實(shí)現(xiàn)了認(rèn)證,限流等插件.在接入層承接并剝離了應(yīng)用層公共的認(rèn)證,限流等功能.在發(fā)布新的服務(wù)時(shí),發(fā)布腳本中調(diào)用Kongadminapi注冊服務(wù)地址到Kong,并加載api需要使用插件.

為了解決相互調(diào)用的問題,維護(hù)了一個(gè)基于gevent+msgpack的RPC服務(wù)框架doge,借助于etcd做服務(wù)治理,并在rpc客戶端實(shí)現(xiàn)了限流,高可用,負(fù)載均衡這些功能.

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

餓了么維護(hù)一個(gè)純Python實(shí)現(xiàn)的thrift協(xié)議框架thriftpy,并提供很多配套的工具,如果團(tuán)隊(duì)足夠大,這一套RPC方案其實(shí)是合適的,但是我們的團(tuán)隊(duì)人手不足,水平參差不齊,很難推廣這一整套學(xué)習(xí)成本高昂的方案.最終我們開發(fā)了類Duboo的RPC框架doge,代碼主要參考了weibo開源的motan.

4.領(lǐng)域驅(qū)動設(shè)計(jì)

在這一架構(gòu)中我們嘗試從應(yīng)用服務(wù)中抽離出數(shù)據(jù)服務(wù)層,每一個(gè)數(shù)據(jù)服務(wù)包含一個(gè)或多個(gè)界限上下文,界限上下文類只有一個(gè)聚合根來暴露出RPC調(diào)用的方法.數(shù)據(jù)服務(wù)不依賴于應(yīng)用服務(wù),應(yīng)用服務(wù)可以依賴多個(gè)數(shù)據(jù)服務(wù).有了數(shù)據(jù)服務(wù)層,應(yīng)用就解耦了相互之間的依賴,高層服務(wù)只依賴于底層服務(wù).

在我離職時(shí)領(lǐng)域驅(qū)動設(shè)計(jì)還在學(xué)習(xí)設(shè)計(jì)階段,還沒有落地,但是我相信前公司的后端架構(gòu)一定會往這個(gè)方向繼續(xù)演進(jìn).

總結(jié)

架構(gòu)的設(shè)計(jì),技術(shù)的選型,不能完全按照流行的技術(shù)走,最終還是服務(wù)于產(chǎn)品,服務(wù)于客戶的需求.設(shè)計(jì)過程中由于團(tuán)隊(duì),人員的結(jié)構(gòu)問題,有很多的妥協(xié)之處,如何在妥協(xié)中找到最優(yōu)解才是最大的挑戰(zhàn).

以上內(nèi)容為大家介紹了Python的后端架構(gòu)演進(jìn)過程,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.e7g2kmi.cn/

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python標(biāo)準(zhǔn)庫主要有哪些功能?

眾所周知,Python標(biāo)準(zhǔn)庫非常龐大,可以幫助處理各種各樣的工作,從而提高效率、節(jié)省成本。那么你對Python標(biāo)準(zhǔn)庫了解多少呢?你知道Python標(biāo)準(zhǔn)庫...詳情>>

2023-11-05 23:38:38
用Python編寫代碼時(shí)有哪些有用的技巧?

不知道吧,使用Python編寫代碼時(shí),有一些小技巧可以大幅度提升我們的工作效率和開發(fā)效率,而且這些技巧很簡單,只需要在編寫代碼時(shí)稍微注意一下...詳情>>

2023-11-05 22:48:14
python基礎(chǔ)入門之設(shè)計(jì)URL方案

DjangoURL分發(fā)系統(tǒng)使用了正則表達(dá)式配置模塊,它可以將URL字符串模式映射為Python方法views。這個(gè)系統(tǒng)允許URL與底層代碼完全脫節(jié),從而實(shí)現(xiàn)最大...詳情>>

2023-11-05 22:37:26
Python的編程語言

一、Python編程語言的優(yōu)點(diǎn)有哪些?1.Python是一種腳本語言,寫好了就可以直接運(yùn)行,省去了編譯鏈接的麻煩,對于需要多動手實(shí)踐的初學(xué)者而言,也...詳情>>

2023-11-05 22:33:50
python五大異常處理機(jī)制

??我們明白了什么是異常后,那么發(fā)現(xiàn)異常后怎么處理,便是我們接下來要解決的問題。這里將處理異常的方式總結(jié)為五種。1、默認(rèn)異常處理機(jī)制“...詳情>>

2023-11-05 22:15:50
中文字幕97| 四虎久久精品国产| 国产网站免费在线观看| 日韩av成人| 久久久成人网| 精品久久久久久影院免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产91丝袜在线播放0| 可以免费在线看黄的网站| 香蕉视频亚洲一级| 欧美另类videosbestsex高清| 国产综合91天堂亚洲国产| 可以在线看黄的网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99色吧| 一级片免费在线观看视频| 九九免费高清在线观看视频| 日韩中文字幕在线亚洲一区| 日本免费看视频| 国产91视频网| 四虎影视久久久免费| 久久国产精品自由自在| 色综合久久天天综合绕观看| 国产伦精品一区二区三区在线观看| 91麻豆国产| 亚洲爆爽| 欧美大片一区| 欧美日本韩国| 精品视频在线看| 午夜欧美成人久久久久久| 欧美激情影院| 国产网站在线| 久久成人亚洲| 欧美电影免费看大全| 九九干| 欧美一级视频免费| 国产国语在线播放视频| 中文字幕97| 亚洲天堂在线播放| 日韩在线观看视频网站| 国产成人欧美一区二区三区的| 精品国产一区二区三区久久久狼 | 韩国妈妈的朋友在线播放| 国产极品精频在线观看| 成人在激情在线视频| 天天做日日爱| 青草国产在线| 91麻豆精品国产自产在线观看一区 | 国产91丝袜在线播放0| 日本在线不卡视频| 二级片在线观看| 精品毛片视频| 国产网站麻豆精品视频| 精品久久久久久中文| 精品视频在线看| 四虎影视精品永久免费网站| 欧美大片aaaa一级毛片| 91麻豆国产福利精品| 成人免费观看网欧美片| 毛片的网站| 国产欧美精品| 韩国毛片 免费| 黄视频网站免费观看| 四虎影视精品永久免费网站| 91麻豆国产级在线| 亚洲天堂免费观看| 欧美激情一区二区三区在线播放| 91麻豆爱豆果冻天美星空| 四虎影视久久久免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产伦精品一区二区三区无广告| 日日夜夜婷婷| 青草国产在线| 999精品在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99久久精品国产高清一区二区| 99久久精品国产免费| 精品国产一区二区三区久久久蜜臀 | 国产一区免费观看| 亚洲 欧美 91| 国产91精品一区二区| 欧美激情伊人| 欧美国产日韩在线| 欧美激情在线精品video| 韩国毛片 免费| 精品国产亚洲一区二区三区| 日本免费乱理伦片在线观看2018| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 毛片高清| 久久99这里只有精品国产| a级毛片免费观看网站| 青草国产在线| 国产91素人搭讪系列天堂| 精品国产一区二区三区精东影业| 国产一区免费观看| 亚洲天堂在线播放| 999精品在线| 日本伦理片网站| 91麻豆国产福利精品| 日韩专区一区| 久久成人性色生活片| 美国一区二区三区| a级精品九九九大片免费看| 亚欧乱色一区二区三区| 国产一区二区精品久久| 久久国产精品自线拍免费| 青青青草影院| 欧美1卡一卡二卡三新区| 99久久精品费精品国产一区二区| 国产成人精品综合在线| 九九干| 国产不卡高清在线观看视频| 国产网站免费视频| 精品在线视频播放| 成人免费网站久久久| 欧美另类videosbestsex高清| 亚欧乱色一区二区三区| 国产精品1024永久免费视频 | 欧美一级视频免费| 欧美大片aaaa一级毛片| 国产高清在线精品一区二区 | 999久久66久6只有精品| 国产高清视频免费| 一级女性大黄生活片免费| 欧美激情一区二区三区在线| 97视频免费在线观看| 午夜欧美成人久久久久久| 黄色免费网站在线| 999精品在线| 午夜久久网| 九九热国产视频| 黄色免费三级| 97视频免费在线观看| 台湾毛片| 国产成人女人在线视频观看| 黄视频网站免费| 精品国产一区二区三区精东影业| 亚州视频一区二区| 亚飞与亚基在线观看| 欧美一级视| 免费一级片在线观看| 国产伦久视频免费观看 视频| 日本在线www| 99久久精品费精品国产一区二区| 国产极品白嫩美女在线观看看| 国产国语对白一级毛片| 精品国产一区二区三区久久久蜜臀 | 一级女性全黄生活片免费| 99久久精品国产高清一区二区 | 国产不卡福利| 国产国产人免费视频成69堂| 国产视频一区二区在线观看| 久久精品免视看国产成人2021| 精品久久久久久免费影院| 韩国三级视频在线观看| 亚洲第一视频在线播放| 久久精品店| 色综合久久手机在线| 欧美激情在线精品video| 97视频免费在线观看| 日韩在线观看视频黄| 欧美国产日韩在线| 色综合久久天天综线观看| 欧美电影免费| 欧美一区二区三区在线观看| 国产麻豆精品| 亚欧乱色一区二区三区| 国产一区二区精品尤物| 国产a免费观看| 国产一区二区精品久| 日韩中文字幕一区| 国产a免费观看| 日韩一级精品视频在线观看| 国产高清在线精品一区a| 亚洲 男人 天堂| 国产视频在线免费观看| 国产麻豆精品| 日韩中文字幕一区二区不卡| 亚洲精品久久久中文字| 韩国毛片免费| 麻豆网站在线看| 天堂网中文字幕| 久久精品店| 黄视频网站免费观看| 久久国产精品只做精品| 欧美另类videosbestsex久久| 精品国产亚洲一区二区三区| 欧美爱爱动态| 欧美一级视频免费观看| 91麻豆国产福利精品| 精品国产香蕉在线播出 | 国产视频久久久久| 国产精品自拍亚洲| 美女免费毛片| 日韩专区在线播放| 黄色免费三级| 91麻豆tv| 久久福利影视| 天天做日日爱| 精品视频免费在线|