Soul 网关探索(一)基本介绍 & 环境配置

背景:

自从上次立了一个flag(以后要如何更好地输出博客)后,到今天居然快整整一年没写过博客了!这flag实在威力太大…[捂脸]

2020年我们经历了新冠病毒这个黑天鹅事件,我也离开了呆了两年半的前东家,跳槽到了一家我还比较满意的互联网公司,对自己的职业生涯规划有了新的思考,同时也更深刻认识到了自己的不足,需要我去弥补追赶的还有好多好多…(针对这个我有空可以写一篇博客分享 ~)

作为曾经萌生过转产品念头的佛系技术人,我越发坚定了在技术道路上继续探索下去的决心,从今天开始我准备重操旧业,开始输出博客!最近在和一群小伙伴一起学习soul网关,就把这个当成2021年的第一个系列博客吧 ~



一、基本介绍

soul是一个基于WebFlux实现的响应式API网关,具有异步、高性能、跨语言等特点。

官网:https://dromara.org/zh-cn/docs/soul/soul.html


名称由来:

作者希望能够有一样东西像灵魂一样,保护我们的的微服务~


实现参考:

soul的实现参考了Kong、Spring-Cloud-Gateway等优秀的网关,诞生在巨人的肩膀上。


特性:

  1. 支持各种语言(http协议),支持 dubbo,springcloud协议。
  2. 插件化设计思想,插件热插拔,易扩展。
  3. 灵活的流量筛选,能满足各种流量控制。
  4. 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
  5. 流量配置动态化,性能极高,网关消耗在 1~2ms。
  6. 支持集群部署,支持 A/B Test, 蓝绿发布。

架构图:

图片

二、代码编译

GitHub地址:https://github.com/dromara/soul

注意,如果从GitHub clone速度较慢,可以使用chrome插件加速:

### Soul 网关概述 Soul 网关高性能、可扩展的微服务网关,其设计灵感来源于 Kong 和 Spring Cloud Gateway 等优秀开源项目[^2]。它支持多种协议和插件化功能,能够满足复杂的业务需求。 #### 特点 Soul 网关具有以下显著特点: - **高可用性和性能**:基于 WebFlux 框架构建,提供异步非阻塞的能力,从而提升系统的吞吐量和响应速度[^4]。 - **灵活的插件机制**:通过插件形式实现各种中间层逻辑处理,例如限流、熔断、日志记录等功能[^1]。 - **多协议支持**:除了 HTTP 协议外,还支持 Dubbo、gRPC 等其他通信协议[^5]。 #### 架构图 以下是 Soul 网关的核心架构概览: ```plaintext +-------------------+ | Admin UI | +---------+--------+ | v +---------+--------+ | Data Sync | -----> Redis/MQ (消息队列) +---------+--------+ | v +---------+--------+ | Plugin | +---------+--------+ | v +---------+--------+ | Gateway Engine | +---------+--------+ ``` 该架构展示了如何通过管理界面配置规则并实时同步到网关引擎中执行相应操作[^3]。 #### 安装与部署指南 为了快速上手 Soul 网关,可以按照如下方式准备开发环境: 1. 下载官方发布的最新版本源码或者二进制包; 2. 配置必要的依赖组件(如 MySQL 数据库用于存储元数据;Redis 或 Kafka 实现动态更新推送); 3. 启动应用后访问默认端口 `8080` 查看运行状态。 #### 示例代码片段 下面是个简单的 Spring Boot 应用集成 Divide 插件的例子来展示如何定义路由规则: ```java import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component public class SoulConfig { @Bean public DivideRule divideRule() { DivideRule rule = new DivideRule(); rule.setContextPath("/example"); rule.setUrlList(Collections.singletonList("http://localhost:9090")); return rule; } } ``` 此段程序设置了当匹配路径 `/example` 的请求会转发给目标服务器监听于 `http://localhost:9090` 地址的服务实例上去完成后续调用过程。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值