1 Star 0 Fork 32

日出V / DiscoveryPlatform

forked from Nepxion / DiscoveryPlatform 
加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

Discovery【探索】云原生微服务解决方案

Total visits Total lines License Maven Central Javadocs Build Status Codacy Badge Stars Stars

Spring Boot Spring Cloud Spring Cloud Alibaba Nepxion Discovery

Discovery PPT Discovery WIKI Discovery Platform WIKI Polaris WIKI

           

如果您觉得本框架具有一定的参考价值和借鉴意义,请帮忙在页面右上角 [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,联系作者,洽谈合作事宜

Discovery【探索】企业级云原生微服务开源解决方案

① 解决方案

② 平台界面

③ 快速入门

④ 框架源码

⑤ 指南示例源码

⑥ 指南示例说明

  • 对于入门级玩家,参考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

Polaris【北极星】企业级云原生微服务商业解决方案

① 解决方案

② 框架源码

③ 指南示例源码

④ 指南示例说明

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-server 平台服务端模块目录
   discovery-platform-starter-server 平台服务端的Starter
   discovery-platform-starter-server-mysql 平台服务端数据库MySQL插件的Starter
   discovery-platform-starter-server-h2 平台服务端H2插件的Starter
   discovery-platform-starter-server-ldap 平台服务端Ldap插件的Starter
   discovery-platform-starter-server-ui 平台服务端界面
discovery-platform-client 平台服务端模块目录
   discovery-platform-starter-client 平台客户端的Starter
discovery-platform-common 平台通用模块目录
   discovery-platform-starter-common-dingding 封装钉钉通用操作逻辑的Starter
   discovery-platform-starter-common-mail 封装邮件通用操作逻辑的Starter
discovery-platform-application 平台服务端可执行应用

配置清单

配置文件位于discovery-platform-application/目录下

配置文件 描述
pom.xml 切换注册中心、配置中心、数据库等依赖引入
src/main/resources/bootstrap.properties 平台微服务配置,例如:注册中心和配置中心等跟微服务相关的配置
src/main/resources/application.properties 平台通用配置,例如:JWT和Ldap等配置
src/main/resources/application-mysql.properties 平台MySQL数据库、HikariCP连接池配置
src/main/resources/application-h2.properties 平台H2内存数据库、HikariCP链接池配置
src/main/resources/META-INF/schema-mysql.sql 平台MySQL数据库创库脚本
src/main/resources/META-INF/schema-h2.sql 平台H2内存数据库创库脚本

架构核心

依赖引入

① 服务注册发现依赖引入

服务注册发现中间件的四个插件,必须引入其中一个

<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文章

Gitee Wiki

Github Wiki

启动平台

使用者可以复制discovery-platform-application目录单独导入IDE或者编译成可执行包运行

选择下面其中一个运行,需要实现确认相关配置的正确性

  • PlatformMySqlApplication.java,基于MySql数据库的运行入口
  • PlatformH2Application.java,基于H2内存数据库的运行入口

提醒:基于H2内存数据库模式的平台,需要事先启动H2内存数据库服务器,从如下链接下载、安装并运行

http://h2database.com/html/download.html

本地环境平台登录

参考云环境平台登录,把IP地址改成localhost即可

本地环境调用验证

参考云环境调用验证,把IP地址改成localhost即可

主页

服务发布

蓝绿发布

导航栏上选择〔服务发布〕/〔蓝绿发布〕,进入蓝绿发布界面

新增蓝绿

①〔蓝绿发布〕界面的工具栏上,点击 或者 按钮,弹出相应的对话框。下文以〔版本蓝绿〕为例

② 确定〔入口类型〕和〔入口名称〕

入口类型,包括网关服务,使用者在三个选项中选择一个,大多数场景会采用网关为入口类型

  • 网关服务属于局部订阅模式,即把蓝绿发布的规则策略推送到指定的网关或者服务上,只有入口名称下拉框所选择的网关(或者服务)才能订阅该规则策略
  • 属于全局订阅模式,即把蓝绿发布的规则策略推送到指定的组上,只有入口名称下拉框所选择的组下的所有网关和服务才能订阅该规则策略

入口名称,通过下拉的网关、服务或者组列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择。使用者可以通过右边的 按钮进行刷新

③ 添加和删除策略

策略类型,包括兜底策略蓝绿策略,平台默认给出一个兜底策略和两个蓝绿策略的经典场景,使用者可以根据实际场景,增加和删除策略

提醒:兜底策略可以缺失,但最多只能一个;蓝绿策略可以缺失,但可以无数个。兜底策略蓝绿策略必须存在至少一个,蓝绿发布才有意义

〔策略配置〕工具栏上,点击如下按钮进行相关操作

  • 〔添加兜底策略〕,点击 按钮,添加兜底策略。当使用者误删除兜底策略的时候,可以通过该方式添加回去
  • 〔添加蓝绿策略〕,点击 按钮,添加蓝绿策略。当使用者每添加一个蓝绿策略,选项卡会自动在蓝绿策略标题后数字加一
  • 〔删除策略〕,点击 按钮,删除当前选项卡上的兜底策略或者蓝绿策略

④ 配置〔兜底策略〕

兜底路由策略配置,包括如下步骤

  • 选择路由〔服务名〕,通过下拉的服务列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择
  • 选择路由〔版本号〕,通过下拉的版本号列表进行选择,使用者也可以通过手工输入自动匹配方式进行选择
  • 刷新路由〔服务名〕和〔版本号〕下拉列表,点击〔操作〕列下的 按钮进行刷新
  • 增加路由项,点击〔操作〕列下的 按钮进行增加
  • 删除路由项,点击〔操作〕列下的 按钮进行删除

⑤ 配置〔蓝绿策略〕

蓝绿条件策略配置,包括如下步骤

  • 输入〔参数名〕,参数名即进行条件驱动的HeaderParameterCookie参数
  • 选择〔运算符〕,通过下拉的运算符列表进行选择,包括等于=、不等于!=、大于>、大于等于>=、小于<、小于等于<=、匹配matches七种运算符
  • 选择〔关系符〕,通过下拉的关系符进行选择,包括与and、或or两种关系符
  • 输入〔值〕,值即进行条件驱动的HeaderParameterCookie参数的值
  • 执行〔聚合条件〕,条件文本框里的表达式会通过上述操作自动聚合,如果一旦鼠标键盘事件事件问题,使用者也可以点击 按钮进行手工聚合
  • 执行〔校验条件〕,当表达式组合项很多,使用者难以确定组合表达式是否正确,可以通过〔校验条件〕功能进行校验,点击 按钮弹出对话框,给参数赋值,看校验条件是否能通过

  • 执行〔自定义条件〕,当上述〔运算符〕和〔关系符〕仍旧无法满足使用者的需求,那么使用者可以自定义条件,在条件文本框输入符合Spel规范的表达式即可

兜底路由策略配置,包括如下步骤

  • 操作模式和过程与兜底路由策略类似

⑥ 设置〔内置参数〕

当前版本内置参数仅支持Header,但内置Header也具备代替ParameterCookie的作用。内置参数的应用场景多见于定时服务的蓝绿发布场景

内置参数配置包括如下步骤

  • 输入〔请求头〕
  • 输入〔值〕
  • 增加内置参数,点击〔操作〕列下的 按钮进行增加
  • 删除内置参数,点击〔操作〕列下的 按钮进行删除

⑦ 执行保存

上述结果执行完毕后,点击 按钮进行保存

发布蓝绿

执行保存后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示

上述保存步骤,只是保存到数据库中,并未推送到配置中心,需要使用者点击 按钮进行推送

执行发布后,主界面会把该条数据进行标识,〔状态〕列上显示

提醒:任何增、删、改蓝绿发布,最终都必须通过点击 按钮进行生效

删除蓝绿

〔蓝绿发布〕界面的表格上,打勾选择需要删除的一项或者多项

〔蓝绿发布〕界面的工具栏上,点击 按钮进行删除

执行删除后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示

接下去执行 ⑦ 执行〔发布蓝绿〕

编辑蓝绿

〔蓝绿发布〕界面的表格上,点击〔操作〕列下的 按钮进行编辑,操作模式和过程与新增蓝绿类似

执行编辑后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示

接下去执行 ⑦ 执行〔发布蓝绿〕

启用和禁用蓝绿

〔蓝绿发布〕界面的表格上,点击〔操作〕列下的 或者 按钮进行禁用或者启用

禁用只是清除配置中心对应的规则策略,并不删除数据库中的规则策略,以便下一次启用

执行禁用或者启用后,主界面会把该条数据进行标识,〔状态〕列上显示 ,〔入口名称〕列上显示

接下去执行 ⑦ 执行〔发布蓝绿〕,主界面会把该条数据进行标识,〔状态〕列上显示 或者

查看蓝绿拓扑图

待补充

查看正在工作的蓝绿

〔蓝绿发布〕界面的工具栏上,点击 按钮进行查看

① 选择〔入口类型〕和〔入口名称〕。使用者可以通过右边的 按钮进行刷新

② 界面自动给出符合所选择的〔入口类型〕和〔入口名称〕的服务实例列表,通过选项卡方式呈现出所属该服务实例的规则策略。如果所有服务实例的规则策略是一致的,那么会给出 的一致性提示,否则给出不一致性提示

提醒:一致性问题,可能是由于网络抖动、配置中心等多种原因,导致若干个服务实例订阅同一个配置,有些服务实例收到规则策略的更新,有些服务实例未收到规则策略的更新

灰度发布

待补充

流量侦测

待补充

实例管理

实例信息

待补充

实例摘除

新增黑名单

① 导航栏上选择〔实例管理〕/〔实例摘除〕,进入实例摘除配置界面。通过把服务实例放置到黑名单的方式达到服务实例摘除的目的

② 〔实例摘除〕界面的工具栏上,点击 按钮,弹出相应的对话框。黑名单类型,包括UUID(全局唯一ID)和IP地址和端口,使用者根据实际应用场景来选择

发布黑名单

〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似

删除黑名单

〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似

启用和禁用黑名单

操作模式和过程与启用和禁用蓝绿类似

查看正在工作的黑名单

〔实例摘除〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似

待补充

路由配置

Gateway网关路由

新增Gateway网关路由

① 导航栏上选择〔路由配置〕/〔Gateway网关路由〕,进入Spring Cloud Gateway动态路由配置界面

② 〔Gateway网关路由〕界面的工具栏上,点击 按钮,弹出相应的对话框

根据Spring Cloud Gateway网关的官方配置规范,结合如下界面进行配置。其中,断言器和过滤器包括内置和自定义两种模式

内置断言器和过滤器模式是通过Spring Cloud Gateway网关内置相关类和解析模块来实现的,请参照界面提示进行配置

自定义断言器和过滤器是通过Spring Cloud Gateway网关使用者自定义和解析模块相关类来实现的,请参照界面提示进行配置

发布Gateway网关路由

〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似

删除Gateway网关路由

〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似

编辑Gateway网关路由

操作模式和过程与编辑蓝绿类似

启用和禁用Gateway网关路由

操作模式和过程与启用和禁用蓝绿类似

查看正在工作的Gateway网关路由

〔Gateway网关路由〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似

Zuul网关路由

新增Zuul网关路由

① 导航栏上选择〔路由配置〕/〔Zuul网关路由〕,进入Zuul动态路由配置界面

② 〔Zuul网关路由〕界面的工具栏上,点击 按钮,弹出相应的对话框

根据Zuul网关的官方配置规范,结合如下界面进行配置

发布Zuul网关路由

〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与发布蓝绿类似

删除Zuul网关路由

〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与删除蓝绿类似

编辑Zuul网关路由

操作模式和过程与编辑蓝绿类似

启用和禁用Zuul网关路由

操作模式和过程与启用和禁用蓝绿类似

查看正在工作的Zuul网关路由

〔Zuul网关路由〕界面的工具栏上,点击 ,操作模式和过程与查看正在工作的蓝绿类似

基础应用

基础应用,一般为企业的内部中间件聚合模块,通过平台的左侧菜单入口进行页面弹出方式的跳转

新增、删除、修改基础应用外链,请参考页面设置

系统设置

页面设置

待补充

授权配置

管理员配置

新增管理员

① 导航栏上选择〔授权配置〕/〔管理员配置〕,进入管理员配置界面

② 〔管理员配置〕界面的工具栏上,点击 按钮,弹出相应的对话框

输入相关信息完成〔新增管理员〕

删除管理员

〔管理员配置〕界面的表格上,打勾选择需要删除的一项或者多项

〔管理员配置〕界面的工具栏上,点击 按钮进行删除

编辑管理员

〔管理员配置〕界面的表格上,点击〔操作〕列下的 按钮,弹出相应的对话框

输入相关信息完成〔编辑管理员〕

重置管理员密码

〔管理员配置〕界面的表格上,点击〔操作〕列下的 按钮进行重置

角色配置

新增角色

① 导航栏上选择〔授权配置〕/〔角色配置〕,进入角色配置界面

② 〔角色配置〕界面的工具栏上,点击 按钮,弹出相应的对话框

输入相关信息完成〔新增角色〕

删除角色

〔角色配置〕界面的表格上,打勾选择需要删除的一项或者多项

〔角色配置〕界面的工具栏上,点击 按钮进行删除

编辑角色

〔角色配置〕界面的表格上,点击〔操作〕列下的 按钮,弹出相应的对话框

输入相关信息完成〔编辑角色〕

权限配置

新增权限

① 导航栏上选择〔授权配置〕/〔权限配置〕,进入权限配置界面

② 〔权限配置〕界面的工具栏上,点击 按钮,弹出相应的对话框

输入相关信息完成〔新增权限〕

删除权限

〔权限配置〕界面的表格上,打勾选择需要删除的一项或者多项

〔权限配置〕界面的工具栏上,点击 按钮进行删除

编辑权限

〔权限配置〕界面的表格上,点击〔操作〕列下的 按钮,完成权限编辑

Star走势图

Stargazers over time

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

☀️ Nepxion DiscoveryPlatform is a platform for Nepxion Discovery with service governance, blue green and gray release orchestration, modelling, flow inspection 服务治理、蓝绿灰度发布编排建模、流量侦测的平台 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/liusirv/DiscoveryPlatform.git
git@gitee.com:liusirv/DiscoveryPlatform.git
liusirv
DiscoveryPlatform
DiscoveryPlatform
feature

搜索帮助