GO語言 微服務簡介 構建單體應用

2021-10-10 07:21:05 字數 1134 閱讀 2935

網際網路技術發展迅速的今天,微服務倍受關注:文章、部落格、社交**討論和會議演講都在談論。與此同時,也有持懷疑態度的軟體社群人員認為微服務沒什麼新鮮可言。反對者聲稱它的思想只是面向服務架構的重塑。然而,無論是炒作還是懷疑,不可否認,微服務架構模式具有非常明顯的優勢 —- 特別是在實施敏捷開發和複雜的企業應用迭代開發方面。

我們先不問微服務是什麼?微服務該如何實現?讓我們從我們原本最熟悉的建立乙個應用和乙個普通的專案開始說起。

我們假設要開始開發乙個打車應用,目標是與uber和didi競爭。經過討論和技術選型,我們開始手動開發生成乙個新專案,該新應用有乙個模組化的六邊形架構,如下圖所示:

該應用的核心是由模組實現的業務邏輯。它定義了服務、領域物件和事件。圍繞核心的是與外部世界介面對接的介面卡。介面卡示例包括資料庫訪問元件、生產和消費訊息的訊息元件和暴露了 api 或實現了乙個 ui 的 web 元件。

再比如,我們拿乙個常見的網際網路公司的靜態邏輯架構來舉例,我們通過如下的架構圖將系統切分成五層,如下圖所示:

前置服務層:各種重業務的聚合入口,對具體引用層做大量工作,實現業務呼叫鏈條的封裝,達成業務邏輯的強實現。

業務服務層:包含各種基礎的業務服務單元,比如借款系統、還款系統、徵信系統、活動系統、爬蟲系統、引流系統、檔案系統等。

基礎服務層:不包含狀態的基礎業務服務,包括但不限於簡訊閘道器、檔案閘道器、服務監控等。

資料層:包括各種形態的資料儲存層,但不限於各種資料庫、快取、訊息佇列等。

如上我們從傳統的構建專案應用和專案架構拆解的角度來給大家解釋了什麼是單體應用,單體的特點以及傳統的應用的架構設計。類似的單體應用在我們以往的網際網路發展和企業應用中使用的非常普遍,現在也仍然很多企業都是類似的單體應用。

但是,隨著需求的增長,業務的變化,單體應用在慢慢發展和迭代後,也會遇到一些問題,單體應用的瓶頸會逐步顯現。

微服務簡介 構建單體應用

網際網路技術發展迅速的今天,微服務倍受關注 文章 部落格 社交 討論和會議演講都在談論。與此同時,也有持懷疑態度的軟體社群人員認為微服務沒什麼新鮮可言。反對者聲稱它的思想只是面向服務架構的重塑。然而,無論是炒作還是懷疑,不可否認,微服務架構模式具有非常明顯的優勢 特別是在實施敏捷開發和複雜的企業應用...

Go語言微服務

微服務 go語言 docker技術也算目前比較熱門的技術話題,本人也是抱著學習的思想,整理一些學習心得,和志同道合的朋友一起 學習一下。接下來是一系列關於go語言微服務的系列文章。為什麼是go語言的微服務,原因很簡單,最近對go語言花了些時間對它進行了深入學習,還談不上很厲害,但熱度挺高。加上最近專...

微服務還是單體,應用架構怎麼選?

近幾年,由於微服務生態建設的完善,微服務架構漸成趨勢,逐漸流行。業內人士也都在爭先恐後想一睹微服務芳容,甚至想王老虎搶親。但同時存在沒有認真考慮微服務架構是否適合自己的應用場景以及組織文化的問題。本人在前幾篇博文已經對微服務生態有了闡述。所謂生態,實際上講的是天時地利人和,講的是各方和諧。微服務生態...