An open API service indexing awesome lists of open source software.

https://github.com/xmopher/general-gateway

a high-performance, lightweight API gateway built with Spring Cloud Gateway
https://github.com/xmopher/general-gateway

gateway kubernetes springcloud springcloudgateway trafficcontrol

Last synced: 11 months ago
JSON representation

a high-performance, lightweight API gateway built with Spring Cloud Gateway

Awesome Lists containing this project

README

          

# Mo Gateway

### ้…็ฝฎ่ฆๆฑ‚

- JDK 21
- Maven 3.8+
- Docker
- Redis

## ๐Ÿ“– ้กน็›ฎไป‹็ป

Mo Gateway ๆ˜ฏไธ€ไธช่ฝป้‡็บงใ€้ซ˜ๆ€ง่ƒฝ็š„ API ็ฝ‘ๅ…ณๆœๅŠก๏ผŒๅŸบไบŽ Spring Boot 3.x ๅ’Œ Spring Cloud ๆž„ๅปบใ€‚ๅฎƒๆไพ›ไบ†ไธฐๅฏŒ็š„ๅŠŸ่ƒฝ้›†๏ผŒๅŒ…ๆ‹ฌ้ซ˜ๆ€ง่ƒฝ็š„่ฏทๆฑ‚่ทฏ็”ฑใ€ๆ™บ่ƒฝ่ดŸ่ฝฝๅ‡่กกใ€็ตๆดป็š„้™ๆต็ญ–็•ฅใ€ๆœๅŠกๅ‘็Žฐใ€ๅฎ‰ๅ…จๆŽงๅˆถ็ญ‰๏ผŒๆ˜ฏๆž„ๅปบ็ŽฐไปฃๅŒ–ๅพฎๆœๅŠกๆžถๆž„็š„็†ๆƒณ้€‰ๆ‹ฉใ€‚

### ็ณป็ปŸๆžถๆž„

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Client โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Mo Gateway โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ ่ทฏ็”ฑๆจกๅ— โ”‚ โ”‚ ้™ๆตๆจกๅ— โ”‚ โ”‚ ่ดŸ่ฝฝๅ‡่กกๆจกๅ— โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ ๅฎ‰ๅ…จๆจกๅ— โ”‚ โ”‚ ็›‘ๆŽงๆจกๅ— โ”‚ โ”‚ ๆœๅŠกๅ‘็Žฐๆจกๅ— โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Services โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

### ๐ŸŒŸ ๆ ธๅฟƒ็‰นๆ€ง

#### 1. ้ซ˜ๆ€ง่ƒฝ่ฏทๆฑ‚ๅค„็†
- ้‡‡็”จ Spring WebFlux ๅ“ๅบ”ๅผ็ผ–็จ‹ๆจกๅž‹๏ผŒๆไพ›ๅ“่ถŠ็š„ๆ€ง่ƒฝ่กจ็Žฐ
- ๆ”ฏๆŒ HTTP/2 ๅ่ฎฎ๏ผŒๅฎž็Žฐๆ›ด้ซ˜ๆ•ˆ็š„็ฝ‘็ปœไผ ่พ“
- ๅผ‚ๆญฅ้ž้˜ปๅกž I/O ๅค„็†๏ผŒๆ้ซ˜็ณป็ปŸๅžๅ้‡
- ๆ™บ่ƒฝ็š„่ฏทๆฑ‚ๅŽ‹็ผฉๅ’Œ็ผ“ๅญ˜็ญ–็•ฅ๏ผŒไผ˜ๅŒ–ๅ“ๅบ”ๆ—ถ้—ด

#### 2. ๆ™บ่ƒฝ่ดŸ่ฝฝๅ‡่กก
- ๆไพ›ๅคš็ง่ดŸ่ฝฝๅ‡่กก็ฎ—ๆณ•๏ผŒๆปก่ถณไธๅŒๅœบๆ™ฏ้œ€ๆฑ‚
- ่ฝฎ่ฏข็ฎ—ๆณ•๏ผš้€‚็”จไบŽๆœๅŠกๅฎžไพ‹ๆ€ง่ƒฝ็›ธ่ฟ‘็š„ๅœบๆ™ฏ
- ๅŠ ๆƒ่ฝฎ่ฏข๏ผšๆ”ฏๆŒๆœๅŠกๅฎžไพ‹ๅทฎๅผ‚ๅŒ–้…็ฝฎ
- ๆœ€ๅฐ‘่ฟžๆŽฅ๏ผš้€‚็”จไบŽ้•ฟ่ฟžๆŽฅๅœบๆ™ฏ
- ๅ“ๅบ”ๆ—ถ้—ดๅŠ ๆƒ๏ผšๆ นๆฎๆœๅŠกๅ“ๅบ”ๆ—ถ้—ดๅŠจๆ€่ฐƒๆ•ด
- ่‡ชๅŠจๆœๅŠกๅฅๅบทๆฃ€ๆŸฅ๏ผŒๅŠๆ—ถๅ‰”้™คๅผ‚ๅธธๅฎžไพ‹
- ๆ”ฏๆŒๅŠจๆ€่ฐƒๆ•ดๆœๅŠกๆƒ้‡๏ผŒๅฎž็Žฐๆ›ด็ฒพ็ป†็š„ๆต้‡ๆŽงๅˆถ

#### 3. ็ตๆดป็š„้™ๆต็ญ–็•ฅ
- ๅŸบไบŽ Redis ็š„ๅˆ†ๅธƒๅผ้™ๆต๏ผŒๆ”ฏๆŒ้›†็พค้ƒจ็ฝฒ
- ๅคš็ง้™ๆต็ฎ—ๆณ•ๆ”ฏๆŒ๏ผŒ้€‚ๅบ”ไธๅŒไธšๅŠกๅœบๆ™ฏ
- ไปค็‰Œๆกถ๏ผš้€‚ๅˆ็ชๅ‘ๆต้‡ๅœบๆ™ฏ
- ๆผๆกถ๏ผš้€‚ๅˆๅนณๆป‘ๆต้‡ๅœบๆ™ฏ
- ๆป‘ๅŠจ็ช—ๅฃ๏ผš้€‚ๅˆ็ฒพ็กฎๆŽงๅˆถๅœบๆ™ฏ
- ๆ”ฏๆŒๆœๅŠก็บงๅˆซใ€ๆŽฅๅฃ็บงๅˆซ็š„้™ๆต้…็ฝฎ
- ๆไพ›้™ๆต้™็บง็ญ–็•ฅ๏ผŒไฟ่ฏ็ณป็ปŸๅฏ็”จๆ€ง

#### 4. ๆœๅŠกๅ‘็ŽฐไธŽๆณจๅ†Œ
- ๅŽŸ็”Ÿๆ”ฏๆŒ Kubernetes ๆœๅŠกๅ‘็Žฐ
- ๆไพ›่‡ชๅฎšไน‰ๆœๅŠกๆณจๅ†Œๆœบๅˆถ
- ๆ”ฏๆŒๅŠจๆ€ๆœๅŠกไธŠไธ‹็บฟ
- ๆœๅŠกๅ…ƒๆ•ฐๆฎ็ฎก็†๏ผŒๆ”ฏๆŒๆœๅŠกๆ ‡็ญพๅ’Œๅฑžๆ€ง้…็ฝฎ

#### 5. ๅฎ‰ๅ…จ็‰นๆ€ง
- ๅฎŒๆ•ด็š„ SSL/TLS ๅŠ ๅฏ†ๆ”ฏๆŒ
- ็ตๆดป็š„่ฎค่ฏๆŽˆๆƒๆœบๅˆถ
- API ๅฏ†้’ฅ็ฎก็†
- ่ฏทๆฑ‚็ญพๅ้ชŒ่ฏ
- ๅฏ้…็ฝฎ็š„ CORS ็ญ–็•ฅ

#### 6. ็›‘ๆŽงไธŽๅฏ่ง‚ๆต‹ๆ€ง
- ้›†ๆˆ Prometheus ็›‘ๆŽง็ณป็ปŸ
- ่ฏฆ็ป†็š„่ฏทๆฑ‚่ฟฝ่ธช
- ไธฐๅฏŒ็š„ๆ€ง่ƒฝๆŒ‡ๆ ‡
- ๅฎŒๅ–„็š„ๅฅๅบทๆฃ€ๆŸฅๆœบๅˆถ
- ็ป“ๆž„ๅŒ–็š„ๆ—ฅๅฟ—่ฎฐๅฝ•

## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

### ็Žฏๅขƒ่ฆๆฑ‚
- JDK 21
- Maven 3.8+
- Docker ๅ’Œ Docker Compose
- Redis 7.x
- Kubernetes๏ผˆๅฏ้€‰๏ผŒ็”จไบŽ็”Ÿไบง็Žฏๅขƒ๏ผ‰

### ๆœฌๅœฐๅผ€ๅ‘็Žฏๅขƒๆญๅปบ
1. ๅ…‹้š†้กน็›ฎไปฃ็ 
2. ๅฏๅŠจไพ่ต–ๆœๅŠก๏ผˆRedis็ญ‰๏ผ‰
3. ๆž„ๅปบๅนถ่ฟ่กŒ้กน็›ฎ
4. ้ชŒ่ฏๆœๅŠกๆ˜ฏๅฆๆญฃๅธธ่ฟ่กŒ

## โš™๏ธ ้…็ฝฎ่ฏดๆ˜Ž

### ๅŸบ็ก€้…็ฝฎ
็ฝ‘ๅ…ณๆœๅŠกๆ”ฏๆŒไธฐๅฏŒ็š„้…็ฝฎ้€‰้กน๏ผŒๅŒ…ๆ‹ฌ๏ผš
- ๆœๅŠก็ซฏๅฃ้…็ฝฎ
- SSL/TLS ้…็ฝฎ
- HTTP/2 ๆ”ฏๆŒ
- ้™ๆตๅ‚ๆ•ฐ้…็ฝฎ
- ่ดŸ่ฝฝๅ‡่กก็ญ–็•ฅ
- ๆœๅŠกๅ‘็Žฐ้…็ฝฎ

่ฏฆ็ป†้…็ฝฎ่ฏดๆ˜Ž่ฏทๅ‚่€ƒ [้…็ฝฎๆŒ‡ๅ—](docs/configuration.md)

### ็Žฏๅขƒๅ˜้‡
ๆ”ฏๆŒ้€š่ฟ‡็Žฏๅขƒๅ˜้‡่ฆ†็›–้ป˜่ฎค้…็ฝฎ๏ผŒไธป่ฆ้…็ฝฎ้กนๅŒ…ๆ‹ฌ๏ผš
- ๆœๅŠกๅ‘็Žฐ็ฑปๅž‹
- Redis ่ฟžๆŽฅไฟกๆฏ
- ้™ๆตๅ‚ๆ•ฐ
- ๆ—ฅๅฟ—็บงๅˆซ
- ็›‘ๆŽง้…็ฝฎ

## ๐Ÿ”Œ ไธšๅŠกๆœๅŠกๆŽฅๅ…ฅๆŒ‡ๅ—

### ๆœๅŠกๆŽฅๅ…ฅๆต็จ‹
1. ๆœๅŠกๆณจๅ†Œ
- Kubernetes ็Žฏๅขƒ้…็ฝฎ
- ้ž Kubernetes ็Žฏๅขƒ้…็ฝฎ
2. ้™ๆต้…็ฝฎ
3. ่ดŸ่ฝฝๅ‡่กก้…็ฝฎ
4. ็›‘ๆŽง้›†ๆˆ

่ฏฆ็ป†ๆŽฅๅ…ฅ่ฏดๆ˜Ž่ฏทๅ‚่€ƒ [ๆœๅŠกๆŽฅๅ…ฅๆŒ‡ๅ—](docs/integration.md)

## ๐Ÿณ ้ƒจ็ฝฒๆŒ‡ๅ—

### ้ƒจ็ฝฒๆ–นๅผ
1. Docker ้ƒจ็ฝฒ
- ๅ•ๆœบ้ƒจ็ฝฒ
- ้›†็พค้ƒจ็ฝฒ
2. Kubernetes ้ƒจ็ฝฒ
- ๅŸบ็ก€้ƒจ็ฝฒ
- ้ซ˜ๅฏ็”จ้ƒจ็ฝฒ

่ฏฆ็ป†้ƒจ็ฝฒ่ฏดๆ˜Ž่ฏทๅ‚่€ƒ [้ƒจ็ฝฒๆŒ‡ๅ—](docs/deployment.md)

## ๐Ÿ“Š ็›‘ๆŽงไธŽ่ฟ็ปด

### ็›‘ๆŽงๆŒ‡ๆ ‡
- ๆœๅŠกๅฅๅบท็Šถๆ€
- ๆ€ง่ƒฝๆŒ‡ๆ ‡
- ้™ๆต็ปŸ่ฎก
- ็ณป็ปŸ่ต„ๆบไฝฟ็”จๆƒ…ๅ†ต

### ๆ—ฅๅฟ—็ฎก็†
- ็ป“ๆž„ๅŒ–ๆ—ฅๅฟ—
- ๆ—ฅๅฟ—ๆ”ถ้›†
- ๆ—ฅๅฟ—ๅˆ†ๆž

่ฏฆ็ป†่ฟ็ปด่ฏดๆ˜Ž่ฏทๅ‚่€ƒ [่ฟ็ปดๆŒ‡ๅ—](docs/operation.md)

## ๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

ๆฌข่ฟŽ่ดก็Œฎไปฃ็ ๏ผŒๆไบค Issue ๆˆ– Pull Requestใ€‚่ฏท็กฎไฟ๏ผš
1. ้ตๅพชไปฃ็ ่ง„่Œƒ
2. ๆทปๅŠ ๅฟ…่ฆ็š„ๆต‹่ฏ•
3. ๆ›ดๆ–ฐ็›ธๅ…ณๆ–‡ๆกฃ

่ฏฆ็ป†่ดก็ŒฎๆŒ‡ๅ—่ฏทๅ‚่€ƒ [่ดก็ŒฎๆŒ‡ๅ—](docs/contributing.md)

## ๐Ÿ“ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ่ฎธๅฏ่ฏ

## ๐Ÿ“ž ่”็ณปๆ–นๅผ

- ้กน็›ฎ็ปดๆŠค่€…๏ผš[Mo]
- ้‚ฎ็ฎฑ๏ผš[xmopher@hotmail.com]
- ้กน็›ฎ้“พๆŽฅ๏ผš[https://github.com/xmopher/gateway.git]