1. 程式人生 > >SpringCloud學習筆記(一)

SpringCloud學習筆記(一)

宣告:關於springcloud微服務的整套學習筆記都是基於開源專案AG-Admin的學習而整理的,本次文章中所涉及的包名或人名都沿用開源專案裡面的名稱,也算是給老A推廣推廣他的專案吧。專案地址:https://gitee.com/geek_qi/ace-security。感謝老A能夠帶頭去搭建一個完整的spingcloud的微服務架構,這對於想要學習springcloud 的新手來說是莫大的福利。鑑於自己對這個專案的理解和學習,打算寫一系列文章記錄下來,方便自己以後查詢使用,同時也能給需要的人提供一些參考。   

        首先大家需要對Eureka,Zuul、Ribbon等一些詞語及它所對應的功能有一些瞭解,關於它們的作用我這裡就不介紹了,下面主要想講一下注冊中心和閘道器的搭建。

一、搭建註冊中心

首先新建一個父工程,引入springcloud相關的依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>
    <groupId>com.github.wxiaoqi.learning</groupId>
    <artifactId>ag-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.33</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.11</version>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>
父工程的名稱叫ag-parent,接下來我們建立一個子工程取名ag-eureka,也就是註冊中心,配置檔案如下:
spring:
  application:
    name: ag-eureka
eureka:
  client:
    register-with-eureka: false #不作為客戶端註冊到服務中心
    fetch-registry: false #發現註冊中心(否)
server:
  port: 8761
依賴檔案:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ag-parent</artifactId>
        <groupId>com.github.wxiaoqi.learning</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ag-eureka</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.3.0.RELEASE</version>
        </dependency>
    </dependencies>

</project>
距離註冊中心搭建完成還差最後一步:

新建一個包,在包中建立EurekaBootstrap啟動類,內容如下:

package com.github.wxiaoqi.ag.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * <pre>
 *    author  : lpf
 *    time    : 2017/10/2911:14
 *    desc    : 輸入描述
 * </pre>
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaBootstrap {
    public static void main(String[] args) {
        SpringApplication.run(EurekaBootstrap.class,args);
    }
}
至此,註冊中心就搭建完成了,怎麼樣?是不是覺得簡單又快捷呢?啟動後訪問8761埠看到如下頁面就說明註冊中心搭建成功了。


二、搭建閘道器

在ag-parent模組下面我們新建一個module叫ag-zuul,閘道器的搭建也分三部分:配置檔案、依賴檔案和啟動類。

配置檔案如下:

spring:
  application:
    name: ag-gate
zuul:
  prefix: /api #攔截所有以api開頭的請求都經過zuul路由
  routes: #todo 路由定義
    user-center:
      path: /uc/**
      serviceId: user-center
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
server:
  port: 8765
依賴檔案:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ag-parent</artifactId>
        <groupId>com.github.wxiaoqi.learning</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ag-zuul</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

</project>
新建一個啟動類叫APIGateBootstrap,程式碼如下:
package com.github.wxiaoqi.gate;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * <pre>
 *    author  : lpf
 *    time    : 2017/10/2922:08
 *    desc    : 輸入描述
 * </pre>
 */
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
@EnableDiscoveryClient
public class APIGateBootstrap {
    public static void main(String[] args) {
        SpringApplication.run(APIGateBootstrap.class,args);
    }
}
這個時候我們啟動閘道器微服務,它 就會註冊到eureka註冊中心上了,如下圖:


下一篇我們再介紹配置微服務和使用者微服務的搭建和訪問。