作者:小傅哥 博客:https://
?沉淀、分享、成長,讓自己和他人都能有所收獲!?? ? 一、先看效果 二、再說流程 三、之后上線 四、系統(tǒng)介紹
于5.1啟動 ,耗時3個多月開發(fā)的 OpenAI 項目,終于到了上線對外的時候??赡芎芏嗷锇闀氲?,Github 不是有不少的開源項目嗎,為啥還自己做?
為啥??。嗯,好問題!因為我是一個程序員???????,我需要對各項技術(shù)的實現(xiàn)方案有深度的理解,我不能在工作或者面試中被提問的時候,說你去看開源項目吧。 此外大部分 Github 的開源項目主要以前端為主,并沒有一個前后端結(jié)合的開發(fā)。而實際上,當(dāng)我們真的需要在業(yè)務(wù)場景來使用時,就不只是前端頁面,還需要在后端做各項的控制和管理。而這樣的架構(gòu)設(shè)計,就勢必會涉及到;前后端分離 、前端工程架構(gòu) 、后端工程架構(gòu)(DDD) 、登錄授權(quán)鑒權(quán) 、大模型SDK實現(xiàn)(okhttp) 、流式異步響應(yīng)開發(fā)對接 、庫表字段索引精細設(shè)計 、API多渠道路由 、內(nèi)網(wǎng)穿透服務(wù)測試 、前后端鏡像打包 、docker-compose 服務(wù)部署和回滾策略 、公眾號驗簽配置 ,等等技術(shù)知識的運用。 所以,你跟開源項目學(xué)的是簡單的應(yīng)用,跟小傅哥學(xué)習(xí);學(xué)的是架構(gòu)設(shè)計的魅力 、學(xué)的是技術(shù)實現(xiàn)的巧妙 。學(xué)的是,讓你在晉升、述職、面試,時交流的底氣。那么現(xiàn)在小傅哥把這樣一個上線項目,拆分成一個個章節(jié)學(xué)習(xí),讓你也能具備這樣的能力。 一、先看效果體驗地址:openai.itedus.cn
關(guān)注小傅哥的公眾號【bugstack蟲洞?!炕貜?fù)【星球】也可以領(lǐng)取專屬優(yōu)惠券 | 加入即可學(xué)習(xí)星球的全套實戰(zhàn)項目(Lottery、API網(wǎng)關(guān)、ChatGPT、IM、組件開發(fā)、插件開發(fā)等) 二、再說流程當(dāng)一個項目引入后端能力以后,就可以擴展非常多的能力。而所有的控制都是在做用戶的行為處理,而這些行為就是業(yè)務(wù)需求。當(dāng)不同的碼農(nóng)面對相同的業(yè)務(wù),寫出的代碼可就不一樣了。所以小傅哥也是希望讓你能學(xué)習(xí)到怎么架構(gòu)和編碼出高質(zhì)量的代碼。 ?? 我告訴你,當(dāng)前的需求就是;公眾號掃碼獲取驗證碼登錄,登錄后訪問 OpenAI 服務(wù),訪問后需要根據(jù)是用戶綁定的APIKey還是系統(tǒng)APIKey分別調(diào)用,如果是系統(tǒng)APIKey則需要限制調(diào)用次數(shù),而用戶自己綁定的則不需要。此外調(diào)用的 OpenAI 模型和渠道不同,需要進行判斷和處理。那么這樣的代碼你想怎么寫??? 會不會寫出 if···else 的面條代碼? 如果你不想寫出面條代碼,那么就看看小傅哥給你設(shè)計的流程圖結(jié)構(gòu)。如下; 
- 首先,在這套流程中,小傅哥將核心業(yè)務(wù)和支撐核心業(yè)務(wù)的分支流程進行拆解。一切的分支都是為了支撐主干流程運行,而分支的存在和去除,都應(yīng)以模塊插件的方式進行使用。這樣會更好的維護和使用。
- 之后,我想說。寫代碼就像擦屁屁的紙,80%的面積都是保護手的。所以這除了那20%的核心點以外,要讓那支撐系統(tǒng)運行的 80% 分支邏輯,采用設(shè)計模式進行進行分治和抽象的設(shè)計實現(xiàn)。
- 所以,這里有了路由模塊和規(guī)則引擎的使用。因為他們可以更好的被添加和移除。而每次變動的時候,也都是固定范圍的變動,不會讓整體流程都陷入測試風(fēng)險中。
所以,你還覺得寫代碼就只是if···else嗎,這哪是寫代碼,這TM是老子在用代碼構(gòu)建一個世界! 三、之后上線一個系統(tǒng)的上線對外,會有太多太多的細節(jié)要考慮。而這樣的內(nèi)容,只有實踐了才能真的吸收這些知識。尤其是出一些事故時,都是留下一個個技術(shù)成長的故事。 
那么我們現(xiàn)在以 OpenAI 個人上線對外一個項目的背景進行思考 ??,看看會有哪些點需要處理; - 技術(shù)棧的使用,不宜過多。要盡量減少運維成本。比如你可以使用 Guava 替代 Redis 使用。
- 數(shù)據(jù)庫可以考慮單獨購買,避免數(shù)據(jù)丟失。但同時也需要考慮,如果數(shù)據(jù)丟失,用戶可以根據(jù)自己的加密卡Key進行重新綁卡。
- 因為本身服務(wù)器的成本就比較高,所以盡量控制被白piao。比如任何一個Key都可以在你部署的服務(wù)上使用,其實意義不大??梢酝ㄟ^只授權(quán)加密 Key 的方式進行使用。
- 此外要考慮,多種的調(diào)用渠道,如果某個掛了。要能替換對應(yīng)渠道的訪問地址,所以還需要把渠道對應(yīng)的地址做成可配置的,之后用戶寫入庫里,寫入的只是渠道碼這樣就可以方便替換。
- 打包部署上線,一定要先在本地測試驗證,驗證完全沒問題在上線。否則你就單臺服務(wù)器沒有負載能力的情況下,基本就要掛了。
- 如果你在本地測試仍不放心,可以修改一個端口和一個 docker-compose-pre-v1.0.yml 進行部署測試。可千萬別修改原來正式對外的 compose 直接部署,這會出問題的。
- 要有一個可以回滾的處理,可以配置 docker-compose-prod-v1.0.yml 版本的添加。如果1.1版本出問題,可以快速使用 1.0 版本重新部署。
- 數(shù)據(jù)庫表的使用,要注意字段的設(shè)計,索引的設(shè)計,否則就你那一卡拉米資源的數(shù)據(jù)庫配置,真的可能因為你沒有索引被打掛。此外可得把用戶名和密碼設(shè)計的強悍一些,別被比特幣勒索。
- 定期導(dǎo)出 MySQL 數(shù)據(jù)庫表數(shù)據(jù),或者有自動備份功能的數(shù)據(jù)庫服務(wù)器也是可以的。
- 因為你的代碼,確實是你的代碼。這可不是公司的,也不是有別人參與的。所以為了能在迭代或者處理問題的時候,快速解決。一定是要非常好的架構(gòu),非常清晰的編碼。
四、系統(tǒng)介紹加入小傅哥的星球【碼農(nóng)會鎖】,就可以完整的學(xué)習(xí)此套項目。另外星球還有,Lottery、API網(wǎng)關(guān)、IM、組件開發(fā)、插件開發(fā)等項目一起學(xué)習(xí)。 小傅哥帶著大家寫的項目,從來不是湊數(shù)項目,也從不寫一堆的 CRUD 代碼。而是按照互聯(lián)網(wǎng)企業(yè)級中所開發(fā)項目的模式進行架構(gòu)、設(shè)計和實現(xiàn)。所以你跟著小傅哥學(xué)習(xí),學(xué)的是編程的思維和編碼的能力。如下是系統(tǒng)的架構(gòu)分層; 
- 以上內(nèi)容,分別包括;API、WEB、SDK,以及 Dev-Ops 部署相關(guān)的內(nèi)容。
- 所以這套項目的學(xué)習(xí),學(xué)的是前端、后端、架構(gòu)、部署、運維等一整套東西,非常具有含金量。
以下是整套課程的目錄結(jié)構(gòu),如果你想學(xué)習(xí)一定仔細看看,千萬別錯過!
|