代碼規(guī)范 包名請(qǐng)用單數(shù) 資源名稱一般用單數(shù) 資源URL用復(fù)數(shù) 整體變量和方法的命名請(qǐng)使用駝峰規(guī)范 使用lombok,取代Getter,Setter和toString 實(shí)體可以...
代碼規(guī)范 包名請(qǐng)用單數(shù) 資源名稱一般用單數(shù) 資源URL用復(fù)數(shù) 整體變量和方法的命名請(qǐng)使用駝峰規(guī)范 使用lombok,取代Getter,Setter和toString 實(shí)體可以...
分層架構(gòu)是運(yùn)用最為廣泛的架構(gòu)模式, 幾乎每個(gè)軟件系統(tǒng)都需要通過層來隔離不同的關(guān)注點(diǎn),以此應(yīng)對(duì)不同的需要變化,使得這種變化可以獨(dú)立進(jìn)行,此外,分層架構(gòu)模式還可以用于隔離業(yè)務(wù)復(fù)雜...
我們常常在開發(fā)中,需要連接數(shù)據(jù)庫,然而數(shù)據(jù)庫的安全組,一般都是受限制的(為了做網(wǎng)絡(luò)隔離,只有特定的網(wǎng)段能夠訪問),比較好的做法就是通過跳板機(jī)或者堡壘機(jī)來做代理,以下就是如何在...
背景 如果只是在一臺(tái)主機(jī)或者虛擬機(jī)上面運(yùn)行一個(gè)容器,那么Docker命令行就足夠了,e.g: docker run xxximage。 但是如果需要管理一個(gè)100X的容器集群...
背景 根據(jù)一份報(bào)告顯示,大約80%的安全問題發(fā)生在應(yīng)用層,但是在應(yīng)用層的投入相對(duì)匱乏。 造成上面的原因很多,其中比較突出和普遍的原因就是研發(fā)團(tuán)隊(duì)沒有足夠的安全意識(shí),常常把安全...
背景 前段時(shí)間,做了一個(gè)關(guān)于如何集成Office365的調(diào)研,探索如何將它集成到應(yīng)用里面,方便多人的協(xié)同工作,這種應(yīng)用場(chǎng)景特別在內(nèi)部審計(jì)平臺(tái)使用特別多,一些文檔需要被不同角色...
戰(zhàn)術(shù)設(shè)計(jì) 在DDD中,分兩部分,戰(zhàn)略設(shè)計(jì)和戰(zhàn)術(shù)設(shè)計(jì),戰(zhàn)略設(shè)計(jì)很好的幫助我們理清問題域,劃分服務(wù),具體可參見: http://www.itdecent.cn/p/96801c...
背景 很多團(tuán)隊(duì)都在構(gòu)建API,并且聲稱自己團(tuán)隊(duì)創(chuàng)建的API都是足夠的RESTful,今天我們簡單聊下RESTful API相關(guān)的一些概念和設(shè)計(jì)實(shí)踐。 定義 REST(Repr...
背景 隨著微服務(wù)的興起,我們強(qiáng)調(diào)業(yè)務(wù)(服務(wù))進(jìn)程的隔離性,且為了保證服務(wù)的高可用和高性能,避免單點(diǎn)事故,我們常常都會(huì)通過冗余的方式,會(huì)啟多個(gè)進(jìn)程來提供相同的服務(wù)。那么在基礎(chǔ)設(shè)...
Mysql存儲(chǔ)引擎 MyISAM,不支持事務(wù)、也不支持外鍵,但其訪問速度快,對(duì)事務(wù)完整性沒有要求。 InnoDB,提供了具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全。但是比起MyI...
背景 事故發(fā)生在某個(gè)工作日下午,初診癥狀為頁面響應(yīng)時(shí)間巨長,沒有任何反應(yīng),頁面一直處于加載狀態(tài)中,根據(jù)后端監(jiān)控平臺(tái)顯示,相關(guān)服務(wù)的所有實(shí)例CPU占用率達(dá)到100%,為了快速恢...
分布式事務(wù)產(chǎn)生的原因 數(shù)據(jù)庫分庫分表 微服務(wù)化 在微服務(wù)架構(gòu)中,每個(gè)服務(wù)在用本地事務(wù)的時(shí)候,知道自己執(zhí)行的事務(wù)是成功還是失敗,但是無法知道其他服務(wù)節(jié)點(diǎn)的事務(wù)執(zhí)行情況,因此需要...
定義 RxJava extends the observer pattern to support sequences of data/events and adds ope...
在微服務(wù)架構(gòu)下,給我們測(cè)試帶來了如下挑戰(zhàn): 驗(yàn)證成本高,為了驗(yàn)證多個(gè)服務(wù)協(xié)作后的功能正確與否,需要為每個(gè)服務(wù)搭建基礎(chǔ)設(shè)施(包括數(shù)據(jù)庫、緩存等),并執(zhí)行部署、配置等步驟,以確保...
Spring Cloud 發(fā)布于2015年3月 引入NetflixOSS的開源技術(shù)棧 基于Spring boot 構(gòu)建了分布式系統(tǒng)的公共模式 Spring boot是Spri...
什么是單體應(yīng)用? 如圖所示,這個(gè)系統(tǒng)采用了三層架構(gòu),表現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層,雖然三層架構(gòu)解決了應(yīng)用程序中代碼間調(diào)用復(fù)雜,代碼職責(zé)不清的問題。但是他只是將應(yīng)用在邏輯上分...
DDD是什么? 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是一種處理高度復(fù)雜域的設(shè)計(jì)方法,試圖分離技術(shù)實(shí)現(xiàn)的復(fù)雜性,圍繞業(yè)務(wù)概念構(gòu)建領(lǐng)域模型來控制業(yè)務(wù)的復(fù)雜性,以解決軟件難以理解,難以演化等問題。團(tuán)隊(duì)?wèi)?yīng)用...
當(dāng)我們?cè)跒樾碌漠a(chǎn)品或者項(xiàng)目進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì)、制定演進(jìn)路線、技術(shù)選型的時(shí)候,我們需要一些架構(gòu)原則,來指導(dǎo)我們的架構(gòu)設(shè)計(jì)和選型。 架構(gòu)解決的問題 架構(gòu)作為構(gòu)架在業(yè)務(wù)與技術(shù)之間鴻溝...
定義 Event-driven architecture (EDA), is a software architecture pattern promoting the pr...
定義 Synchronous: A business transaction done in a single HTTP request/response exchange,...