1. 程式人生 > >微服務的學習紀要,包含dubbo、docker、Jenkins

微服務的學習紀要,包含dubbo、docker、Jenkins

1、微服務就是將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在微服務結構中,每個子系統就被稱為“服務”。這些子系統能夠獨立執行在 Web 容器中,它們之間通過 RPC 方式通訊。
微服務是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。

微服務的優點:
每個服務都比較簡單,只關注於一個業務功能。
微服務架構方式是鬆耦合的,可以提供更高的靈活性。
微服務可通過最佳及最合適的不同的程式語言與工具進行開發,能夠做到有的放矢地解決針對性問題。
每個微服務可由不同團隊獨立開發,互不影響,加快推出市場的速度。
微服務架構是持續交付(CD)的巨大推動力,允許在頻繁釋出不同服務的同時保持系統其他部分的可用性和穩定性。
按照業務而不是技術來劃分組織

與微服務相關的學習網站:
https://blog.csdn.net/wufaliang003/article/details/79464737
https://segmentfault.com/p/1210000009090743/read
https://www.cnblogs.com/PerfectBeauty/p/7587748.html

2、Dubbo是阿里巴巴公司開源的一個高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫整合。
微服務的核心要素在於服務的發現、註冊、路由、熔斷、降級、分散式配置

Dubbo 核心部件
Provider: 暴露服務的提供方,可以通過jar或者容器的方式啟動服務
Consumer:呼叫遠端服務的服務消費方。
Registry: 服務註冊中心和發現中心。
Monitor: 統計服務和呼叫次數,呼叫時間監控中心。(dubbo的控制檯頁面中可以顯示,目前只有一個簡單版本)
Container:服務執行的容器。
官網:http://www.dubbo.io
介紹dubbo的相關網站:https://baijiahao.baidu.com/s?id=1600174787011483381&wfr=spider&for=pc
中文幫主文件:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

3、Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用介面。它是目前最流行的 Linux 容器解決方案。
Docker 將應用程式與該程式的依賴,打包在一個檔案裡面。執行這個檔案,就會生成一個虛擬容器。程式在這個虛擬容器裡執行,就好像在真實的物理機上執行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的介面相當簡單,使用者可以方便地建立和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的程式碼一樣。

Docker 的主要用途,目前有三大類。
(1)提供一次性的環境。比如,本地測試他人的軟體、持續整合的時候提供單元測試和構建的環境。
(2)提供彈性的雲服務。因為 Docker 容器可以隨開隨關,很適合動態擴容和縮容。
(3)組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。

文件:https://docs.docker.com/
中文文件:https://docs.docker-cn.com/

4、Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。
Jenkins是一個開源的持續整合的伺服器,Jenkins開源幫助我們自動構建各類專案。Jenkins強大的外掛式,使得Jenkins可以整合很多軟體,可能幫助我們持續整合我們的工程專案。
相關網站:http://www.jenkins.org.cn/