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