微服務概念這兩年已經火遍大江南了,但在實際的開發和使用中,用到的仍是挺少的,尤爲對創業團隊來講。前端
在上一個產品中,咱們也在把傳統的開發模式,不斷往「微服務」方向靠攏。但終究仍是處於學習階段。最近偶然發現有人推薦《架構探險 輕量級微服務架構》上下冊這兩本書,簡單的看了看目錄後,以爲使用到的技術,有些已經在開發過程當中用到過,有些可能會在將來的某一階段會使用到。java
也本着「多看書,多學習」的原則,果斷入手了這兩本書。昨天到手後,用了一夜的時間,粗略看完了第一本書,今天火燒眉毛的想按照書中的脈絡和技術棧,邊學習邊動手,搭建簡易的「輕量級微服務架構」。web
預計分紅好幾篇讀書摘要來分享讀書心得spring
微服務是一種分佈式系統架構,它建議咱們將業務劃分爲更加細粒度的服務,並使每一個服務的責任單一且可獨立部署,服務內部高內聚,隱含內部細節,服務之間低耦合,彼此相互隔離。此外,咱們根據面向服務的業務領域來建模,對外提供統一的 API 接口。微服務的思想不僅是停留在開發階段,它貫穿於設計、開發、測試、部署、運維等軟件生命週期階段。
引用於《架構探險》數據庫
微服務知足如下幾點要求:apache
· 根據業務模塊劃分服務種類;
· 每一個服務可獨立部署且相互隔離;
· 經過輕量級 API 調用服務;
· 服務需保證良好的高可用性。瀏覽器
引用於《架構探險》bash
當知足於微服務架構,所帶來的好處無外乎如下幾點:服務器
1. 每一個微服務組件都是簡單靈活的,可以獨立部署。再也不像之前同樣,應用須要一個龐大的應用服務器來支撐,並且前端、後臺、數據庫什麼的都整合在一塊兒;架構
2. 每一個微服務組件,均可以由更小的團隊,或者第三方平臺來負責開發,或者提供,讓全部人更專一專業,提供更高效可靠的服務。
3. 微服務之間是鬆耦合的,微服務內部是高內聚的,每一個微服務均可以根據自身提供的服務進行有針對性的擴展。
4. 微服務架構與語言工具無關,自由選擇合適的語言和工具,尤爲對於小團隊來講,若是其中一組 PHP 開發人員忙於其它業務開發,徹底能夠由另外一組 Java 開發人員來開發。
這本書主要利用一些主流的開發框架和工具來搭建微服務架構:
1. 微服務開發框架 —— Spring Boot 框架
2. 微服務網關 —— Node.js
3. 微服務註冊與發現 —— ZooKeeper
4. 微服務封裝 —— Docker
5. 微服務部署 —— Jenkins, GitLab
關於開發 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.0 https://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;
@RestController
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
@RequestMapping(method = RequestMethod.GET, path = "/hello")
public String hello () {
return "你好 葉梅樹";
}
}複製代碼
如今能夠直接點「運行」了,輸出一堆 Log:
在瀏覽器輸入網址:http://localhost:8080/hello,便可看到結果:
能夠看出 Spring Boot 仍是比較容易上手的,接下來繼續學習 Spring Boot 和微服務相關的功能開發。
明天繼續,coding01 期待您繼續關注
也很感謝您能看到這了