跟着《架构探险》学轻量级微服务架构 (一)
微服務概念這兩年已經火遍大江南了,但在實際的開發和使用中,用到的還是挺少的,尤其對創業團隊來說。
在上一個產品中,我們也在把傳統的開發模式,不斷往「微服務」方向靠攏。但終究還是處于學習階段。最近偶然發現有人推薦《架構探險 輕量級微服務架構》上下冊這兩本書,簡單的看了看目錄后,覺得使用到的技術,有些已經在開發過程中用到過,有些可能會在未來的某一階段會使用到。
也本著「多看書,多學習」的原則,果斷入手了這兩本書。昨天到手后,用了一晚上的時間,粗略看完了第一本書,今天迫不及待的想按照書中的脈絡和技術棧,邊學習邊動手,搭建簡易的「輕量級微服務架構」。
預計分成好幾篇讀書摘要來分享讀書心得
微服務
微服務是一種分布式系統架構,它建議我們將業務劃分為更加細粒度的服務,并使每個服務的責任單一且可獨立部署,服務內部高內聚,隱含內部細節,服務之間低耦合,彼此相互隔離。此外,我們根據面向服務的業務領域來建模,對外提供統一的 API 接口。微服務的思想不只是停留在開發階段,它貫穿于設計、開發、測試、部署、運維等軟件生命周期階段。
引用于《架構探險》
優點
微服務滿足以下幾點要求:
· 根據業務模塊劃分服務種類;
· 每個服務可獨立部署且相互隔離;
· 通過輕量級 API 調用服務;
· 服務需保證良好的高可用性。
引用于《架構探險》
當滿足于微服務架構,所帶來的好處無外乎以下幾點:
1. 每個微服務組件都是簡單靈活的,能夠獨立部署。不再像以前一樣,應用需要一個龐大的應用服務器來支撐,而且前端、后臺、數據庫什么的都整合在一起;
2. 每個微服務組件,都可以由更小的團隊,或者第三方平臺來負責開發,或者提供,讓所有人更專注專業,提供更高效可靠的服務。
3. 微服務之間是松耦合的,微服務內部是高內聚的,每個微服務都可以根據自身提供的服務進行有針對性的擴展。
4. 微服務架構與語言工具無關,自由選擇合適的語言和工具,尤其對于小團隊來說,如果其中一組 PHP 開發人員忙于其它業務開發,完全可以由另一組 Java 開發人員來開發。
微服務核心技術
這本書主要利用一些主流的開發框架和工具來搭建微服務架構:
1. 微服務開發框架 —— Spring Boot 框架
2. 微服務網關 —— Node.js
3. 微服務注冊與發現 —— ZooKeeper
4. 微服務封裝 —— Docker
5. 微服務部署 —— Jenkins, GitLab
寫代碼
微服務開發框架 —— Spring Boot 框架
關于開發 IDE,我是推薦 jetbrains (www.jetbrains.com/) 家族系列的,如 Java 使用 IntelliJ IDEA,如 前端開發使用 WebStorm, PHP 開發使用 PhPStorm 等。
在使用 IntelliJ IDEA 之前,我們需要加入 Maven 國內鏡像來加塊插件等的下載速度:
在 settings.xml 文件中加入阿里云鏡像路徑:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>復制代碼在 IntelliJ IDEA 中如果沒有 Spring Boot 開發腳手架,可以直接搜索插件安裝:
初始化 Spring Boot 應用:
項目的整個目錄結構如下:
正如書上所說:
1. 在類中帶有 @SpringBootApplication,表明它是個 Spring Boot 應用;
2. 類中包含有 main()函數,通過 SpringApplication.run(Demo1Application.class, args);來運行該類。
3. 加入簡單的一個 Hello 接口,直接上代碼:
package com.yemeishu.demo1;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; public class Demo1Application {public static void main(String[] args) {SpringApplication.run(Demo1Application.class, args);}(method = RequestMethod.GET, path = "/hello")public String hello () {return "你好 葉梅樹";} }復制代碼現在可以直接點「運行」了,輸出一堆 Log:
在瀏覽器輸入網址:http://localhost:8080/hello,即可看到結果:
總結
可以看出 Spring Boot 還是比較容易上手的,接下來繼續學習 Spring Boot 和微服務相關的功能開發。
明天繼續,coding01 期待您繼續關注
qrcode也很感謝您能看到這了
qrcode總結
以上是生活随笔為你收集整理的跟着《架构探险》学轻量级微服务架构 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 航院 1874 畅通工程续
- 下一篇: 新开两场构建服务治理框架的直播分享