Apache ShenYu

Apache ShenYu 是一个 Java 原生 API 网关,用于服务代理、协议转换和 API 治理。「Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance.」

Github stars Tracking Chart

Soul

这是一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!

Features

  • 支持各种语言,无缝集成Dubbo,SpringCloud。
  • 丰富的插件支持,鉴权,限流,熔断,防火墙等等。
  • 网关多种规则动态配置,支持各种策略配置。
  • 插件热插拔,易扩展。
  • 支持集群部署,支持A/B Test。

架构图

Prerequisite

  • JDK 1.8+

  • Maven 3.2.x

  • Git

  • mysql

原文:https://dromara.org/zh-cn/docs/soul/soul.html

Main metrics

Overview
Name With Ownerapache/shenyu
Primary LanguageJava
Program languageJava (Language Count: 10)
PlatformLinux, Mac, Unix-like, Windows
License:Apache License 2.0
所有者活动
Created At2018-07-11 08:17:45
Pushed At2025-07-21 08:40:40
Last Commit At2025-07-21 16:40:40
Release Count17
Last Release Namev2.7.0.1 (Posted on 2025-04-24 19:33:06)
First Release Name1.0.2 (Posted on )
用户参与
Stargazers Count8.6k
Watchers Count293
Fork Count3k
Commits Count3.6k
Has Issues Enabled
Issues Count2370
Issue Open Count113
Pull Requests Count3071
Pull Requests Open Count15
Pull Requests Close Count590
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Soul

Codacy Badge
Total lines
License
Maven Central
QQ群

Reactive gateway based on webflux

Architecture

Execution Flow

Modules

  • soul-admin : Plug-in and other information configuration management background

  • soul-bootstrap : With the startup project, users can refer to

  • soul-common : Framework common class

  • soul-configuration : zookeeper configuration project

  • soul-spring-boot-starter : Support for the spring boot starter

  • soul-web : Core processing packages include plug-ins, request routing and forwarding, and so on

  • soul-client : User fast access, automatic new metadata, rule selector

  • soul-extend-demo : Demo of the extension point

  • soul-test : the rpc test project

Features

  • It provides plugins such as current limiting, fusing, forwarding, routing monitoring and so on.

  • Seamless docking with HTTP,Restful,websocket,dubbo and springcloud.

  • Plug-in hot plug, users can customize the development.

  • Selectors and rules are dynamically configured for flexible matching.

  • Support for cluster deployment.

  • Support A/B test and grayscale publishing。

Plugin

Whenever a request comes in ,Soul Execute all open plug-ins through the chain of responsibility.

Plugins are the heart of soul And plug-ins are extensible and hot-pluggable.

Different plug-ins do different things

Of course, users can also customize plug-ins to meet their own needs.

If you want to customize, see plugin-extend

Selector & rule

According to your HTTP request headers, selectors and rules are used to route your requests.

Selector is your first route, It is coarser grained, for example, at the module level.

Rule is your second route and what do you think your request should do,For example a method level in a module.

The selector and the rule match only once, and the match is returned. So the coarsest granularity should be sorted last.

Data Caching & Data Sync

All data is cached ConcurrentHashMap in the JVM So it's very fast.

When the user is managing changes in the background,

Soul dynamically updates the cache by listening to the zookeeper node, websocket push,http longPull.

Data Sync

Sync Flow

Quick Start

  • get soul-admin.jar
> wget  https://yu199195.github.io/jar/soul-admin.jar
  • start soul-admin.jar
> java -jar soul-admin.jar --spring.datasource.url="jdbc:mysql://your ip:3306/soul?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&failOverReadOnly=false&autoReconnect=true&useSSL=false"  
  --spring.datasource.username="you username"  --spring.datasource.password="you password"
  • visit : http://localhost:9095/index.html username:admin password :123456

  • get soul-bootstrap.jar

> wget  https://yu199195.github.io/jar/soul-bootstrap.jar
  • start soul-bootstrap.jar
 java -jar soul-bootstrap.jar

Prerequisite

  • JDK 1.8+

  • Mysql

About & Document

Soul Has been used in our production environment,Its performance and flexibility allow us to use up very cool.

In double 11, we deployed 6 clusters, which supported a large volume of our business.

If you want to use it, you can see Document

Stargazers over time

Stargazers over time

Videos

Known Users

按照登记顺序排序,更多接入公司,欢迎在https://github.com/Dromara/soul/issues/68登记(仅供开源用户参考)

Support