新聞中心
我們在微服務(wù)之間共享數(shù)據(jù)庫時(shí)犯下的錯(cuò)誤
作者:翻譯:崔婧雯 2015-10-27 10:10:01
云計(jì)算 如何在微服務(wù)之間共享使用數(shù)據(jù)庫?本文介紹了一個(gè)該領(lǐng)域很容易犯錯(cuò)的架構(gòu)問題,并且提出了解決方案和反思。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供鉛山網(wǎng)站建設(shè)、鉛山做網(wǎng)站、鉛山網(wǎng)站設(shè)計(jì)、鉛山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、鉛山企業(yè)網(wǎng)站模板建站服務(wù),10余年鉛山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
如何在微服務(wù)之間共享使用數(shù)據(jù)庫?本文介紹了一個(gè)該領(lǐng)域很容易犯錯(cuò)的架構(gòu)問題,并且提出了解決方案和反思。
幾年前,我是一個(gè)團(tuán)隊(duì)的***開發(fā)人員,該團(tuán)隊(duì)為客戶端開發(fā)Java web應(yīng)用程序。本文里我們稱之為“項(xiàng)目A”。我們在客戶現(xiàn)場構(gòu)建web應(yīng)用,還有其他團(tuán)隊(duì)在相關(guān)項(xiàng)目上共同工作。因?yàn)槲覀冊陧?xiàng)目早期溝通合作一直很愉快深入,所以會定期在團(tuán)隊(duì)間交換軟件的架構(gòu)思想。
一天,一個(gè)新項(xiàng)目(項(xiàng)目B)啟動了。該項(xiàng)目會由另外一個(gè)團(tuán)隊(duì)完成。我認(rèn)為在這個(gè)新項(xiàng)目中我們也能有所貢獻(xiàn),我們將項(xiàng)目A的記錄用戶,角色和權(quán)限的通用認(rèn)證的數(shù)據(jù)庫schema共享給了項(xiàng)目B。最終,這兩個(gè)項(xiàng)目都是使用相同用戶數(shù)據(jù)庫的內(nèi)部web應(yīng)用程序。對了,還忘記說一點(diǎn),這些應(yīng)用程序沒有中央的用戶數(shù)據(jù)庫 -- 每個(gè)新項(xiàng)目都是從頭開始的。我們發(fā)現(xiàn)通過共享已有的基礎(chǔ)架構(gòu)和***實(shí)踐,不僅僅可以節(jié)省開發(fā)時(shí)間,而且還能夠節(jié)省很多客戶支持的時(shí)間,因?yàn)樗麄儾恍枰幚韱为?dú)的用戶目錄了。
項(xiàng)目進(jìn)展順利,第二個(gè)項(xiàng)目使用單獨(dú)的數(shù)據(jù)庫用戶賬號訪問我們的數(shù)據(jù)庫表,這樣兩個(gè)項(xiàng)目可以隔離開從而避免混亂。
一段時(shí)間之后。。。
畢竟存儲用戶,角色和權(quán)限不是什么難事。大概一年后,我們計(jì)劃開發(fā)項(xiàng)目A的新版本。我們都很興奮,因?yàn)橛袡C(jī)會可以將項(xiàng)目A中工作不太好的地方改進(jìn),同時(shí)保留好的功能。我們也改進(jìn)了一些項(xiàng)目A里工作得還可以的部分 -- 其中,包括改進(jìn)了存儲用戶,角色和權(quán)限的數(shù)據(jù)庫表的schema。老實(shí)說,當(dāng)時(shí)根本沒有想到會影響項(xiàng)目B。
當(dāng)然,很快項(xiàng)目B就崩潰了。我們的錯(cuò)誤之處在于給了項(xiàng)目B直接訪問數(shù)據(jù)庫的權(quán)限。不僅僅就現(xiàn)在的標(biāo)準(zhǔn)而言,就算是根據(jù)以前的標(biāo)準(zhǔn),正確的決定也是去創(chuàng)建一個(gè)單獨(dú)的認(rèn)證服務(wù),來共享通用的API,而不是直接共享數(shù)據(jù)庫訪問。
還有更多的。。。
因此,我們犯了一個(gè)嚴(yán)重的架構(gòu)錯(cuò)誤,但是這里還有另外一個(gè)問題。具有諷刺意味的是,項(xiàng)目B使用的人不多。當(dāng)時(shí)要求項(xiàng)目B的團(tuán)隊(duì)都沒怎么使用項(xiàng)目B。這個(gè)項(xiàng)目就一直停滯著,可以使用,但一直沒有正式啟用。因此在兩周之后才有人發(fā)現(xiàn)項(xiàng)目B不工作了。
在***個(gè)可憐的用戶報(bào)告出問題的時(shí)候,我們的開發(fā)人員已經(jīng)到其他項(xiàng)目上工作去了。在做問題定位分析的時(shí)候,我們檢查了錯(cuò)誤日志,嘗試找出是什么問題?,F(xiàn)在來看,我們當(dāng)時(shí)沒有規(guī)劃精細(xì)的監(jiān)控方案,能夠自動監(jiān)測到應(yīng)用程序的問題,這也是失誤決策的一部分。
雖然這次事故聽上去很古老,但是我真的希望大家能夠從中學(xué)習(xí)到經(jīng)驗(yàn)教訓(xùn)。一定要確保通過穩(wěn)定的API來訪問數(shù)據(jù)庫,從而將簡單的數(shù)據(jù)庫轉(zhuǎn)變?yōu)榉?wù),也使得共享使用更為容易。并且確保正確監(jiān)控應(yīng)用程序和服務(wù)。圍繞API構(gòu)建的環(huán)境會長期保持基礎(chǔ)架構(gòu)的動態(tài)性。監(jiān)控則能確保能夠有效控制日益增長的復(fù)雜度。
我期望這篇文章的問題能夠在你在Eclipse IDE里打開File菜單,選擇Export as .war來開啟部署之旅的時(shí)候就對你有所啟示。
名稱欄目:我們在微服務(wù)之間共享數(shù)據(jù)庫時(shí)犯下的錯(cuò)誤
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/dpeiiip.html


咨詢
建站咨詢
