SpringCloud學習筆記(一)
阿新 • • 發佈:2018-12-26
宣告:關於springcloud微服務的整套學習筆記都是基於開源專案AG-Admin的學習而整理的,本次文章中所涉及的包名或人名都沿用開源專案裡面的名稱,也算是給老A推廣推廣他的專案吧。專案地址:https://gitee.com/geek_qi/ace-security。感謝老A能夠帶頭去搭建一個完整的spingcloud的微服務架構,這對於想要學習springcloud 的新手來說是莫大的福利。鑑於自己對這個專案的理解和學習,打算寫一系列文章記錄下來,方便自己以後查詢使用,同時也能給需要的人提供一些參考。
首先大家需要對Eureka,Zuul、Ribbon等一些詞語及它所對應的功能有一些瞭解,關於它們的作用我這裡就不介紹了,下面主要想講一下注冊中心和閘道器的搭建。
一、搭建註冊中心
首先新建一個父工程,引入springcloud相關的依賴:
父工程的名稱叫ag-parent,接下來我們建立一個子工程取名ag-eureka,也就是註冊中心,配置檔案如下:<?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>
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註冊中心上了,如下圖:
下一篇我們再介紹配置微服務和使用者微服務的搭建和訪問。