愛(ài)飛狗技術(shù)架構(gòu)升級(jí)

2018年愛(ài)飛狗第一個(gè)版本上線(xiàn),運(yùn)營(yíng)到2019年中關(guān)閉宽档。爬蟲(chóng)以及數(shù)據(jù)一直沒(méi)有中斷,只是不想去做產(chǎn)品維護(hù)了而已庵朝。2020年底雌贱,自己重新將這個(gè)產(chǎn)品定位為自己的一個(gè)技術(shù)實(shí)踐的產(chǎn)物,作為一個(gè)試驗(yàn)田偿短,實(shí)驗(yàn)新的想法、新的工具馋没。好在云廠商大量的推出廉價(jià)的服務(wù)器資源昔逗,我購(gòu)買(mǎi)了2臺(tái)4核8G內(nèi)存的云服務(wù)器,使得愛(ài)飛狗重新起航有了新的基礎(chǔ)篷朵。

小程序升級(jí)

2018年寫(xiě)的小程序用的是微信當(dāng)年剛出來(lái)小程序不久寫(xiě)的勾怒,用的是原生的小程序的框架加上有贊的ZanUI(當(dāng)年的稱(chēng)呼)婆排。那是一套CSS框架,當(dāng)時(shí)也沒(méi)有小程序組件的機(jī)制笔链。多方對(duì)比段只,這在當(dāng)年也算是一個(gè)比較成熟的框架了。

到2020年底鉴扫,小程序開(kāi)發(fā)也非常的方便了赞枕,出現(xiàn)了很多的多端UI框架,包括Taro-UI坪创、騰訊的kbone等炕婶。為了跨平臺(tái)和H5兼容,這些框架基本上都使用和前端開(kāi)發(fā)一樣的工具莱预,例如使用typescript柠掂、react、mobx等框架依沮,使用npm build等生成小程序相關(guān)的代碼涯贞。從Demo等來(lái)看,一切看起來(lái)都很美好危喉。

Taro-UI看起來(lái)算是成熟度比較高的框架宋渔,所以嘗試將代碼進(jìn)行遷移。在2020年底姥饰,Taro-UI有新出不久的3.0版本傻谁,老版本也已經(jīng)進(jìn)入了維護(hù)狀態(tài)幽邓。但嘗試了一番以后發(fā)現(xiàn)了以下一些問(wèn)題:

  • build較為緩慢痕檬,微信小程序無(wú)法根據(jù)build后的生成的小程序源代碼重新刷新界面秕脓,只能自己手動(dòng)刷新襟士,顯得很笨拙凑耻。其實(shí)這種問(wèn)題在其他以npm build為構(gòu)建工具的地方也存在澄港。
  • 對(duì)react相關(guān)工具的template支持不好骡苞,配置上比較麻煩辽社。比如用了react+redux以后想換成mobx就比較麻煩费什。
  • 對(duì)于非Taro-UI之外的原生微信插件支持的不是很好钾恢,比如需要用到的Echarts,在Taro-UI上調(diào)試一直無(wú)法正常工作鸳址,只能在真機(jī)上實(shí)驗(yàn)瘩蚪。但是Echarts原生組件工作良好。
  • npm install的第三方庫(kù)不總是能夠用稿黍,原生程序里面用的好好的東西疹瘦,到這里就會(huì)遇到一些奇怪的問(wèn)題,而且不是太好解決巡球。
  • 文檔和相應(yīng)的版本不對(duì)應(yīng)言沐,有些解決方案針對(duì)的是老的版本邓嘹,在新的版本上不工作

在折騰了一段時(shí)間以后,慢慢的挫折感(莫非是自己太笨险胰。汹押。),還是放棄了Taro-UI起便。還原使用騰訊原生的小程序框架棚贾,重新整理了一下代碼,刪除了大量無(wú)用的代碼缨睡。CSS框架重新使用了有贊的Vant Weapp UI組件庫(kù)替換之前的CSS框架鸟悴。替換過(guò)程較為順利,節(jié)約了大量的時(shí)間奖年。

總結(jié)起來(lái)细诸,對(duì)于前端來(lái)講,精力有限陋守、業(yè)務(wù)不復(fù)雜的情況下震贵,還是選擇用騰訊自己原生的一套方案來(lái)得快,兼容性最好水评。

k8s服務(wù)器遷移

在k8s還不是那么容易安裝的前幾年猩系,愛(ài)飛狗的后端以及爬蟲(chóng)都是使用rancher來(lái)運(yùn)行容器的。后來(lái)有了k3s后中燥,發(fā)現(xiàn)在低配置的服務(wù)器上(1核2G)的機(jī)器上寇甸,也能順暢的使用k8s。k3s在長(zhǎng)期的運(yùn)維中也比較穩(wěn)定疗涉,偶爾會(huì)出現(xiàn)集群崩潰的情況拿霉,只需要重啟一下就好了。

為了學(xué)一下新的東西咱扣,我將k3s切換成了microk8s绽淘。然后安裝microk8s就遇到了滿(mǎn)滿(mǎn)的坑:

  • 國(guó)內(nèi)服務(wù)器上安裝的話(huà),由于它會(huì)安裝google上面的鏡像闹伪,但是國(guó)內(nèi)服務(wù)器永遠(yuǎn)拉不下來(lái)沪铭。解決方案有。
    • 手動(dòng)的將鏡像從其他地方下載并且推送到私有repo偏瓤,但這種方案比較麻煩杀怠。
    • 使用代理服務(wù)器。這里需要一個(gè)能夠訪(fǎng)問(wèn)國(guó)外的代理服務(wù)器厅克,然后將代理服務(wù)器配置到container-env文件中的http_proxy中即可赔退。當(dāng)k8s啟動(dòng)后,就可以將代理取消了
    • 新版本的microk8s的私有鏡像必須要配置到這里已骇,很多文檔寫(xiě)的是老的配置方案离钝。
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
        endpoint = [ "https://3laho3y3.mirror.aliyuncs.com", "http://f1361db2.m.daocloud.io", "https://mirror.ccs.tencentyun.com", "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry-1.docker.io" ]
  • 由于爬蟲(chóng)占用磁盤(pán)空間很快,所以需要不停的將文件移走褪储,一旦這個(gè)過(guò)程沒(méi)有做好卵渴,k8s服務(wù)器檢測(cè)到磁盤(pán)空間低以后會(huì)開(kāi)始清理image來(lái)嘗試釋放空間。這時(shí)候之前通過(guò)代理下載好的image就會(huì)被清除鲤竹,當(dāng)重新創(chuàng)建pod的時(shí)候浪读,這時(shí)候會(huì)由于找不到sandbox的image并且無(wú)法下載到鏡像(除非開(kāi)了代理)而導(dǎo)致整個(gè)集群的pod停掉。
  • 開(kāi)了代理以后辛藻,no_proxy似乎一直沒(méi)有生效碘橘,國(guó)內(nèi)的鏡像也走了代理,很慢吱肌。

除了這幾個(gè)坑意外痘拆,microk8s還算是穩(wěn)定,對(duì)資源占用也和k3s差不多氮墨。更好的是microk8s提供了更為標(biāo)準(zhǔn)化的組件和插件纺蛆,更容易進(jìn)行后期的維護(hù)。在遷移過(guò)程中规揪,k3s默認(rèn)是用的traefik而microk8s用的是nginx桥氏,所以需要一些簡(jiǎn)單的修改。

服務(wù)器選購(gòu)

之前爬蟲(chóng)的服務(wù)器一直放在國(guó)外猛铅,主要是考慮到價(jià)格相對(duì)比較便宜字支,2核4G的機(jī)器一個(gè)月150多元,能夠承受奸忽。但是這個(gè)服務(wù)器的性能就比較低下堕伪,爬蟲(chóng)會(huì)占用所有的CPU資源,導(dǎo)致k8s的集群不是很穩(wěn)定月杉。

雙十一大促的時(shí)候刃跛,華為云推出了4核8G 3年的服務(wù)器,5M的帶寬加上200G的硬盤(pán)苛萎,總價(jià)3080桨昙,算了下真的是白菜價(jià)了。華為云的服務(wù)器的速度非常的理想腌歉,網(wǎng)絡(luò)速度也很贊蛙酪。一般來(lái)講,出口5M是定死的翘盖,入帶寬一般是100M以上桂塞,所以作為爬蟲(chóng)或者APP服務(wù)器已經(jīng)非常的夠用。但是華為云的鏡像服務(wù)有一些同步的問(wèn)題馍驯,每次push到鏡像服務(wù)器中的鏡像阁危,第一次拉回的時(shí)候總會(huì)出現(xiàn)錯(cuò)誤玛痊,要等一些時(shí)間后才能夠拉到正確的鏡像。

后來(lái)又購(gòu)買(mǎi)了騰訊的4核8G 3年的服務(wù)器狂打,5M帶寬擂煞,50G硬盤(pán),總價(jià)3000趴乡,也算是白菜價(jià)对省。但是騰訊云的服務(wù)器不是很理想,CPU速度那些沒(méi)有什么問(wèn)題晾捏,主要的問(wèn)題在于帶寬蒿涎。騰訊的5M的出帶寬,提供的對(duì)等的入帶寬是10M惦辛。這就造成了拉docker image等非常的緩慢劳秋,和華為云、阿里云等的如帶寬相比裙品,騰訊就太摳了俗批。后來(lái)一個(gè)解決方案是將私有的鏡像直接放到騰訊云的鏡像服務(wù)器中,還好現(xiàn)階段沒(méi)有收費(fèi)市怎,速度也夠快了岁忘。最后的痛點(diǎn)是經(jīng)常性的丟包,華為云和騰訊云的服務(wù)器都在廣州区匠,然而騰訊云的服務(wù)器經(jīng)常丟包得根本無(wú)法登陸上去干像。不知道騰訊云的網(wǎng)絡(luò)是怎么搞的,反正用起來(lái)很不爽快驰弄。

后端代碼的重構(gòu)

以前為了學(xué)習(xí)Python麻汰,所以數(shù)據(jù)分析、后端代碼都是使用的Python技術(shù)棧戚篙。其中后端使用的是Flask寫(xiě)的五鲫,也沒(méi)有太大的問(wèn)題。
最近一次重構(gòu)就重寫(xiě)了業(yè)務(wù)邏輯岔擂,使用了Spring Boot位喂、Kotlin、Spring Boot Security來(lái)做乱灵。ETL代碼之前是用Java8寫(xiě)的塑崖,統(tǒng)一也遷移到了Kotlin。

后端架構(gòu)的重構(gòu)

這是以前設(shè)計(jì)的架構(gòu)痛倚,主要麻煩的地方在于由于當(dāng)時(shí)的服務(wù)器性能所限规婆,沒(méi)有將ETL的過(guò)程放到線(xiàn)上進(jìn)行,所以必須要將數(shù)據(jù)同步到本地的PC然后進(jìn)行離線(xiàn)計(jì)算,完成后再同步到線(xiàn)上的數(shù)據(jù)庫(kù)抒蚜。這就造成了需要家里面的電腦長(zhǎng)時(shí)間運(yùn)行掘鄙,在春節(jié)等期間維護(hù)非常的麻煩。

image.png

當(dāng)服務(wù)器性能和存儲(chǔ)不是一個(gè)問(wèn)題以后嗡髓,架構(gòu)也隨之改變?yōu)樵诰€(xiàn)數(shù)據(jù)同步通铲、在線(xiàn)ETL,就不用在本地PC做任何操作了器贩。

image.png

PS:Tips,這個(gè)圖片使用draw.io的vscode插件朋截,容易修改也容易存儲(chǔ)蛹稍,很贊)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市部服,隨后出現(xiàn)的幾起案子唆姐,更是在濱河造成了極大的恐慌,老刑警劉巖廓八,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奉芦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剧蹂,警方通過(guò)查閱死者的電腦和手機(jī)声功,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宠叼,“玉大人先巴,你說(shuō)我怎么就攤上這事∶岸” “怎么了伸蚯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)简烤。 經(jīng)常有香客問(wèn)我剂邮,道長(zhǎng),這世上最難降的妖魔是什么横侦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任挥萌,我火速辦了婚禮,結(jié)果婚禮上丈咐,老公的妹妹穿的比我還像新娘瑞眼。我一直安慰自己,他們只是感情好棵逊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布伤疙。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪徒像。 梳的紋絲不亂的頭發(fā)上黍特,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音锯蛀,去河邊找鬼灭衷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛旁涤,可吹牛的內(nèi)容都是我干的翔曲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼劈愚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瞳遍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起菌羽,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掠械,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后注祖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猾蒂,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年是晨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肚菠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡罩缴,死狀恐怖案糙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情靴庆,我是刑警寧澤时捌,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站炉抒,受9級(jí)特大地震影響奢讨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焰薄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一拿诸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧塞茅,春花似錦亩码、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)飒泻。三九已至,卻和暖如春吏廉,著一層夾襖步出監(jiān)牢的瞬間泞遗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工席覆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留史辙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓佩伤,卻偏偏與公主長(zhǎng)得像聊倔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子生巡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 團(tuán)隊(duì)新開(kāi)發(fā)的區(qū)域醫(yī)療平臺(tái)包含一個(gè)課件上傳與播放模塊方库,其實(shí)際的業(yè)務(wù)包含如下的步驟: 1. 縣級(jí)和鄉(xiāng)鎮(zhèn)衛(wèi)生院的醫(yī)生們通...
    Charles_linzc閱讀 2,078評(píng)論 0 0
  • [TOC] Docker容器平臺(tái)選型調(diào)研 編排選型 Swarm Swarm可以從一個(gè)Dockerfile來(lái)構(gòu)建鏡像...
    AllenWu閱讀 2,524評(píng)論 0 7
  • 一、基礎(chǔ)概念 二障斋、架構(gòu)單機(jī)架構(gòu)第一次架構(gòu)調(diào)整第二次架構(gòu)調(diào)整第三次架構(gòu)調(diào)整第四次架構(gòu)調(diào)整第五次架構(gòu)調(diào)整第六次架構(gòu)調(diào)整...
    習(xí)慣研究所所長(zhǎng)閱讀 570評(píng)論 0 1
  • 摘要 隨著云原生技術(shù)的發(fā)展和 5G 商用的到來(lái)垃环,邊緣計(jì)算隨“風(fēng)”而起。本文將從提升視頻播放體驗(yàn)和降低帶寬成本的兩個(gè)...
    邊緣計(jì)算社區(qū)閱讀 1,286評(píng)論 2 1
  • 推薦指數(shù): 6.0 書(shū)籍主旨關(guān)鍵詞:特權(quán)返敬、焦點(diǎn)遂庄、注意力、語(yǔ)言聯(lián)想劲赠、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析涛目,社會(huì)...
    Jenaral閱讀 5,720評(píng)論 0 5