微服務這麼流行,你理解嘛?

2021-01-15 愚公要移山1

在前一段時間,我們實驗室的項目開始變得越來越麻煩,代碼也越來越臃腫,一個人兼顧前後端的全棧開發,實在是力不從心,沒有一點點幸福感,於是迫切的想要解放生產力,放飛自我,因此開始決定重構項目,改用之前學習過但是一直沒用過的微服務架構。這篇文章將從以下幾個角度來學習Springcloud入門的一些相關知識。

1、微服務是什麼?

2、微服務和微服務架構的區別是什麼?

3、微服務技術有什麼?

4、微服務的優缺點是什麼?

5、為什麼選擇Springcloud作為微服務架構?

在寫本系列文章之前,我也看了很多網上的大佬那些微服務系列的文章,他們寫的都非常好,別人問我關於一些微服務的技術文章時,我也都會把那些我認為寫的好的文章推送給他們,但是存在一個問題,那就是剛剛接觸微服務的同學,一開始覺得寫的通俗易懂而且確實很簡單,但是越往後看越看不懂。因此才萌生出自己寫一套循序漸進的文章。

一、從單體結構說起

本來想以自己的項目為例,但是由於涉及一些學校不能外傳的信息,所以換一個常見的例子。我們以餐廳賣飯為例

從上圖我們會發現,收銀、做飯、洗碗等操作都由小張一個人完成。隨著服務項目的不斷複雜,顧客人數的不斷增多,這會帶來大量的問題。

1、技術太複雜,有時候往往會牽一髮而動全身,代碼耦合性太大,修改起來很麻煩。

2、拓展能力弱,功能模塊代碼緊耦合,無人進行有效拓展

3、維護成本太高,一旦出一個問題,修改很難受。

當然還有很多很多的缺點,為此繼續一種技術去改善這個問題。什麼技術呢?就是我們今天所說的微服務架構。

二、什麼是微服務

由於業界還沒有對微服務的概念有一個統一的解釋,但是你可以這樣去理解,微服務其實就是一種思想,這個思想是:考慮如何把一個複雜的項目拆分成一個個獨立的小項目。就好比是電腦中的進程,拆分成一個個小的線程一樣。

再舉個

三、微服務和微服務架構的區別是什麼

他們倆的區別你可以這樣去理解,微服務就好比是指導思想,微服務架構就是根據這個指導思想實施的方案。就好比是古代的時候,皇帝說要減輕賦稅,然後下面的大臣根據這個指導思想去實施具體的方案。

當然這裡還有更加標準化的回答:

微服務架構是種架構模式,它提倡將單應程序劃分成組的服務,服務之間互相協調、互相配合,為戶提供最終價值。每個服務運在其獨的進程中,採輕量級的通信機制互相協作

如果你能理解剛剛皇帝的那個例子,應該就能理解微服務架構的含義了。

四、微服務技術有什麼?

微服務的技術還是很多的,python、c++等等都有,不過因為是專注於java,所以還是主要聊聊java中的微服務技術。

Dubbo被重啟之後又煥發出了新的光彩,但是跨語言支持不足是它的一個弱項,另外功能比較少,之後服務治理相關的技術,完全用好這個框架的門檻比較高。這對於初學者來說開發難度還是比較大的。目前dubbo已經被阿里捐獻給Apache了,Apache也正在致力打造屬於dubbo的微服務體系,但是從這兩年多的發展情況來看,並不樂觀。

Netflix微服務架構經過多年生產驗證,最終形成一整套開源的微服務基礎組件,統稱 NetflixOSS,Netflix 的成功經驗開始被業界認可並推崇,於是Pivotal 將 NetflixOSS 開源微服務組件集成到其 Spring 體系,推出 Spring Cloud 微服務開發技術棧。隨著時間的推移目前基本上也佔據了半壁江山。本系列教程也會圍繞著Springcloud來展開。

其他的微服務技術比如springcloud Alibaba、istio等等在這裡就不對比了,沒有大規模使用的還有待觀察。一旦流行了再學習也不遲。

五、微服務的優缺點是什麼?

既然要使用微服務,微服務有什麼優點呢?他的優缺點你可以對比著單體結構的缺點來記憶。

1、維護起來比較簡單,畢竟每一個服務只關注於項目中的一個小模塊

2、拓展性好,有新功能需要添加的時候,那就再建立一個微服務,和之前的互不幹擾。

3、每一個微服務都有著自己的資料庫

優點真的是太多了,能想到的就這些吧。

當然還有很多缺點,咳咳,缺點不說太多,要不然你覺得微服務不好了,缺點那就是一個個微服務構成了分布式系統,出現了分布式系統的各種問題。

六、為什麼選擇Springcloud?

說實話,一開始我在認識微服務的時候,完全不理解他的特點是什麼含義,只有當學習了一遍之後,重新回過頭來看,才發現,原來是這樣呀。不過在這裡你最好先記住。否則以後你連回頭的想法都沒:

1、約定大於配置。

2、適用於各種環境

3、整合了Springboot的優點

4、輕量級組件

5、功能齊全

6、靈活

優點太多,數不過來,所以你先記住這幾條,看了幾本書發現基本上也是這樣介紹的。

這篇文章是我的微服務系列的第一篇文章,下一篇文章將主要開始介紹Springcloud的每一個組件的功能,以及為什麼要有這樣一個組件。

相關焦點

  • DDD到底適不適合微服務架構?
    微服務架構的演進我們常說,架構設計的核心是滿足降本增效。該怎麼理解?舉個例子,微服務架構之所以能脫穎而出,正是因為它實現了系統解耦和持續集成,有清晰的服務邊界,很大程度上避免了「牽一髮而動全身」的尷尬。
  • 基於容器雲的微服務架構實踐
    【編者按】微服務架構的誕生和容器技術的流行,幾乎是同時發生的,這並非偶然,而是網際網路時代倒逼傳統技術和架構而產生的變革,而以Docker為代表的容器技術則為微服務理念提供了匹配的實現機制,本文作者從什麼是微服務切入,詳細的介紹了微服務架構的優勢,最後從自身實踐出發,給出了微服務架構的雲端實踐。
  • 微服務拆分到什麼粒度合適——康威定律
    微服務這個概念一直很火,現在ServiceMesh概念更火,最近我經手的多個項目也都採用微服務的方式開發。但實踐發現,當一個RD同時開發超過2個微服務的時候,出現bug或故障的概率會提升。我現在看項目的時候會不自覺的關注工程服務拆分個數和研發人數的比值。雖然這麼做,我卻說不出來個所以然,也沒有找到一個理論依據。
  • 放棄微服務,改用宏服務,Uber 這波什麼操作?
    Gergely Orosz 表示:「最早,Uber 通過構建微服務來完成很小的需求或功能,以至於出現了很多由一個人構建維護的微服務。這些微服務的存在給我們帶來了新的複雜性和挑戰,例如監控、測試、持續集成 / 持續交付(CI/CD)、服務級別協議(SLA)、跨所有微服務的庫版本(安全和時區問題)等等。」
  • 2021升級版微服務教程—為什麼會有微服務?什麼是SpringCloud?
    到此為止,並夕夕商城成為了一個微服務的架構。://www.martinfowler.com/articles/microservices.html什麼是SpringCloudSpringCloud=分布式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全家桶。
  • 20道你必須要背會的微服務面試題,面試一定會被問到
    寫在前面:在學習springcloud之前大家一定要先了解下,常見的面試題有那塊,然後我們帶著問題去學習這個微服務技術,那麼就會更加理解springcloud技術。如果你已經學了springcloud,那麼在準備面試的時候,一定要看看看這些面試題。
  • 微服務,Java目前很火熱的系統架構
    當然系統架構肯定不是說我一篇文章就能學好的,只能說我作為一名初學者,是如何去理解這些概念的。至於想要真正地去弄懂這些,需要自己長期性地不斷學習,非一朝一夕就能學完的。一、系統架構概述技術更新是非常快的,從單一應用到垂直細分,到分布式,到SOA,以及微服務架構。
  • 微服務架構技術棧
    一、前言2014 年可以認為是微服務 1.0 的元年,當年有幾個標誌性事件:一是 Martin Fowler 在其博客上發表了」Microservices」一文,正式提出微服務架構風格;二是 Netflix 微服務架構經過多年大規模生產驗證,最終抽象落地形成一整套開源的微服務基礎組件,統稱 NetflixOSS,Netflix 的成功經驗開始被業界認可並推崇
  • 覆蓋全網的阿里微服務架構有多牛:K8S+實戰+筆記+項目教程
    在這 趨勢中,平臺化尤其具有 礎性及戰略性意義,而以 Spring Cloud技術為代表的微服務 是平臺化的代表性技術。為了更好地推廣微服務相關技術的應用,今天小編分享的這份《SpringCloud實戰演練文檔》。本書用簡單明了的方式闡述了微服務開發的基礎知識,詳細介紹了Spring Cloud在項目開發各個階段的操作方法與技巧。
  • 「首席架構師看微服務架構」介紹NGINX的微服務參考架構
    所有六個博客,以及一個關於微服務應用程式的Web前端的博客,都被收集到一個免費的電子書中。我們還認識到,實現微服務有許多不同的方法,其中許多方法都是新穎的,並且特定於各個開發團隊的需求。我們認為需要使用模型來使公司更容易開發和交付自己的基於微服務的應用程式。考慮到這一切,NGINX專業服務部門正在開發NGINX微服務參考架構(MRA) - 一組可用於創建自己的微服務應用程式的模型。
  • 微服務優化之使用gRPC做微服務的內部通信
    從開發的角度,在服務端和客戶端使用gRPC最大的好處在於:你的服務端的代碼和客戶端的代碼不需要擔心它會影響你解析JSON或者其他類似的文本格式消息。gRPC雖然接收到的是二進位格式,但會並將其反序列化為對象。同樣的我們可以通過IDL來定義服務接口,IDL是非常強大的一個特性,幫助我們處理多個微服務之間的互操作。為什麼gRPC是高效的?
  • restful微服務風格_restful 風格的微服務架構 - CSDN
    本文整理了 spring boot + jpa+mysql+redis +swagger+yml等技術,實現了微服務restFul 風格的demo,下載即運行[http://localhost:8080/
  • 微服務RPC框架選美
    原標題:微服務RPC框架選美 轉載本文需註明出處:EAII企業架構創新研究院(微信號:eaworld),違者必究。如需加入微信群參與微課堂、架構設計與討論直播請直接回復此公眾號:「加群 姓名 公司 職位 微信號」。
  • SpringCloud微服務架構篇3:Spring Cloud簡介
    微服務架構的核心關鍵點1、微服務的服務治理服務治理(服務註冊及服務發現),通過服務發現,消費者可以在預先不知道服務提供者物理地址的情況下,僅通過相應的服務名稱就可以實現服務調用。3、微服務的統一入口API服務網關就是為微服務提供了一個統一入口,並能夠附加一些路由規則,使得不同的微服務通過路由規則提供一致的訪問入口。
  • Java微服務可以和Go一樣快嗎?
    我們想進行實驗,看看Java微服務是否可以像Go微服務一樣快速運行。 業界普遍認為Java是"老的","慢的"和"無聊的"。 Go是"快速","新"和"酷"。 但是我們想知道這些特性是否得到實際性能數據的保證或支持。
  • 服務網格和API網關在微服務架構中的作用
    服務網格和API網關在微服務架構中的作用 如果您從事微服務,那麼您可能已經多次聽說過這兩個術語。 人們常常在兩者之間感到困惑。 在本文中,我將詳細討論服務網格和API網關,並討論何時使用。
  • 架構大遷移:從Java Spring到ReactJS +API微服務架構
    面對著這樣的窘境,你能做的,而且唯一需要做的就是對其重構,重新開發一個全新架構的,高性能的,流行的系統。本文中蟲蟲給大家介紹實例Java平臺重構的方法,將Java Spring開發的系統遷移到ReactJS+API的微服務架構。基礎梳理為什麼要重構平臺架構?
  • Spring Cloud系列各子項目在微服務架構中的作用分析
    Springcloud一般用於搭建微服務項目,那麼微服務項目是怎麼工作的呢?Springcloud的幾個子項目分別扮演什麼角色?網關:Spring Cloud Netflix Zuul / Spring Cloud Gateway微服務開發要把一整個系統不同模塊分成不同的服務項目,每個服務都有自己的調用地址埠信息,那麼前端用戶怎麼調用呢?總不能把所有服務的接口地址給前端吧。
  • 基於Prometheus來做微服務監控,有多吃香?
    微服務架構是目前各大網際網路公司普遍採用的軟體架構方式。在微服務架構中,系統被拆分為多個小的、相互獨立的服務,這些服務運行在自己的進程中,可以獨立的開發和部署。
  • 老闆要搞微服務,只能硬著頭皮上了...
    圖片來自 Pexels體會到微服務帶來好處的同時,很多公司也明顯感受到微服務化帶來的一系列讓人頭疼的問題。如果你正準備做微服務轉型,或者在微服務化過程中遇到了困難。此文很可能會幫到你!正文開始前,為了讓各位讀友更好的理解本文內容,先花兩分鐘了解一下微服務的優缺點。聊起微服務,很多朋友都了解微服務帶來的好處,羅列幾點: 模塊化,降低耦合。將單體應用按業務模塊拆分成多個服務,如果某個功能需要改動,大多數情況,我們只需要弄清楚並改動對應的服務即可。