入门运行Soul

简介: Soul 是基于 WebFlux 的高性能响应式 API 网关,支持 Dubbo、Spring Cloud、HTTP 等多协议,具备插件化、热插拔、动态流量控制、鉴权限流等丰富功能,支持 A/B 测试与蓝绿发布。依托 MySQL + JDK 1.8+ 环境,通过 WebSocket 等实现配置秒级同步,架构灵活易扩展,助力微服务高效治理。

Git地址:https://github.com/Dromara/soul
运行环境:
● MySQL 5.
● JDK 1.8+
● MAVEN 3.2.

● Git
更多原理性知识可以参考官网API:https://dromara.org/zh-cn/docs/soul/induction.html
前言
Soul 是基于 WebFlux 实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。
目前 Soul 功能列表如下:
● 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。
Soul 是极其少支持 Dubbo 的 API 网关,通过 Dubbo 泛化调用 实现。
● 支持各种语言(http协议),支持 dubbo,springcloud协议。
● 插件化设计思想,插件热插拔,易扩展。
● 灵活的流量筛选,能满足各种流量控制。
● 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
● 流量配置动态化,性能极高,网关消耗在 1~2ms。
● 支持集群部署,支持 A/B Test, 蓝绿发布。
整体架构如下图所示:
1.下载导入
执行:git clone https://github.com/Dromara/soul,下载到本地,导入到Idea中
2.启动soul-admin
更改soul-admin中配置文件,数据库模块
需要现在本地创建一个soul的数据库,如果不想使用这个名字也可以更改默认url配置项中的名称

运行之后,访问 http://127.0.0.1:9095/ 地址,进入登录页,默认内置管理员账号「admin/123456」。

以上完成admin相关模块启动

如果你的mysql数据库版本比较低,替换:META-INFO下面的schema.sql为下面

3.启动网关boostrap
理论上来说,admin启动成功后,直接启动boostrap模块就可以,不会报错,除非想更改配置文件中的数据同步方式,2.0之后的Soul支持WebSocket,Http长轮询,Zookeeper三种方式,默认使用 http 长轮询同步策略,可以做到秒级数据同步,如果刚好有其它类型服务,可以切换,官方建议使用WebSocket。

相关文章
|
4月前
|
设计模式 Java 程序员
推荐书籍
推荐多本Java经典书籍:《Head First Java》适合入门,《Java核心技术》深入巩固基础,《Java编程思想》整合设计模式,适合进阶。并发方面有《Java并发编程之美》等,JVM推荐《深入理解Java虚拟机》与《实战JVM》。体系全面,适合不同阶段学习。
|
4月前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
4月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑与代码解耦。结合实体别名、接口规则定义及脚本化表达式,实现动态计算与判断,如用户年龄判断、BMI计算等。支持AST语法树解析与上下文绑定,提供灵活的二次扩展能力,适用于复杂业务场景的延迟执行与缓存优化。
|
4月前
|
运维 Devops 开发工具
生产环境缺陷管理
在大型团队中,多分支开发易导致bug漏修、漏发,引发严重生产事故。我们基于go-git打造通用化工具git-poison,实现bug的分布式追溯与管理,支持投毒、解毒、银针三步卡点,自动阻塞带缺陷版本发布,降低协同成本,提升发布安全性,已在实际流程中稳定运行一年以上。
|
4月前
|
Java 大数据
ArrayList扩容机制
ArrayList 添加元素时,先调用 `ensureCapacityInternal` 检查容量,首次添加时默认扩容至 10。`grow()` 方法实现扩容,新容量为旧容量的 1.5 倍(通过位运算 `>>` 提升效率),确保数组动态扩展性能。`length` 用于数组长度,`length()` 是字符串方法,`size()` 用于集合元素计数。
|
4月前
|
存储 缓存 安全
One Trick Per Day
初始化Map应避免容量设置不当,推荐使用Guava的`newHashMapWithExpectedSize`或手动计算初始容量。禁止使用`Executors`创建线程池,易因无界队列或过多线程引发OOM,应显式使用`ThreadPoolExecutor`并合理配置参数。`Arrays.asList`返回不可变列表,不支持增删操作,且与原数组共享数据。遍历Map时优先使用`entrySet`提升性能,JDK8可用`forEach`。`SimpleDateFormat`非线程安全,建议用`ThreadLocal`隔离或改用Java 8时间API。并发修改记录需加锁,推荐乐观锁(version控制)
|
4月前
|
Java
JVM
图片展示了一幅色彩斑斓的抽象艺术画作,线条流畅、层次丰富,融合了蓝、紫、黄等多色渐变,营造出深邃而梦幻的视觉效果,仿佛星河流动或意识深处的想象,给人以无限遐想空间。(198字符)
|
4月前
|
缓存 算法 Java
线程池
本文深入剖析Java线程池实现原理,涵盖ThreadPoolExecutor与ScheduledThreadPoolExecutor核心机制,解析线程复用、任务队列、拒绝策略及周期性调度的底层逻辑,并对比Executors工具类各类线程池的应用场景。
|
4月前
|
监控 算法 Unix
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep用于让线程暂时放弃CPU,指定时间内不参与调度。Sleep(1000)不保证精确唤醒时间,受系统调度影响;而Sleep(0)会触发立即重新计算各线程优先级,促使CPU切换,避免长时间占用,提升多线程响应性,常用于防止界面假死。
|
4月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍MongoDB数据库的基本操作,以文章评论存储为例,涵盖数据库与集合的创建、删除,文档的增删改查及分页排序查询。内容包括use、insert、find、update、remove等常用命令,以及count、limit、skip、sort等分页排序方法,帮助快速掌握MongoDB核心操作。

热门文章

最新文章