Skip to content

☀️ Nepxion Discovery is a solution for Spring Cloud with blue green, gray, route, limitation, circuit breaker, degrade, isolation, tracing, dye, failover, active 蓝绿灰度发布、路由、限流、熔断、降级、隔离、追踪、流量染色、故障转移、多活

License

Nepxion/Discovery

Repository files navigation

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

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

Wiki Wiki Discovery PPT Discovery Page Discovery Platform Page Polaris Page

           

如果您觉得本框架具有一定的参考价值和借鉴意义,请帮忙在页面右上角 [Star]

简介

作者简介

  • Nepxion开源社区创始人
  • 2020年阿里巴巴中国云原生峰会出品人
  • 2020年被Nacos和Spring Cloud Alibaba纳入相关开源项目
  • 2021年阿里巴巴技术峰会上海站演讲嘉宾
  • 2021年荣获陆奇博士主持的奇绩资本,进行风险投资的关注和调研
  • 2021年入选Gitee最有价值开源项目
  • 阿里巴巴官方书籍《Nacos架构与原理》作者之一
  • Spring Cloud Alibaba Steering Committer、Nacos Group 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 ~ 9.x.x 2020 ~ 2022 闭源,商业许可

② 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 ~ 9.x.x 2020 ~ 2022 闭源,商业许可

有商业版需求的企业和用户,请添加微信1394997,联系作者,洽谈合作事宜

入门资料

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

① 快速入门

② 解决方案

③ 最佳实践

④ 平台界面

⑤ 框架源码

⑥ 指南示例源码

⑦ 指南示例说明

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

① 解决方案

② 框架源码

③ 指南示例源码

④ 指南示例说明

  • Spring Cloud Finchley ~ Hoxton版本
  • Spring Cloud 202x版本

功能概述

Discovery【探索】微服务框架,基于Spring Cloud & Spring Cloud Alibaba,Discovery服务注册发现、Ribbon & Spring Cloud LoadBalancer负载均衡、Feign & RestTemplate & WebClient调用、Spring Cloud Gateway & Zuul过滤等组件全方位增强的企业级微服务开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征

① 微服务框架支持的技术栈,如下

  • 支持阿里巴巴Spring Cloud Alibaba中间件生态圈
  • 支持阿里巴巴Nacos、Eureka、Consul和Zookeeper四个服务注册发现中心
  • 支持阿里巴巴Nacos、携程Apollo、Redis、Zookeeper、Consul和Etcd六个远程配置中心
  • 支持阿里巴巴Sentinel、Hystrix和Resilience4J三个熔断限流降级权限中间件
  • 支持OpenTracing和OpenTelemetry规范下的调用链中间件,Jaeger、SkyWalking和Zipkin等
  • 支持Prometheus Micrometer和Spring Boot Admin两个指标中间件
  • 支持Java Agent解决异步跨线程ThreadLocal上下文传递
  • 支持Spring Spel解决蓝绿灰度参数的驱动逻辑
  • 支持Spring Matcher解决元数据匹配的通配逻辑
  • 支持Spring Cloud Gateway、Zuul网关和微服务三大模块的蓝绿灰度发布等一系列功能
  • 支持和兼容Spring Cloud Edgware版、Finchley版、Greenwich版、Hoxton版和202x版以及更高的Spring Cloud版本
  • 支持和兼容Java8~Java17以及更高的SDK版本

② Discovery【探索】微服务框架支持的应用功能,如下

  • 全链路蓝绿灰度发布
    • 全链路版本、区域、 IP地址和端口匹配蓝绿发布
    • 全链路版本、区域、 IP地址和端口权重灰度发布
    • 全链路蓝 | 绿 | 兜底、蓝 | 兜底的蓝绿路由类型
    • 全链路稳定、灰度的灰度路由类型
    • 全链路网关、服务端到端混合蓝绿灰度发布
    • 全链路单网关、域网关、非域网关部署
    • 全链路条件驱动、非条件驱动
    • 全链路前端触发后端蓝绿灰度发布
    • 全局订阅式蓝绿灰度发布
    • 全链路自定义网关、服务的过滤器、负载均衡策略类触发蓝绿灰度发布
    • 全链路Header、Parameter、Cookie、域名、RPC Method等参数化规则策略驱动
    • 全链路本地和远程、局部和全局无参数化规则策略驱动
    • 全链路条件表达式、通配表达式支持
    • 全链路内置Header,支持定时Job的服务调用蓝绿灰度发布
    • 全链路手工编排、智能编排、无编排蓝绿灰度发布
  • 全链路自动化测试
    • 全链路自动化模拟流程测试
      • 全链路自动化模拟流程本地测试
      • 全链路自动化模拟流程云上测试
    • 全链路自动化流量侦测测试
      • 全链路自动化流量侦测本地测试
      • 全链路自动化流量侦测云上测试
  • 全链路流量管控对接DevOps运维平台
  • 全链路多活单元化
  • 全链路隔离路由
    • 全链路组隔离路由
      • 组负载均衡的消费端隔离
      • 组Header传值的提供端隔离
    • 全链路版本偏好路由
    • 全链路区域调试路由
    • 全链路环境隔离路由
    • 全链路可用区亲和性隔离路由
    • 全链路IP地址和端口隔离路由
  • 全链路隔离准入
    • 基于IP地址黑白名单注册准入
    • 基于最大注册数限制注册准入
    • 基于IP地址黑白名单发现准入
    • 自定义注册发现准入
  • 全链路故障转移
    • 全链路版本故障转移
    • 全链路区域故障转移
    • 全链路环境故障转移
    • 全链路可用区故障转移
    • 全链路IP地址和端口故障转移
  • 全链路服务无损下线,实时性的流量绝对无损
    • 全局唯一ID屏蔽
    • IP地址和端口屏蔽
  • 异步场景下全链路蓝绿灰度发布
    • 异步跨线程Agent插件
    • Hystrix线程池隔离插件
  • 网关动态路由
    • 路由动态添加
    • 路由动态修改
    • 路由动态删除
    • 路由动态批量更新
    • 路由查询
    • 路由动态变更后的事件通知
  • 全链路服务限流熔断降级权限
    • Sentinel基于服务名的防护
    • Sentinel基于组的防护
    • Sentinel基于版本的防护
    • Sentinel基于区域的防护
    • Sentinel基于环境的防护
    • Sentinel基于可用区的防护
    • Sentinel基于IP地址和端口的防护
    • Sentinel自定义Header、Parameter、Cookie的防护
    • Sentinel自定义业务参数的防护
    • Sentinel自定义组合式的防护
  • 全链路监控
    • 蓝绿灰度埋点和熔断埋点的调用链监控
    • 蓝绿灰度埋点和熔断埋点的日志监控
    • 熔断埋点的指标监控
  • 全链路蓝绿灰度发布编排建模和流量侦测
    • 全链路蓝绿发布编排建模
    • 全链路灰度发布编排建模
    • 全链路蓝绿发布流量侦测
    • 全链路灰度发布流量侦测
    • 全链路蓝绿灰度发布混合流量侦测
  • 全链路数据库和消息队列蓝绿发布
    • 基于多DataSource的数据库蓝绿发布
    • 基于多Queue的消息队列蓝绿发布
  • 全链路服务侧注解
  • 元数据流量染色
    • 基于Git插件的元数据流量染色
    • 基于服务名前缀的元数据流量染色
    • 基于启动参数的元数据流量染色
    • 基于配置文件的元数据流量染色
    • 基于系统参数的元数据流量染色
    • 基于POM版本号的元数据流量染色
  • 扫描目录
    • 自动扫描目录
    • 手工扫描目录
    • 注入扫描目录
  • 规则策略推送
    • 基于配置中心的规则策略订阅推送
    • 基于Swagger和Rest的规则策略推送
    • 基于平台端和桌面端的规则策略推送
  • 统一配置订阅执行器

③ Discovery【探索】微服务框架支持的功能维度,如下

微服务框架支持组(Group)、版本(Version)、区域(Region)、环境(Env)、可用区(Zone)、IP地址和端口(Address)、全局唯一ID七大经典维度实施流量管控的方式,通过“并集”方式叠加作用在流量控制上。上述七个维度在功能上各有各的侧重点,如下表格主要讲述各自的区别

维度 概念 场景 功能侧重点 关键头
服务实例的系统ID
系统逻辑分组
路由隔离 ① 组负载均衡隔离
- 调用端和提供端的元数据group是否相同
② 组Header传值策略隔离
- Header(n-d-group)和提供端的元数据group是否相同
③ 不支持故障转移
n-d-group
版本 服务实例的版本
适用于生产环境
蓝绿灰度发布
路由转移
故障转移
① 版本条件匹配蓝绿发布
② 版本权重灰度发布
③ 版本偏好
- 非蓝绿灰度发布场景下,路由到相应版本的实例
- 稳定版本策略、指定版本策略
④ 版本故障转移
- 未找到相应版本的服务实例,路由到其它版本
- 负载均衡策略、稳定版本策略、指定版本策略
n-d-version
n-d-version-weight
n-d-version-prefer
n-d-version-failover
区域 服务实例的区域
适用于多活单元化
适用于多机房
适用于多环境
蓝绿灰度发布
同城双活/异地多活
路由转移
故障转移
① 区域条件匹配蓝绿发布
② 区域权重灰度发布
③ 区域多活单元化
④ 区域调试路由
- 多区域路由隔离下跨区服务调用的调试手段
⑤ 区域故障转移
- 未找到相应区域的服务实例,路由到其它区域
- 负载均衡策略、指定区域策略
n-d-region
n-d-region-weight
n-d-region-transfer
n-d-region-failover
环境 服务实例的环境
适用于测试环境
路由隔离
故障转移
① 环境隔离路由
- Header(n-d-env)和提供端的元数据env是否相同
② 环境故障转移
- 未找到相应环境的服务实例,路由到其它环境
- 指定环境(未配置,默认为common)策略
n-d-env
n-d-env-failover
可用区 服务实例的可用区
适用于多机房
路由隔离
故障转移
① 可用区亲和性隔离路由
- 调用端和提供端的元数据zone是否相同
② 可用区故障转移
- 未找到相应可用区的服务实例,路由到其它可用区
- 支持负载均衡策略、指定区可用区策略
n-d-zone-failover
IP地址和端口 服务实例机器地址 蓝绿灰度发布
路由隔离
故障转移
无损下线
① IP地址和端口匹配蓝绿发布
② IP地址和端口权重灰度发布
③ IP地址和端口故障转移
- 未找到相应IP地址和端口的服务实例,路由到其它地址
- 负载均衡策略、指定区IP地址和端口策略
④ IP地址和端口无损下线黑名单屏蔽
n-d-address
n-d-address-failover
n-d-address-blacklist
全局唯一ID 服务实例机器ID 无损下线 ① 全局唯一ID无损下线黑名单屏蔽 n-d-id-blacklist

发展历程

  • 2017年12月开始筹划
  • 2018年03月开始编码
  • 2018年06月在GitHub开源
  • 2018年06月发布v1.0.0,支持Camden版
  • 2018年06月发布v2.0.0,支持Dalston版
  • 2018年07月发布v3.0.0,支持Edgware版
  • 2018年07月发布v4.0.0,支持Finchley版
  • 2019年04月发布v5.0.0,支持Greenwich版
  • 2020年04月发布v6.0.0,支持Hoxton版
  • 2021年04月完成v7.0.0,支持2020版
  • 2022年04月完成v8.0.0,支持2021版
  • 2023年01月完成v9.0.0,支持2022版

版本列表

① 微服务框架版本兼容列表,如下

提醒:版本号右边, 表示>=该版本号, 表示<=该版本号

框架版本 框架分支 框架状态 Spring Cloud版本 Spring Boot版本 Spring Cloud Alibaba版本
9.0.0
商业版
DiscoveryX/master 2022.x.x 3.1.x
3.0.x
2022.x.x.x
8.0.0
商业版
DiscoveryX/8.x.x 2021.x.x 2.7.x
2.6.x
2021.x.x.x
7.0.0
商业版
DiscoveryX/7.x.x 2020.x.x 2.5.x
2.4.1
2021.x
6.21.0 Discovery/6.x.x Hoxton.SR5
Hoxton
Greenwich
Finchley
2.3.x.RELEASE
2.2.x.RELEASE
2.1.x.RELEASE
2.0.x.RELEASE
2.2.7.RELEASE
6.12.11 Discovery/6.x.x Hoxton.SR5
Hoxton
Greenwich
Finchley
2.3.x.RELEASE
2.2.x.RELEASE
2.1.x.RELEASE
2.0.x.RELEASE
2.2.6.RELEASE
2.1.x.RELEASE
2.0.x.RELEASE
5.6.0 Discovery/5.x.x Greenwich 2.1.x.RELEASE 2.1.x.RELEASE
4.15.0 Discovery/4.x.x Finchley 2.0.x.RELEASE 2.0.x.RELEASE
3.38.0 Discovery/3.x.x Edgware 1.5.x.RELEASE 1.5.x.RELEASE
2.0.x Discovery/2.x.x Dalston 1.x.x.RELEASE 1.5.x.RELEASE
1.0.x Discovery/1.x.x Camden 1.x.x.RELEASE 1.5.x.RELEASE

表示维护中 | 表示不维护,但可用,强烈建议升级 | 表示不维护,不可用,已废弃

  • 9.x.x版本(适用于2022.x.x)将继续维护
  • 8.x.x版本(适用于2021.x.x)将继续维护
  • 7.x.x版本(适用于2020.x.x)将继续维护
  • 6.x.x版本(同时适用于Finchley、Greenwich和Hoxton)将继续维护
  • 5.x.x版本(适用于Greenwich)已废弃
  • 4.x.x版本(适用于Finchley)已废弃
  • 3.x.x版本(适用于Edgware)不维护,但可用,强烈建议升级
  • 2.x.x版本(适用于Dalston)已废弃
  • 1.x.x版本(适用于Camden)已废弃

② 相关中间件版本列表,如下

组件类型 组件版本
基础组件 Guava
Caffeine
Redisson
Dom4J
Swagger
Swagger
注册配置组件 Apollo
Zookeeper Curator
Consul
JEtcd
Nacos
Eureka
Redis
防护组件 Sentinel
Hystrix
监控组件 SkyWalking
OpenTelemetry
OpenTracing
OpenTracing%20Spring%20Cloud
OpenTracing%20Jaeger
OpenTracing%20Concurrent
Spring Boot
Spring组件 Alibaba Spring
Spring Cloud
Spring Cloud Alibaba
Spring Boot

企业用户

不完全统计,目前社区开源项目(包括本框架以及关联框架或组件)已经被如下公司使用或者调研

为提供更好的专业级服务,请更多已经使用本框架的公司和企业联系我,并希望在Github Issues上登记

落地案例

① 某大型银行信用卡新核心系统在生产环境接入Nepxion Discovery框架的服务实例数(包括异地双活,同城双活,多机房全部汇总)将近10000个

② 某大型互联网教育公司在生产环境接入Nepxion Discovery框架的服务实例数截至到2021年2月已达到2600多个,基本接入完毕

郑重致谢

  • 感谢阿里巴巴中间件Nacos、Sentinel和Spring Cloud Alibaba团队,尤其是Nacos负责人@彦林、@于怀,Sentinel负责人@宿何、@子衿,Spring Cloud Alibaba负责人@铖朴、@良名、@小马哥、@洛夜、@亦盏的技术支持
  • 感谢携程Apollo团队,尤其是@宋顺的技术支持
  • 感谢所有Committers和Contributors
  • 感谢所有帮忙分析和定位问题的同学
  • 感谢所有提出宝贵建议和意见的同学
  • 感谢支持和使用本框架的公司和企业

请联系我

微信、钉钉、公众号和文档

Star走势图

Stargazers over time