Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions .gitignore

This file was deleted.

4 changes: 4 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 44 additions & 0 deletions gateway/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<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>
<parent>
<groupId>org.codenotknock</groupId>
<artifactId>SpringDemo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>gateway</artifactId>
<packaging>jar</packaging>
<name>gateway</name>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- gateway 网关服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- 整合nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- sentinel 整合 gateway-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>

<build>
<finalName>gateway</finalName>
</build>
</project>
13 changes: 13 additions & 0 deletions gateway/src/main/java/org/codenotknock/GatewayApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.codenotknock;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class GatewayApplication{

public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
17 changes: 17 additions & 0 deletions gateway/src/main/resources/application-demo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
server:
port: 9990
spring:
application:
name: api-gateway
cloud:
gateway:
discovery:
locator:
enabled: true # 是否启动自动识别nacos服务

# 配置nacos
nacos:
discovery:
server-addr: 127.0.0.1:8847
username: nacos
password: nacos
26 changes: 26 additions & 0 deletions gateway/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
server:
port: 9990
spring:
application:
name: api-gateway
cloud:
gateway:
# 路由规则
routes:
- id: order_route # 路由的唯一标识
uri: lb://order-service # lb:LoadBalancer 使用 nacos本地负载均衡策略
#uri: http://localhost:8888 # 需要转发到的地址
# 断言规则:用于路由规则的匹配
predicates:
- Path=/order-server/**
# http://localhost:8080/order-server/order/add
# 转发到 http://localhost:8888/order-server/order/add
filters:
- StripPrefix=1 # 转发之前 去除第一层路径 变成 http://localhost:8888/order/add
# 配置nacos
nacos:
discovery:
server-addr: 127.0.0.1:8847
username: nacos
password: nacos

34 changes: 34 additions & 0 deletions order-fegin/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.codenotknock</groupId>
<artifactId>SpringDemo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>order-fegin</artifactId>
<packaging>jar</packaging>
<name>order-fegin</name>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- nacos-服务注册发现 依赖 不加版本号 idea 不加载 奇怪???-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.4.0</version>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

</dependencies>
<build>
<finalName>order-fegin</finalName>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.codenotknock.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableFeignClients
public class OrderNacosApplication {
public static void main(String[] args) {
SpringApplication.run(OrderNacosApplication.class, args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.codenotknock.order.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* @author xiaofu
* 远程调用的全局配置 日志
* 全局配置:当使用 @Configuration 时,会将其配置作用于所有的服务提供方
* 局部配置:针对某一个服务进行配置,就不要加注解 @Configuration
*/
@Configuration
public class Feginconfig {

@Bean
public Logger.Level feginLoggerLevel() {
return Logger.Level.FULL;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.codenotknock.order.controller;

import org.codenotknock.order.fegin.StockFeginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author xiaofu
* @date 2023/12/20 2:10
*/

@RestController
@RequestMapping("/order")
public class OrderController {

@Autowired
private StockFeginService stockFeginService;


@PostMapping("/add")
public String add() {
System.out.println("下单成功!");
String msg = stockFeginService.reduce();
return "下单成功!" + msg ;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.codenotknock.order.fegin;

import org.codenotknock.order.config.Feginconfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
* @author xiaofu
* fegin 的使用 展示 : 底层是动态代理
* name : 指定调用 rest 接口所对应的服务名
* path : 指定调用 rest 接口所在的 StockController 指定的 @RequestMapping
*/

@FeignClient(name="stock-service", path = "/stock", configuration = Feginconfig.class)
public interface StockFeginService {
// 声明需要调用的 rest 接口对应的方法
@GetMapping("/reduce")
String reduce();

}

/*

public class StockController {

@GetMapping("/reduce")
public String reduce() {
System.out.println("库存减少!");
return "库存减少!";
}
}

*/

26 changes: 26 additions & 0 deletions order-fegin/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
server:
port: 10000

# 应用名称 nacos会将应用名称当作服务名称
spring:
application:
name: order-service
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
username: nacos # 登录 nacos 的用户名 默认也是 nacos
password: nacos # 登录 nacos 的密码 默认也是 nacos
namespace: dev # 命名空间 默认是 public 隔离不同的服务示例 比如dev、uat、prod 不同的环境
ephemeral: false # 是否为临时示例 true: 临时实例 false:永久实例 即使服务挂掉依然存在

# spring的默认日志级别info fegin的日志级别为debug
logging:
level:
org.codenotknock.order.fegin: debug
# fegin 对应服务日志配置
feign:
client:
config:
stock-service:
logger-level: BASIC
36 changes: 36 additions & 0 deletions order-loadbalancer/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.codenotknock</groupId>
<artifactId>SpringDemo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>order-loadbalancer</artifactId>
<packaging>jar</packaging>
<name>order-loadbalancer</name>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- nacos-服务注册发现 依赖 不加版本号 idea 不加载 奇怪???-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.4.0</version>
</dependency>

<!-- nacos 2021 及之后的版本已经移除了Ribbon支持,如果需要实现负载均衡,
官方推荐替代方案是采用Spring Cloud LoadBalancer,-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

</dependencies>
<build>
<finalName>order-loadbalancer</finalName>
</build>
</project>
Loading