2017-10-04 105 views
-2

微服務爲此,微服務爲此,但向一個簡單的人解釋什麼是微服務?我是一個簡單的程序員,幾乎沒有任何理論背景。但我不需要術語微服務來做我所做的事情。有人能用簡單的農民的話來解釋我的微服務是什麼嗎?亞馬遜AWS = microservice?什麼是微服務?

我看過這個:https://en.wikipedia.org/wiki/Microservices但顯然我太愚蠢瞭解這是什麼。

+2

[微服務](https://martinfowler.com/articles/microservices.html)閱讀本文 – RSon1234

+0

@ RSon1234好的,我放棄了編程。 – lll

+0

好的,稍後再見 – RSon1234

回答

7

微服務於我自己,希望簡單來說

巨石

傳統的Web應用程序都大。您編寫一個運行在服務器上的軟件,並以HTML,XML或JSON的形式回答請求。如果你想讓你的web應用程序做一些新的事情,你可以將這個功能添加到現有的應用程序中。這樣的大系統被稱爲「單片」(一塊巨石是一塊非常大的岩石)。

巨石有問題,因爲它們隨着時間的推移通常會隨着尺寸和複雜程度的增長而增加。在團隊中開發某些東西時,這是個問題。開發人員將新代碼添加到系統中,並且無法更改或重新使用現有代碼,因爲代碼段之間存在很多依賴關係。他們也害怕刪除舊代碼,因爲它可能被用在某個地方。

當向客戶端傳遞這樣的代碼時,例如通過把它放在互聯網上,我們稱之爲「部署」。在部署後進行部署和通常的測試很困難,因爲在大系統中有很多事情可能會破壞。找出發生了什麼問題以及誰應該修復它是非常困難的,並且需要人們知道整個事情。

另一個缺點是可擴展性。我們的意思是「我們怎樣才能同時爲更多的用戶提供服務?」一臺Web服務器計算機只能處理一定數量的用戶並行訪問它。將該計算機升級爲更好的硬件可以爲更多用戶提供服務,但您很快就會遇到硬件可能出現的問題。這種升級稱爲垂直縮放。我們也可以將我們的Web應用程序放在兩個或更多的服務器上,以便我們可以處理更多的用戶。這稱爲水平縮放。傳統上,單片應用只考慮垂直縮放。

微服務

爲了簡化大應用的工作流程,我們可以把它分割成更小的部分。每個部分都有一個特定的用途。我們稱之爲「(網絡)服務」。這些Web服務使用起來非常靈活。您可以在現有的整體應用程序中使用它們,無論是在服務器部分還是在客戶端部分。您也可以使用其他Web服務的Web服務。

拆分爲單個Web服務允許您鬆散地耦合您的應用程序。這意味着作爲服務的用戶,您只能依賴服務的啓動,可用和工作。您不再需要照顧其依賴項,編譯,部署或測試。

您可以將責任交給不同的開發人員或團隊。您不能通過源代碼訪問它,因此無法打破他們的Web服務。他們甚至可以使用不同的編程語言,你仍然可以使用他們的服務。

這種獨立性是通過決定使用通用格式和通用protocols(協議是一種通信方式)而成爲可能。對於網絡服務,最流行的格式是JSONXML。最常使用的協議是HTTP,因爲它很簡單,所有現有軟件都支持並且您的瀏覽器也使用它。

「微服務」中的「微」一詞強調了讓這些Web服務儘可能小的想法。如果您需要更復雜的服務,通常最好創建一個依賴於一個或多個其他服務的新服務。

假設你有一個應用程序,用戶可以創建虛擬明信片。這是如何使用微服務體系結構實現這樣的應用程序。

  • 薄靜態網頁,只包含HTML,CSS和JavaScript
  • ,提供的名片模板的列表,包括它們的尺寸和意圖的微服務「卡庫」中。
  • 微服務「縮略圖」,給定一個卡片模板名稱,爲您提供卡片的小預覽。
  • 一個微服務「渲染器」,需要一個模板和文本填寫。然後呈現一張卡片圖像並返回該圖像。

他們是如何有線:

  1. 網頁有網址到卡庫和渲染。用戶的瀏覽器正在調用JavaScript代碼發出的這些服務。
  2. 庫正在使用縮略圖來返回包含縮略圖的卡片列表
  3. 當用戶選擇了一個時,瀏覽器將該模板與用戶輸入的內容一起發送到呈現器,瀏覽器顯示返回的圖像。
+0

Hubert,不錯的努力。關於接線,您可能想要添加的端點服務可能會更粗糙,並實際上是協調基礎微服務的接口。當需要保持一定程度的狀態或一致性時(這並不總是可以在微服務中保持事務邊界),這是有效的。 –

0

微服務的正確詞語是正確的大小服務。範圍和大小微服務應該基於以下內容

  1. SRP - 微服務應該有一個單一的變化原因。它應該做一件事,並做好。
  2. 業務能力 - 它應該代表一種業務能力,應該是相對自治的業務能力,並且可以由與其他能力交互最少的團隊執行
  3. BC/UL它應該基於BC and UL。這些是DDD的概念。詳情請參閱鏈接。