什么是微服務(wù)架構(gòu)
簡單地說,微服務(wù)是系統(tǒng)架構(gòu)上的一種設(shè)計風(fēng)格, 它的主旨是將一個原本獨立的系統(tǒng)拆分成多個小型服務(wù),這些小型服務(wù)都在各自獨立的進程中運行,服務(wù)之間通過基于HTTP的RESTful API進行通信協(xié)作。被拆分成的每一個小型服務(wù)都圍繞著系統(tǒng)中的某一項或一些耦合度較高的業(yè)務(wù)功能進行構(gòu)建, 并且每個服務(wù)都維護著自身的數(shù)據(jù)存儲、業(yè)務(wù)開發(fā)、自動化測試案例以及獨立部署機制。
微服務(wù)架構(gòu)的優(yōu)缺點
微服務(wù)的優(yōu)點
·每個微服務(wù)都很小,這樣能夠聚焦一個指定的業(yè)務(wù)功能或業(yè)務(wù)需求。
·微服務(wù)能夠被小團隊單獨開發(fā),這個小團隊是2到5人的開發(fā)人員組成。
·微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨立的。
·微服務(wù)能使用不同的語言開發(fā),如Java、Python、PHP、C#等。
·微服務(wù)允許容易且靈活的方式集成自動部署,通過持續(xù)集成工具,如Jenkins, Travis CI等工具。
·一個團隊的新成員能夠更快投入生產(chǎn)。
·微服務(wù)易于被一個開發(fā)人員理解,修改和維護,這樣小團隊能夠更關(guān)注自己的工作成果。無需通過合作才能體現(xiàn)價值。
·微服務(wù)允許你利用融合最新技術(shù)。
·微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
·微服務(wù)能夠即時被要求擴展。
·微服務(wù)能部署中低端配置的服務(wù)器上。
·易于和第三方應(yīng)用系統(tǒng)集成。
·每個微服務(wù)都有自己的存儲能力,可以有自己的數(shù)據(jù)庫,也可以有統(tǒng)一數(shù)據(jù)庫。
微服務(wù)的缺點
·微服務(wù)架構(gòu)可能引入過多的操作;
·需要提高DevOps應(yīng)用技巧;
·對于開發(fā)和運維帶來一定的挑戰(zhàn),需要付出雙倍的努力;
·分布式系統(tǒng)比單體應(yīng)用架構(gòu)復(fù)雜,且難以管理;
·對于故障診斷比較難,分布式部署跟蹤比單體架構(gòu)復(fù)雜;
·當(dāng)服務(wù)數(shù)量增加,管理復(fù)雜性增加。
微服務(wù)架構(gòu)在工業(yè)應(yīng)用上的實戰(zhàn)
下面以格創(chuàng)東智在某工業(yè)生產(chǎn)行業(yè)客戶進行了微服務(wù)架構(gòu)的實際落地案例進行說明。
該公司擁有MES、EDA、RPT、SPC、OEE、FDC等應(yīng)用,其中查詢、分析類應(yīng)用已經(jīng)移植到微服務(wù)架構(gòu),使用的是Spring Cloud。
以RPT系統(tǒng)為例,使用SpringCloud之后,新增報表只需要開發(fā)有關(guān)業(yè)務(wù)邏輯的代碼,其他配置、權(quán)限及校驗代碼都由微服務(wù)架構(gòu)代勞,其開發(fā)和測試部署相較之前更加快捷,而且融合了Python技術(shù),在某些特定場景下,系統(tǒng)運行效率也有可觀的改善。
在異常分析系統(tǒng)中,之前使用的是Spark MLlib,但是在預(yù)測產(chǎn)品異常方面,Python的Keras效果更佳,在導(dǎo)入微服務(wù)架構(gòu)后,可以很方便的使用Scala和Python的“混合”架構(gòu),系統(tǒng)的分析準(zhǔn)確率得到了提升。
在移植過程中遇到了微服務(wù)的“邊界”問題,在我們進行微服務(wù)架構(gòu)設(shè)計和改造過程中,一個不可避免的問題是如何確定服務(wù)邊界、如何進行服務(wù)識別,微服務(wù)的劃分粒度究竟如何確認(rèn)。我們可能會聽到,服務(wù)既不能太大,也不能太小,當(dāng)然這是一個籠統(tǒng)的概念。那么,問題來了,究竟多大是大,多小是小。
一個設(shè)計良好的服務(wù)應(yīng)包含以下五個特征:
特征一:服務(wù)不與其他服務(wù)共享數(shù)據(jù)庫
特征二:服務(wù)應(yīng)包含盡可能少的數(shù)據(jù)庫表
特征三:一個服務(wù)要么包含完整的業(yè)務(wù)含義,要么是放之四海皆通用的公共服務(wù)。
特征四:一個良好的服務(wù)應(yīng)首先確保其數(shù)據(jù)可用性。
特征五:在一個業(yè)務(wù)系統(tǒng)中,一個服務(wù)只能是并且唯一的可信來源。
MES系統(tǒng)和EDA系統(tǒng)這一類與生產(chǎn)強相關(guān)的應(yīng)用,業(yè)務(wù)邏輯復(fù)雜,耦合性強,進行服務(wù)“拆分”很難符合以上5個特征。所以暫時無法對其進行“拆分”。
綜上所述,微服務(wù)架構(gòu)比較適合制造業(yè)應(yīng)用中查詢、分析類應(yīng)用,在生產(chǎn)控制這一類與生產(chǎn)強相關(guān)的應(yīng)用上的作用還有待挖掘。
本文作者:
格創(chuàng)東智大數(shù)據(jù)系統(tǒng)集成部 王子超(轉(zhuǎn)載請注明作者及來源)
審核編輯 黃昊宇
-
工業(yè)制造
+關(guān)注
關(guān)注
0文章
405瀏覽量
28126 -
智能制造
+關(guān)注
關(guān)注
48文章
5613瀏覽量
76568 -
工業(yè)互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
28文章
4330瀏覽量
94274 -
微服務(wù)架構(gòu)
+關(guān)注
關(guān)注
0文章
25瀏覽量
2980
發(fā)布評論請先 登錄
相關(guān)推薦
NVIDIA 發(fā)布保障代理式 AI 應(yīng)用安全的 NIM 微服務(wù)
微服務(wù)容器化部署好處多嗎?
容器化能替代微服務(wù)嗎?兩者有何區(qū)別
Java微服務(wù)中如何確保安全性?
寶藏級微服務(wù)架構(gòu)工具合集
k8s微服務(wù)架構(gòu)就是云原生嗎?兩者是什么關(guān)系
SSR與微服務(wù)架構(gòu)的結(jié)合應(yīng)用
架構(gòu)與設(shè)計 常見微服務(wù)分層架構(gòu)的區(qū)別和落地實踐
![<b class='flag-5'>架構(gòu)</b>與設(shè)計 常見<b class='flag-5'>微服務(wù)</b>分層<b class='flag-5'>架構(gòu)</b>的區(qū)別和落地實踐](https://file1.elecfans.com//web1/M00/F3/6F/wKgaoWcXVYOABfykAACXUPb6uWA473.png)
微服務(wù)架構(gòu)與容器云的關(guān)系與區(qū)別
入門級攻略:如何容器化部署微服務(wù)?
Proxyless的多活流量和微服務(wù)治理
![Proxyless的多活流量和<b class='flag-5'>微服務(wù)</b>治理](https://file1.elecfans.com//web2/M00/04/79/wKgZombO5bOALV66AABWmg83ey8199.jpg)
NVIDIA NIM微服務(wù)帶來巨大優(yōu)勢
采用OpenUSD和NVIDIA NIM微服務(wù)創(chuàng)建精準(zhǔn)品牌視覺
全新 NVIDIA NeMo Retriever微服務(wù)大幅提升LLM的準(zhǔn)確性和吞吐量
![全新 NVIDIA NeMo Retriever<b class='flag-5'>微服務(wù)</b>大幅提升LLM的準(zhǔn)確性和吞吐量](https://file1.elecfans.com/web2/M00/FE/A1/wKgZomajFTOAPHuKAAAbwwpa0vg402.png)
評論