点击上方“朱小厮的博客”,选择“设为星标”

后台回复”加群“加入公众号专属技术群

Soul 网关自从去年10月我开源以来,经历了一年的事情,接受到了来自社区很多朋友的建议,并进行持续不断的优化,已经提供了非常丰富的功能,很多功能都是高度自定义,可视化,高度可扩展的,现在做一个归纳总结。

  • 插件

  • 提供了系统自带的各种插件,比如签名,监控,限流,熔断,http代理,dubbo代理,websocket等等。

  • 支持用户快速的进行插件的自定义开发。

  • 插件的所有数据,开关状态支持动态变更。

  • 数据同步

  • 提供了 http长轮询zookeeperwebsocket  三种不同的数据同步策略,让用户自由选择。

  • 推荐用户使用websocket方式,最轻量,在集群环境下,效率更高。

  • 对于用户

  • 首先我们提供了便于用户接入的 client包,用户可以把快速的把自己的项目接入到soul 网关。

  • 默认情况下,用户完全不用关心 soul网关的选择器,规则等配置。

  • 用户之前的接口完全是零侵入,不需要任何更改,只是需要把访问域名改成网关的域名即可。

  • 比如 dubbo用户,几乎就是http的方式完成了 http协议到 dubbo协议的互相转换。

  • soul 使用的是http协议,那么注定它就是跨语言的,net程序员,php程序员等等,要和java进行数据交互,那么就大大的可行了。

    举个列子 ,比如你有一个 dubbo接口 参数定义是一个java bean,

    public void insert(final DubboTest dubboTest) {}public class DubboTest implements Serializable {private String id;private String name;
    }
    

    如果你使用 soul网关要发起对它的调用,你的http传参数 就是在 body 里面 传一个json字符串 ,和普通的http调用无差别。

    {"id":"123","name":"xiaoyu"}
    
  • 对于开发者(程序员)

  • 随着使用者越来越多,每个公司使用情况又不一样,soul 网关在2.1.X版本,处处留出来更多的高度自定义扩展性,让开发者,更加方便或者有信心融入进来。

  • 比如,自定义插件,过滤器,dubbo参数解析器,iphost解析器,返回结果等等。。这里我着重说一下自定义返回结果。

    我们知道,soul 网关默认的返回结果是:

    json {"code":200, "message ": "成功!","data" :"helloWorld!"}
    但是,在运用 soul 网关对你的业务系统进行调用的时候,你的业务系统可能定义的结果并不是上述结构,可能你的 字段叫  msg,这样就会造成结构不一样,给前端处理带来了困扰。我们注意到了这个事情 :https://github.com/Dromara/soul/issues/109 , 现在已经优化,用户可以定制化的来定义返回结果,具体的要看 soul 文档。

说了这么多,吹了这么多牛逼,那么我们来看看 soul网关到底可以在什么场景下能发挥大作用。

  • 后台管理web

  • 首先随便微服务的流行,我们的后台都划分成很多的微服务,我相信你们每个公司都有一个后台管理系统吧,如果我没猜错的话,他们大体上是如下架构。

  • 很简单对吧,就是有个运营管理平台的web项目,去调用每个微服务,来进行后台的查看等等。随着你们业务需要的加大,可能这里需要调用的微服务越来越多,你的 controller越来越多,现在比如你修改了 商品模块的 接口,你要发版会造成所有其他的模块也操作不了(就是你发版影响了其他模块的使用,别杠这里只是比方,不要整蓝绿发版啥的,明白意思吧)。
    如果有运营人员在操作其他模块,会不会吐槽你?

  • 假如你是公司架构师,我说的是假如,那么你要怎么解决这个问题呢?当然,我们把这样一个大的web系统,拆分成很多小web系统,单独的进行发布,但是这样会引入一个问题,怎么统一登陆,鉴权?(很多后台管理系统还有权限的划分) ,这个时候,soul 网关 就能发挥重要的作用了,下面我只是列举了一下简单的调用图。

  • 这样多方便,集成了网关,每个微服务注册到网关,网关根据路由规则来进行调用。自动发现服务,连运维配置 nginx的工作都省了,把运维的工资给你,美滋滋。

  • 公司入口网关(开放平台)

  • 如果一个公司要做开放平台或者入口网关,鉴权,限流,监控,熔断肯定少不了。

  • 如果贵公司是dubbo体系,开发人员写了dubbo服务后,还要傻乎乎的新增一个web项目,来提供接口给别人调用吗?

  • 如果一个接口被攻击,你怎么处理呢?如果被大流量攻击,你怎么处理呢?

  • 不巧,soul 在设计之初就是来干这种事情的,我们来看一下整体的架构图。

零零总总还有很多其他功能

  • 比如支持 websocket 代理。

  • 比如支持文件上传下载。

  • 比如你可以自定义的开发你的插件啊。

最后最后

  • github地址 :https://github.com/Dromara/soul

  • gitee地址 :https://gitee.com/shuaiqiyu/soul

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

  • 欢迎大家关注,如果贵公司有使用到,或者需要学习交流,或者提供代码参与开发的朋友也可以加群来进行讨论 ,qq群(429951241)

  • 最后 3.0 已经在进行开源了,3.0是经历过2年双11大并发场景验证过的,现在一步一步将它开源出来,希望给大家带来帮助.

想知道更多?描下面的二维码关注我

Soul网关发布2.1.X之后,它到底有多方便?相关推荐

  1. Soul网关发布里程碑的2.3.0版本,新增支持GRPC,Tars,Sofa协议

    距离上一次发布长达半年之久,在这半年的时间里,我与我的社区小伙伴们,做了太多太多的事情.完成了将近200 多次PR,发表了将近300 篇文章的源码解析,新增贡献者 120 多位,晋升了 7位commi ...

  2. Soul网关发布2.2.0:让高性能网关变得如此简单!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者:猫大人 来源:转载自公众号「Dromara分布式事 ...

  3. Soul网关发布2.2.0 | 让高性能网关变得如此简单!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 本文来自:猫大人的Dromara分布式事务 Soul发布全新的架构 ...

  4. Soul网关发布里程碑的2.3.0版本抢先看

    soul-admin(dashboard) admin是整个网关的控制面板,掌管所有的流量,规则的匹配. 整合shior框架,完成了用户按钮级别的权限控制. 模板化插件,让用户无需感知前端页面,只专注 ...

  5. 天玥运维安全网关默认密码_Soul网关发布全新架构V2.2.0,让高性能网关变得如此简单

    我们还是先来看看新增功能,然后再讲故事. 完全的插件化架构设计,插件热插拔. 完整支持dubbo所有版本,alibaba-dubbo ,apache-dubbo. 支持dubbo泛化调用,多参数,复杂 ...

  6. Soul网关源码阅读(七)限流插件初探

    Soul网关源码阅读(七)限流插件初探 简介     前面的文章中对处理流程探索的差不多了,今天来探索下限流插件:resilience4j 示例运行 环境配置     启动下MySQL和redis d ...

  7. Soul网关源码分析-环境搭建

    1.下载源码,搭建soul运行环境 源码下载地址:https://github.com/dromara/soul 1)先把源码克隆下来: git clone git@github.com:dromar ...

  8. Soul 网关开源的前世今生

    内容简介:Soul网关是我在任职某大型电商公司中间件技术部的时候所开发的.开源以后,针对不同的用户需求,进行了功能的升级,比如 支持了首先我们调研了市场上的一些API网关 本文转载自:https:// ...

  9. Soul网关进阶使用

    Soul网关进阶使用 目标 dubbo集成Soul网关 springcloud集成Soul网关 总结 Alibaba Dubbo + SpringBoot用户集成Soul网关 Soul网关加入dubb ...

最新文章

  1. 哈佛博士生教你轻松愉快地读博
  2. Windows7 设置 Java环境变量
  3. SPSS数据记录的选择(Select Cases)
  4. Exploring your Postgraduate Study Options
  5. Android 对okhttp的封装
  6. LeetCode 253. 会议室 II(贪心+优先队列)
  7. 21天早起计划,奖你1000+元!
  8. 本周Web2.0小工具推荐[2008-08-24]
  9. 如何成为一名糟糕的程序员?
  10. MATLAB中zero和ones函数(转载)
  11. 哈工大计算机非全日制调剂,哈尔滨工业大学计算学部2021年非全日制专业学位硕士调剂...
  12. mysql排序检索数据
  13. 微信小程序开发的学习资料收集
  14. Restlet实战(一)Restlet入门资料及概念
  15. 移动端屏幕宽度自适应原理及实现
  16. 小微个人网站如何接入免费短信验证码
  17. 推荐个echarts网站
  18. C语言利用getchar()与while循环解决跳步问题
  19. 安装mysql_python
  20. 知识付费,下半场怎么走(附大会PPT下载)

热门文章

  1. navicat怎么安装mysql数据库_【20170825】从零开始学SQL数据库 安装mysql与navicat,开始练习...
  2. 解决Hibernate报错The server time zone value is unrecognized or represents more than one time zone
  3. 搜索专题:bfs和dfs
  4. 2020-09-26
  5. MAX3222/MAX3232/ MAX3237/MAX3241/串口通信中文_技术文档
  6. JDK 是如何判断两个对象是否相同的?判断的流程是什么?
  7. MySQL的行锁和表锁
  8. Spring+Quartz实现定时任务
  9. Ubuntu连接以太网时显示“设备未托管”的解决办法
  10. TMG学习(四),允许内部网络解析本地主机的Netbiso名称