微服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用,根據(jù)業(yè)務(wù)拆分成一個一個的服務(wù),徹底地去耦合,每一個微服務(wù)提供單個業(yè)務(wù)功能的服務(wù),一個服務(wù)做一件事,從技術(shù)角度看就是一種小而獨(dú)立的處理過程,類似進(jìn)程概念,能夠自行單獨(dú)啟動或銷毀,擁有自己獨(dú)立的數(shù)據(jù)庫。強(qiáng)調(diào)的是服務(wù)的大小,它關(guān)注的是某一個點(diǎn),是具體解決某一個問題/提供落地對應(yīng)服務(wù)的一個服務(wù)應(yīng)用,狹意的看,可以看作Eclipse里面的一個個微服務(wù)工程/或者M(jìn)odule。
微服務(wù)架構(gòu)是?種架構(gòu)模式,它提倡將單?應(yīng)?程序劃分成?組?的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為?戶提供最終價值。每個服務(wù)運(yùn)?在其獨(dú)?的進(jìn)程中,服務(wù)與服務(wù)間采?輕量級的通信機(jī)制互相協(xié)作(通常是基于HTTP協(xié)議的RESTful API)。每個服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)?構(gòu)建,并且能夠被獨(dú)?的部署到?產(chǎn)環(huán)境、類?產(chǎn)環(huán)境等。另外,應(yīng)當(dāng)盡量避免統(tǒng)?的、集中式的服務(wù)管理機(jī)制,對具體的?個服務(wù)??,應(yīng)根據(jù)業(yè)務(wù)上下?,選擇合適的語?、?具對其進(jìn)?構(gòu)建。
每個服務(wù)足夠內(nèi)聚,足夠小,代碼容易理解這樣能聚焦一個指定的業(yè)務(wù)功能或業(yè)務(wù)需求
開發(fā)簡單、開發(fā)效率提高,一個服務(wù)可能就是專一的只干一件事。
微服務(wù)能夠被小團(tuán)隊單獨(dú)開發(fā),這個小團(tuán)隊是2到5人的開發(fā)人員組成。
微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨(dú)立的。
微服務(wù)能使用不同的語言開發(fā)。
易于和第三方集成,微服務(wù)允許容易且靈活的方式集成自動部署,通過持續(xù)集成工具,如Jenkins, Hudson, bamboo 。
微服務(wù)易于被一個開發(fā)人員理解,修改和維護(hù),這樣小團(tuán)隊能夠更關(guān)注自己的工作成果。無需通過合作才能體現(xiàn)價值。
微服務(wù)允許你利用融合最新技術(shù)。
微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
每個微服務(wù)都有自己的存儲能力,可以有自己的數(shù)據(jù)庫。也可以有統(tǒng)一數(shù)據(jù)庫。
開發(fā)人員要處理分布式系統(tǒng)的復(fù)雜性
多服務(wù)運(yùn)維難度,隨著服務(wù)的增加,運(yùn)維的壓力也在增大
系統(tǒng)部署依賴
服務(wù)間通信成本
數(shù)據(jù)一致性
系統(tǒng)集成測試
性能監(jiān)控
使用Spring Cloud作為微服務(wù)架構(gòu)的原因;