如果您觉得本框架具有一定的参考价值和借鉴意义,请帮忙在页面右上角 [Star]
- Nepxion开源社区创始人
- 2020年阿里巴巴**云原生峰会出品人
- 2020年被Nacos和Spring Cloud Alibaba纳入相关开源项目
- 2021年阿里巴巴技术峰会上海站演讲嘉宾
- 2021年荣获陆奇博士主持的奇绩资本,进行风险投资的关注和调研
- 2021年入选Gitee最有价值开源项目
- Nacos Group Member、Spring Cloud Alibaba Member
- Spring Cloud Alibaba、Nacos、Sentinel、OpenTracing Committer & Contributor
① Discovery系列
框架名称 | 框架版本 | 支持Spring Cloud版本 | 使用许可 |
---|---|---|---|
Discovery | 1.x.x ~ 6.x.x | Camden ~ Hoxton | 开源,永久免费 |
DiscoveryX | 7.x.x | 202x | 闭源,商业许可 |
② Polaris系列
Polaris为Discovery高级定制版,特色功能
- 基于Nepxion Discovery集成定制
- 多云、多活、多机房流量调配
- 跨云动态域名、跨环境适配
- DCN、DSU、SET单元化部署
- 组件灵活装配、配置对外屏蔽
- 极简低代码PaaS平台
框架名称 | 框架版本 | 支持Discovery版本 | 支持Spring Cloud版本 | 使用许可 |
---|---|---|---|---|
Polaris | 1.x.x | 6.x.x | Finchley ~ Hoxton | 闭源,商业许可 |
Polaris | 2.x.x | 7.x.x | 202x | 闭源,商业许可 |
有商业版需求的企业和用户,请添加微信1394997,联系作者,洽谈合作事宜
① 解决方案
② 平台界面
③ 快速入门
④ 框架源码
⑤ 指南示例源码
⑥ 指南示例说明
- 对于入门级玩家,参考6.x.x指南示例极简版,分支为6.x.x-simple
- 对于熟练级玩家,参考6.x.x指南示例精进版,分支为6.x.x。除上述《极简版》功能外,涉及到指南篇里的绝大多数高级功能
- 对于骨灰级玩家,参考6.x.x指南示例高级版,分支为6.x.x-complex。除上述《精进版》功能外,涉及到指南篇里的ActiveMQ、MongoDB、RabbitMQ、Redis、RocketMQ、MySQL等高级调用链和蓝绿灰度调用链的整合
- 上述指南实例分支是针对Spring Cloud旧版本。对于Spring Cloud 202x版本,参考7.x.x指南示例精进版,分支为master
① 解决方案
② 框架源码
③ 指南示例源码
④ 指南示例说明
Discovery【探索】和Polaris【北极星】架构体系
① Discovery【探索】和Polaris【北极星】联合架构图
② Discovery【探索】和Polaris【北极星】联合拓扑图
③ Polaris【北极星】分层架构图
④ Discovery【探索】实施方案图
⑤ Discovery【探索】域网关实施图
⑥ Discovery【探索】非域网关实施图
⑦ Discovery【探索】全局订阅实施图
⑧ Discovery【探索】配置中心发布订阅图
Nepxion Discovery Platform基于Nepxion Discovery 6.x.x版和Spring Cloud Hoxton版制作,也支持和兼容Spring Cloud Edgware版 ~ 202x版接入,支持如下功能
- 支持四个注册中心
- 支持六个配置中心
- 支持MySQL数据库和H2内存数据库,用户可以无缝扩展到其它数据库(例如,Oracle)
- 支持数据库方式登录和Ldap方式登录
- 支持Shiro和JWT的登录以及鉴权
- 支持管理员/角色/权限配置
- 支持页面配置,在线添加、删除、修改各类中间件主页或者业务系统主页的集成以及跳转
- 支持蓝绿发布
- 支持蓝绿策略双写数据库和配置中心,采用类似Apollo版本控制模式,界面标识增/删/改标识,通过发布方式达到数据库和配置中心最终数据一致性
- 支持蓝绿策略启用/禁用模式
- 支持蓝绿策略多实例动态路由一致性检查
- 支持网关、服务、组为入口
- 支持无限级蓝绿策略和兜底策略编排
- 支持自定义蓝绿条件策略
- 支持蓝绿条件策略校验
- 支持内置Header
- 支持灰度发布
- 支持灰度策略双写数据库和配置中心,采用类似Apollo版本控制模式,界面标识增/删/改标识,通过发布方式达到数据库和配置中心最终数据一致性
- 支持灰度策略启用/禁用模式
- 支持灰度策略多实例一致性检查
- 支持网关、服务、组为入口
- 支持无限级灰度策略编排
- 支持自定义蓝绿条件策略
- 支持蓝绿条件策略校验
- 支持内置Header
- 支持双网关动态路由
- 支持网关动态路由双写数据库和配置中心,采用类似Apollo版本控制模式,界面标识增/删/改标识,通过发布方式达到数据库和配置中心最终数据一致性
- 支持网关动态路由启用/禁用模式
- 支持网关动态路由多实例一致性检查
- 支持Spring Cloud Gateway内置断言器(基于Path、Host、Header、Cookie、Query、Method、RemoteAddr、Weight等无代码方式)和过滤器(基于StripPrefix、PrefixPath、RewritePath、RequestRateLimiter、CircuitBreaker、AddRequestHeader、AddRequestParameter、AddResponseHeader、RedirectTo等无代码方式)
- 支持用户自定义断言器和过滤器,可以实现类似Access Token、网页访问黑/白名单,自定义用户数据(List和Map结构)过滤等低代码方式
- 支持Zuul网关内置动态路由
- 支持服务负载屏蔽的黑名单实例摘除
- 支持黑名单双写数据库和配置中心,采用类似Apollo版本控制模式,界面标识增/删/改标识,通过发布方式达到数据库和配置中心最终数据一致性
- 支持黑名单启用/禁用模式
- 支持黑名单多实例一致性检查
- 基于时间戳前缀的全局唯一ID黑名单
- 基于IP地址和端口黑名单
- 支持界面显示所连的注册中心和配置中心
请访问https://github.com/Nepxion/DiscoveryPlatform获取源码和示例
感谢如下小伙伴参与本平台的开发、测试和部署。下面名单根据加入次序进行排序
- 张宁
- 付向阳
- 刘辉
- 赵胜杰
- 任学会
- 肖龙
微信、钉钉、公众号和文档
配置文件位于discovery-platform-application/目录下
① 服务注册发现依赖引入
服务注册发现中间件的四个插件,必须引入其中一个
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!-- <groupId>org.springframework.cloud</groupId> -->
<!-- <artifactId>spring-cloud-starter-consul-discovery</artifactId> -->
<!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> -->
<!-- <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> -->
</dependency>
② 配置中心依赖引入
配置中心中间件的六个插件,选择引入其中一个
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-console-starter-nacos</artifactId>
<!-- <artifactId>discovery-console-starter-apollo</artifactId> -->
<!-- <artifactId>discovery-console-starter-redis</artifactId> -->
<!-- <artifactId>discovery-console-starter-zookeeper</artifactId> -->
<!-- <artifactId>discovery-console-starter-consul</artifactId> -->
<!-- <artifactId>discovery-console-starter-etcd</artifactId> -->
</dependency>
③ 数据库依赖引入
MySQL数据库和H2内存数据库,选择引入其中一个
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-platform-starter-server-mysql</artifactId>
<!-- <artifactId>discovery-platform-starter-server-h2</artifactId> -->
</dependency>
④ Ldap依赖引入
如果使用者希望通过Ldap方式登录平台,那么需要引入如下依赖
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-platform-starter-server-ldap</artifactId>
</dependency>
使用者可以直接使用云环境进行体验,也可以通过本地环境搭建进行体验
采用Nacos作为服务注册发现和配置中心
http://218.78.55.64:8848/nacos
浏览器上输入http://218.78.55.64:6001/platform,初始用户名和密码为admin/admin
登录页面底部为重要的链接以及快速联系我们的方式
通过改变Http Parameter参数验证灰度蓝绿等一系列功能,例如,在浏览器上输入如下地址,根据user值的改变,观测返回的调用结果是否符合预期
http://218.78.55.64:5001/discovery-guide-service-a/invoke/gateway?user=zhangsan
http://218.78.55.64:5001/discovery-guide-service-a/invoke/gateway?user=lisi
参考《如何快速搭建和运行示例》的Wiki文章
使用者可以复制discovery-platform-application目录单独导入IDE或者编译成可执行包运行
选择下面其中一个运行,需要实现确认相关配置的正确性
- PlatformMySqlApplication.java,基于MySql数据库的运行入口
- PlatformH2Application.java,基于H2内存数据库的运行入口
提醒:基于H2内存数据库模式的平台,需要事先启动H2内存数据库服务器,从如下链接下载、安装并运行
http://h2database.com/html/download.html
参考云环境平台登录,把IP地址改成localhost即可
参考云环境调用验证,把IP地址改成localhost即可
导航栏上选择〔服务发布〕/〔蓝绿发布〕,进入蓝绿发布界面
①〔蓝绿发布〕界面的工具栏上,点击 或者 按钮,弹出相应的对话框。下文以〔版本蓝绿〕为例
② 确定〔入口类型〕和〔入口名称〕
入口类型,包括网关
、服务
和组
,使用者在三个选项中选择一个,大多数场景会采用网关
为入口类型
网关
和服务
属于局部订阅模式,即把蓝绿发布的规则策略推送到指定的网关或者服务上,只有入口名称
下拉框所选择的网关(或者服务)才能订阅该规则策略组
属于全局订阅模式,即把蓝绿发布的规则策略推送到指定的组上,只有入口名称
下拉框所选择的组下的所有网关和服务才能订阅该规则策略
入口名称,通过下拉的网关、服务或者组列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择。使用者可以通过右边的 按钮进行刷新
③ 添加和删除策略
策略类型,包括兜底策略
和蓝绿策略
,平台默认给出一个兜底策略
和两个蓝绿策略
的经典场景,使用者可以根据实际场景,增加和删除策略
提醒:兜底策略
可以缺失,但最多只能一个;蓝绿策略
可以缺失,但可以无数个。兜底策略
和蓝绿策略
必须存在至少一个,蓝绿发布才有意义
〔策略配置〕工具栏上,点击如下按钮进行相关操作
- 〔添加兜底策略〕,点击 按钮,添加兜底策略。当使用者误删除兜底策略的时候,可以通过该方式添加回去
- 〔添加蓝绿策略〕,点击 按钮,添加蓝绿策略。当使用者每添加一个蓝绿策略,选项卡会自动在蓝绿策略标题后数字加一
- 〔删除策略〕,点击 按钮,删除当前选项卡上的兜底策略或者蓝绿策略
④ 配置〔兜底策略〕
兜底路由策略配置,包括如下步骤
- 选择路由〔服务名〕,通过下拉的服务列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择
- 选择路由〔版本号〕,通过下拉的版本号列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择
- 刷新路由〔服务名〕和〔版本号〕下拉列表,点击〔操作〕列下的 按钮进行刷新
- 增加路由项,点击〔操作〕列下的 按钮进行增加
- 删除路由项,点击〔操作〕列下的 按钮进行删除
⑤ 配置〔蓝绿策略〕
蓝绿条件策略配置,包括如下步骤
- 输入〔参数名〕,参数名即进行条件驱动的
Header
、Parameter
、Cookie
参数 - 选择〔运算符〕,通过下拉的运算符列表进行选择,包括等于
=
、不等于!=
、大于>
、大于等于>=
、小于<
、小于等于<=
、匹配matches
七种运算符 - 选择〔关系符〕,通过下拉的关系符进行选择,包括与
and
、或or
两种关系符 - 输入〔值〕,值即进行条件驱动的
Header
、Parameter
、Cookie
参数的值 - 执行〔聚合条件〕,条件文本框里的表达式会通过上述操作自动聚合,如果一旦鼠标键盘事件事件问题,使用者也可以点击 按钮进行手工聚合
- 执行〔校验条件〕,当表达式组合项很多,使用者难以确定组合表达式是否正确,可以通过〔校验条件〕功能进行校验,点击 按钮弹出对话框,给参数赋值,看校验条件是否能通过
- 执行〔自定义条件〕,当上述〔运算符〕和〔关系符〕仍旧无法满足使用者的需求,那么使用者可以自定义条件,在条件文本框输入符合
Spel
规范的表达式即可
兜底路由策略配置,包括如下步骤
- 操作模式和过程与兜底路由策略类似
⑥ 设置〔内置参数〕
当前版本内置参数仅支持Header
,但内置Header
也具备代替Parameter
、Cookie
的作用。内置参数的应用场景多见于定时服务的蓝绿发布场景
内置参数配置包括如下步骤
⑦ 执行保存
执行保存后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示
上述保存步骤,只是保存到数据库中,并未推送到配置中心,需要使用者点击 按钮进行推送
提醒:任何增、删、改蓝绿发布,最终都必须通过点击 按钮进行生效
〔蓝绿发布〕界面的表格上,打勾选择需要删除的一项或者多项
执行删除后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示
接下去执行 ⑦ 执行〔发布蓝绿〕
〔蓝绿发布〕界面的表格上,点击〔操作〕列下的 按钮进行编辑,操作模式和过程与新增蓝绿类似
执行编辑后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示
接下去执行 ⑦ 执行〔发布蓝绿〕
〔蓝绿发布〕界面的表格上,点击〔操作〕列下的 或者 按钮进行禁用或者启用
禁用
只是清除配置中心对应的规则策略,并不删除数据库中的规则策略,以便下一次启用
执行禁用或者启用后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示
接下去执行 ⑦ 执行〔发布蓝绿〕
,主界面会把该条数据进行标识,〔状态〕列上显示 或者
待补充
① 选择〔入口类型〕和〔入口名称〕。使用者可以通过右边的 按钮进行刷新
② 界面自动给出符合所选择的〔入口类型〕和〔入口名称〕的服务实例列表,通过选项卡方式呈现出所属该服务实例的规则策略。如果所有服务实例的规则策略是一致的,那么会给出 的一致性提示,否则给出不一致性提示
提醒:一致性问题,可能是由于网络抖动、配置中心等多种原因,导致若干个服务实例订阅同一个配置,有些服务实例收到规则策略的更新,有些服务实例未收到规则策略的更新
待补充
待补充
待补充
① 导航栏上选择〔实例管理〕/〔实例摘除〕,进入实例摘除配置界面。通过把服务实例放置到黑名单的方式达到服务实例摘除的目的
② 〔实例摘除〕界面的工具栏上,点击 按钮,弹出相应的对话框。黑名单类型,包括UUID
(全局唯一ID)和IP地址和端口
,使用者根据实际应用场景来选择
〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似
〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似
操作模式和过程与启用和禁用蓝绿类似
〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似
待补充
① 导航栏上选择〔路由配置〕/〔Gateway网关路由〕,进入Spring Cloud Gateway动态路由配置界面
② 〔Gateway网关路由〕界面的工具栏上,点击 按钮,弹出相应的对话框
根据Spring Cloud Gateway网关的官方配置规范,结合如下界面进行配置。其中,断言器和过滤器包括内置和自定义两种模式
内置断言器和过滤器模式是通过Spring Cloud Gateway网关内置相关类和解析模块来实现的,请参照界面提示进行配置
自定义断言器和过滤器是通过Spring Cloud Gateway网关使用者自定义和解析模块相关类来实现的,请参照界面提示进行配置
〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似
〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似
操作模式和过程与编辑蓝绿类似
操作模式和过程与启用和禁用蓝绿类似
〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似
① 导航栏上选择〔路由配置〕/〔Zuul网关路由〕,进入Zuul动态路由配置界面
② 〔Zuul网关路由〕界面的工具栏上,点击 按钮,弹出相应的对话框
根据Zuul网关的官方配置规范,结合如下界面进行配置
〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似
〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似
操作模式和过程与编辑蓝绿类似
操作模式和过程与启用和禁用蓝绿类似
〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似
基础应用,一般为企业的内部中间件聚合模块,通过平台的左侧菜单入口进行页面弹出方式的跳转
新增、删除、修改基础应用外链,请参考页面设置
待补充
① 导航栏上选择〔授权配置〕/〔管理员配置〕,进入管理员配置界面
② 〔管理员配置〕界面的工具栏上,点击 按钮,弹出相应的对话框
输入相关信息完成〔新增管理员〕
〔管理员配置〕界面的表格上,打勾选择需要删除的一项或者多项
〔管理员配置〕界面的表格上,点击〔操作〕列下的 按钮,弹出相应的对话框
输入相关信息完成〔编辑管理员〕
〔管理员配置〕界面的表格上,点击〔操作〕列下的 按钮进行重置
① 导航栏上选择〔授权配置〕/〔角色配置〕,进入角色配置界面
② 〔角色配置〕界面的工具栏上,点击 按钮,弹出相应的对话框
输入相关信息完成〔新增角色〕
〔角色配置〕界面的表格上,打勾选择需要删除的一项或者多项
〔角色配置〕界面的表格上,点击〔操作〕列下的 按钮,弹出相应的对话框
输入相关信息完成〔编辑角色〕
① 导航栏上选择〔授权配置〕/〔权限配置〕,进入权限配置界面
② 〔权限配置〕界面的工具栏上,点击 按钮,弹出相应的对话框
输入相关信息完成〔新增权限〕
〔权限配置〕界面的表格上,打勾选择需要删除的一项或者多项