@TOC
問題背景
從零開始學springcloud微服務項目
注意事項:
- 約定 > 配置 > 編碼
- IDEA版本2021.1
- 這個項目昨忆,我分了很多篇章缝裤,每篇文章一個操作步驟敛瓷,目的是顯得更簡單明了
- controller調(diào)service雹顺,service調(diào)dao
- 項目源碼以及sentinel安裝包
gateway簡介
1 zuul1.0是阻塞式野来,然后2.0遲遲不更新,springcloud除了一套gateway方案疾牲,可以做:
- 反向代理
- 鑒權
- 流量控制
- 熔斷
-
日志監(jiān)控
2 路由是構(gòu)建網(wǎng)關的基本模塊植捎,它由ID,目標URI阳柔,一系列的斷言和過濾器組成焰枢,如果斷言為true則匹配該路由
3 參考的是Java8的java.util.function.Predicate,開發(fā)人員可以匹配HTTP請求中的所有內(nèi)容(例如請求頭或請求參數(shù))舌剂,如果請求與斷言相匹配則進行路由
4 指的是Spring框架中GatewayFilter的實例济锄,使用過濾器,可以在請求被路由前或者之后對請求進行修改
5 基本流程 -
web請求霍转,通過一些匹配條件荐绝,定位到真正的服務節(jié)點。并在這個轉(zhuǎn)發(fā)過程的前后谴忧,進行一些精細化控制很泊。
predicate就是我們的匹配條件;而filter沾谓,就可以理解為一個無所不能的攔截器委造。有了這兩個元素,再加上目標uri均驶,就可以實現(xiàn)一個具體的路由了
gateway模塊搭建
1 新建module
2 選擇jdk1.8
3 輸入服務名:cloud-gateway-gateway9527
4 引入pom依賴
<?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>springcloud2022</artifactId>
<groupId>com.yg</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-gateway-gateway9527</artifactId>
<dependencies>
<!--gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入自己定義的api通用包昏兆,可以使用Payment支付Entity -->
<dependency>
<groupId>com.yg</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!--一般基礎配置類-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5 添加application.yml文件
server:
port: 9527
spring:
application:
name: cloud-gateway
cloud:
gateway:
routes:
- id: payment_routh #payment_route #路由的ID,沒有固定規(guī)則但要求唯一妇穴,建議配合服務名
uri: http://localhost:8001 #匹配后提供服務的路由地址
predicates:
- Path=/payment/get/** # 斷言爬虱,路徑相匹配的進行路由
eureka:
instance:
hostname: cloud-gateway-service
client: #服務提供者provider注冊進eureka服務列表內(nèi)
service-url:
register-with-eureka: true
fetch-registry: true
defaultZone: http://eureka7001.com:7001/eureka
6 添加啟動類
package com.yg.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author suolong
* @Date 2022/6/20 10:18
* @Version 2.0
*/
@SpringBootApplication
public class GateWayMain9527 {
public static void main(String[] args) {
SpringApplication.run(GateWayMain9527.class, args);
}
}
7 整體目錄架構(gòu)
8 使用網(wǎng)關路由訪問:http://localhost:9527/payment/get/1
SpringCloud無介紹快使用,Seata處理分布式事務(二十五)
SpringCloud無介紹快使用腾它,sentinel服務熔斷功能(二十四)
SpringCloud無介紹快使用跑筝,sentinel注解@SentinelResource的基本使用(二十三)
SpringCloud無介紹快使用,sentinel熱點key限流與系統(tǒng)規(guī)則的基本使用(二十二)
SpringCloud無介紹快使用瞒滴,sentinel熔斷降級和限流的基本使用(二十一)
SpringCloud無介紹快使用曲梗,Nacos集群和Nginx代理(二十)
SpringCloud無介紹快使用,nacos配置中心的基本使用(十九)
SpringCloud無介紹快使用妓忍,nacos注冊中心的基本使用(十八)
SpringCloud無介紹快使用虏两,gateway通過微服務名實現(xiàn)動態(tài)路由(十七)
SpringCloud無介紹快使用,gateway的基本使用(十六)
SpringCloud無介紹快使用世剖,Ribbon負載均衡工具與OpenFeign的使用(十五)
SpringCloud無介紹快使用定罢,使用Zookeeper替換Eureka服務注冊與發(fā)現(xiàn)(十四)
SpringCloud無介紹快使用,服務發(fā)現(xiàn)Discovery和Eureka自我保護(十三)
SpringCloud無介紹快使用旁瘫,集群cloud-provider-payment8002搭建(十二)
SpringCloud無介紹快使用祖凫,集群Eureka服務注冊中心cloud-eureka-server7002搭建(十一)
SpringCloud無介紹快使用,單機Eureka服務注冊中心cloud-eureka-server7001搭建(十)
SpringCloud無介紹快使用酬凳,新建cloud-api-commons公共模塊module(九)
SpringCloud無介紹快使用蝙场,新建子module消費者訂單模塊(八)
SpringCloud無介紹快使用,熱部署devtools配置(七)
SpringCloud無介紹快使用粱年,子module提供者支付微服務業(yè)務開發(fā)(六)
SpringCloud無介紹快使用售滤,新建子module提供者支付微服務yml整合和新建啟動類(五)
SpringCloud無介紹快使用,新建子module提供者支付微服務pom整合(四)
SpringCloud無介紹快使用台诗,springcloud父工程pom文件整理(三)
SpringCloud無介紹快使用完箩,IDEA新建springcloud父工程(二)
SpringCloud無介紹快使用,與Spingboot之間的兼容版本選擇(一)
作為程序員第 183 篇文章拉队,每次寫一句歌詞記錄一下弊知,看看人生有幾首歌的時間,wahahaha ...