90 后少年,开源传奇!
今天给大家分享下小林一位朋友的大喜事。
先来介绍下这位朋友,他是位热爱开源的 90 后小伙,同时也是爱猫咪的程序员,因此大家都称他为喵大人。
喵大人一个人创办了 Dromara 开源社区,自己一人也开源了很多分布式事务框架,后面他的开源社区吸引了很多志同道合的朋友,社区也在逐渐扩大。
最近就发生了一个喜事,喵大人开源的分布式网关框架 Soul,经过多位社区朋友的共同维护和努力,这个开源项目成功已经加入到了 Apache 基金会孵化阶段。
喵大人和他社区的朋友们这股开源精神值得大家学习,期待未来他们的项目能成为顶级项目!
接下来,是「喵大人和他社区的朋友们」想说的。
北京时间 2021 年 5 月 3 日,Dromara 开源社区的 Soul 网关经过 Apache Incubator 的投票,正式步入 Apache 基金会孵化器。
根据投票结果,我们获得了10个约束性投票(binding votes)和 7 个无约束性投票(non-binding votes)的投票,全部持赞同意见,无弃权票和反对票,投票顺利通过。
随后,Soul网关项目将改名为 ShenYu。
ShenYu 架构
ShenYu 结构图
功能特点
提供了诸如限流、熔断、转发 、重写、重定向、和路由监控等插件;
支持 HTTP、RESTFul、WebSocket、Dubbo、 GRPC、 Tars、 Spring Cloud 代理;
支持热插拔,用户可以定制化开发;
为了灵活的适配,选择器和规则可以动态的适配;
支持集群部署;
支持 A/B 测试和灰度发布。
模块
soul-admin : 插件和其他信息配置的管理后台
soul-bootstrap : 用于启动项目,用户可以参考
soul-client : 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问
soul-disruptor : 基于disruptor的封装
soul-register-center : 为soul-client提供各种rpc接入注册中心的支持
soul-common : 框架的通用类
soul-dist : 构建项目
soul-metrics : prometheus(普罗米修斯)实现的 metrics
soul-plugin : Soul 支持的插件集合
soul-spi : 定义 Soul spi
soul-spring-boot-starter : 支持 spring boot starter
soul-sync-data-center : 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据
soul-examples : RPC 示例项目
soul-web : 包括插件、请求路由和转发等的核心处理包
插件化设计
无论请求何时进入,Soul 会通过响应链执行所有已打开的插件。
插件是 Soul 的灵魂,并且插件也是可扩展和热插拔的。
不同的插件实现不同的功能。
当然,用户也可以定制化插件去满足他们自己的需求。
如果你有定制化插件的需求,请参看这里:https://dromara.org/zh/projects/soul/custom-plugin/
数据缓存 & 数据同步
所有的数据都被缓存在 JVM 的 ConcurrentHashMap 中,所以它非常快。
当用户在后台界面改变配置信息时,Soul 通过监听 ZooKeeper node,WebSocket push,HTTP longPull 来动态更新缓存。
为什么叫神禹
ShenYu (神禹)是我们古代君王夏禹的尊称(后世也尊称大禹),为造福百姓,成功治理黄河水患,留下了三过家门而不入的感人故事。其和尧舜并称为中国古代最伟大的三位君王
首先,取名为ShenYu是弘扬我们中华文明的传统美德。
其次,网关最最重要的是对流量的治理。
最后,社区将会以公平,公正,公开,任人唯贤的做事方式,致敬神禹的同时也非常符合Apache Way。
感谢
我在 2018 年 3 月写下 soul 网关的第一行代码和创立 Dromara 开源社区的时候,并没有想到过,社区的力量是如此的强大,社区的同学会如此的热情,非常感谢每一位同学提交的代码,写下的每一篇源码解析的文章,参与的每一次分享活动以及每一个Issue。
感谢 Apache 基金会孵化器的每一位导师,他们耐心的布道,提供了建设性的意见,让孵化之路更加通畅。
最后,如果大家想了解 ShenYu 开源项目,可以点击「阅读原文」,跳转到 Github。