跟着《架構探險》學輕量級微服務架構 (一)

架構探險
架構探險

微服務概念這兩年已經火遍大江南了,但在實際的開發和使用中,用到的仍是挺少的,尤爲對創業團隊來講。前端

在上一個產品中,咱們也在把傳統的開發模式,不斷往「微服務」方向靠攏。但終究仍是處於學習階段。最近偶然發現有人推薦《架構探險 輕量級微服務架構》上下冊這兩本書,簡單的看了看目錄後,以爲使用到的技術,有些已經在開發過程當中用到過,有些可能會在將來的某一階段會使用到。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

寫代碼

微服務開發框架 —— 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.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 期待您繼續關注

qrcode
qrcode


也很感謝您能看到這了

qrcode
qrcode
相關文章
相關標籤/搜索