- 論壇徽章:
- 42
|
本帖最后由 laputa73 于 2019-08-05 13:43 編輯
這個話題比較熱門,
1.微服務(wù)的定義?微服務(wù)需要“微”到什么程度?
這個問題其實是微服務(wù)最核心的問題。
微服務(wù)其實并沒有明確的定義,相對于單體應(yīng)用,微服務(wù)有明顯的差異。
但是相對于分布式的多服務(wù)體系,微服務(wù)的差異體現(xiàn)在哪里?
傳統(tǒng)的SOA同樣有服務(wù)注冊、服務(wù)網(wǎng)關(guān)、服務(wù)路由。
微服務(wù)雖然可以脫離網(wǎng)關(guān),只通過注冊中心尋址,p2p調(diào)用,但是最佳的推薦應(yīng)用方式仍然是通過網(wǎng)關(guān)。
所以,微服務(wù)更多是一個理念,而不是一個明確的概念。
微服務(wù)是不是越微越好?
答案我認為是否定的。
一個上百個api的系統(tǒng),通過上百個服務(wù)來實現(xiàn),會給運維來來無窮無盡的煩惱。
相反,類似的功能,聚合到一個服務(wù)中集中實現(xiàn),效率更高?傮w分為10來個服務(wù)可能就足夠,
從單體到分布式集群是一個質(zhì)的變化,但是從分布式到微服務(wù),只是一個量的調(diào)整。
2.微服務(wù)的重大優(yōu)勢是什么?它是未來嗎?
微服務(wù)最大的優(yōu)勢是統(tǒng)一了分布式RPC接口,讓進程間通信和服務(wù)通信成為了統(tǒng)一模式,
只要分布式調(diào)用的需求存在,微服務(wù)的思想就在。
相對于傳統(tǒng)的單體系統(tǒng),微服務(wù)主要的革命是去掉了session,強制api無狀態(tài).
3.微服務(wù)在實踐過程中最大的難點是什么?
粒度拆分的決策。
服務(wù)之間數(shù)據(jù)一致性問題。
運維問題。
多語言問題。
還有一個內(nèi)外劃分的問題,傳統(tǒng)的系統(tǒng)功能明確,內(nèi)部系統(tǒng)走rpc,外部系統(tǒng)通過soa相互通信。現(xiàn)在都統(tǒng)一成微服務(wù)了。
誰是內(nèi),誰是外?系統(tǒng)邊界在哪?服務(wù)中心需要建一套,還是多套?
4.微服務(wù)、容器技術(shù)兩者的關(guān)系?兩者結(jié)合帶來什么新趨勢?
沒有容器(docker),也會有微服務(wù)。各種語言都有自己的web/rest app容器。
例如java的spring boot, python的flask.
但是有了docker容器,微服務(wù)的隔離更徹底,部署更清晰。
而且,依托k8s的容器調(diào)度,可以實現(xiàn)更高層次的微服務(wù)治理。
5.怎么處理微服務(wù)與外部相連,以及獲取數(shù)據(jù)?
微服務(wù)的數(shù)據(jù)同步是個很復(fù)雜的問題。
理論上微服務(wù)之間只存在api調(diào)用. 但是每個微服務(wù)自己搞一個數(shù)據(jù)庫是不現(xiàn)實的。
所以系統(tǒng)中需要有一部分服務(wù),單獨處理數(shù)據(jù)。成為數(shù)據(jù)服務(wù)。
然后通過這些服務(wù),暴露數(shù)據(jù)操作接口。
對于這些數(shù)據(jù)服務(wù),可以直接操作數(shù)據(jù)庫,本質(zhì)上和傳統(tǒng)的服務(wù)/DAO這些沒有太大差別。
微服務(wù)區(qū)分內(nèi)外,和外部服務(wù)交互一定要過網(wǎng)關(guān)。
如果從外部獲取數(shù)據(jù),量小的走api,量大的可能走專用通道,例如文件,隊列。
6.微服務(wù)與容器結(jié)合會發(fā)展出新趨勢--Cloud Native,什么是Cloud Native?(可選答)
云原生的概念是相對于直接把老系統(tǒng)遷移到容器、虛機部署而言的。
實際上,只要用上了docker+微服務(wù)這一套體系。支持了集群擴縮容,自然就是云原生了。
多說一句,目前的的微服務(wù)架構(gòu),spring cloud還是主流
但是和云原生結(jié)合,service mesh(istio)才是更純粹的微服務(wù)架構(gòu)。
|
評分
-
查看全部評分
|