Spring Cloud 服务注册发现增强中间件 Nepxion Discovery

Apache
Java
跨平台
2018-07-23
淡漠悠然

Nepxion Discovery是一款对Spring Cloud的服务注册发现的增强中间件,其功能包括多版本灰度发布,黑/白名单的IP地址过滤,限制注册等,支持Eureka、Consul和Zookeeper。现有的Spring Cloud微服务可以方便引入该插件,代码零侵入,使用者只需要做如下简单的事情:

  • 引入相关Plugin Starter依赖到pom.xml

  • 必须为微服务定义一个版本号(version),在application.properties或者yaml的metadata里

  • 必须为微服务自定义一个便于为微服务归类的Key,例如组名(group)或者应用名(application),在application.properties或者yaml的metadata里,便于远程配置中心推送和灰度界面分析

  • 使用者只需要关注相关规则推送。可以采用如下方式之一

    • 通过远程配置中心推送规则

    • 通过控制台界面推送规则

    • 通过客户端工具(例如Postman)推送推测

功能

  • 实现对基于Spring Cloud的微服务和Zuul网关的支持

    • 具有极大灵活性 - 支持在任何环节做过滤控制和版本灰度发布

    • 具有极小限制性 - 只要开启了服务注册发现,程序入口加了@EnableDiscoveryClient

  • 实现服务注册层面的控制

    • 基于黑/白名单的IP地址过滤机制禁止对相应的微服务进行注册

    • 基于最大注册数的限制微服务注册。一旦微服务集群下注册的实例数目已经达到上限,将禁止后续的微服务进行注册

  • 实现服务发现层面的控制

    • 基于黑/白名单的IP地址过滤机制禁止对相应的微服务被发现

    • 基于版本配对,通过对消费端和提供端可访问版本对应关系的配置,在服务发现和负载均衡层面,进行多版本访问控制

  • 实现灰度发布

    • 通过规则改变,实现灰度发布

    • 通过版本切换,实现灰度发布

  • 实现通过XML进行上述规则的定义

  • 实现通过事件总线机制(EventBus)的功能,实现发布/订阅功能

    • 对接远程配置中心,默认集成阿里巴巴的Nacos,异步接受远程配置中心主动推送规则信息,动态改变微服务的规则

    • 结合Spring Boot Actuator,异步接受Rest主动推送规则信息,动态改变微服务的规则

    • 结合Spring Boot Actuator,动态改变微服务的版本

    • 在服务注册层面的控制中,一旦禁止注册的条件触发,主动推送异步事件,以便使用者订阅

  • 实现通过Listener机制进行扩展

    • 使用者可以自定义更多的规则过滤条件

    • 使用者可以对服务注册发现核心事件进行监听

  • 实现支持Spring Boot Actuator和Swagger集成

  • 实现独立控制台,支持对规则和版本集中管理,未来考虑界面实现

  • 实现支持未来扩展更多的服务注册中心

  • 实现图形化的灰度发布功能

架构

简单描述一下,本系统的核心模块“基于版本控制的灰度发布”,从网关(Zuul)开始的灰度发布操作过程

  • 灰度发布前

    • 假设当前生产环境,调用路径为网关(V1.0)->服务A(V1.0)->服务B(V1.0)

    • 运维将发布新的生产环境,部署新服务集群,服务A(V1.1),服务B(V1.1)

    • 由于网关(1.0)并未指向服务A(V1.1),服务B(V1.1),所以它们是不能被调用的

  • 灰度发布中

    • 新增用作灰度发布的网关(V1.1),指向服务A(V1.1)->服务B(V1.1)

    • 灰度网关(V1.1)发布到服务注册发现中心,但禁止被服务发现,网关外的调用进来无法负载均衡到网关(V1.1)上

    • 在灰度网关(V1.1)->服务A(V1.1)->服务B(V1.1)这条调用路径做灰度测试

    • 灰度测试成功后,把网关(V1.0)指向服务A(V1.1)->服务B(V1.1)

  • 灰度发布后

    • 下线服务A(V1.0),服务B(V1.0),灰度成功

    • 灰度网关(V1.1)可以不用下线,留作下次版本上线再次灰度发布

架构图


兼容

版本兼容情况

  • Spring Cloud F版,请采用4.x.x版本,具体代码参考master分支

  • Spring Cloud C版、D版和E版,请采用3.x.x版本,具体代码参考Edgware分支

  • 4.x.x版本由于Swagger和Spring Boot 2.x.x版本的Actuator用法有冲突,故暂时不支持Endpoint功能,其他功能和3.x.x版本一致

中间件兼容情况

  • Consul

  • Zookeeper

    • Spring Cloud F版,必须采用Zookeeper的3.5.x服务器版本(或者更高)

    • Spring Cloud C版、D版和E版,最好采用Zookeeper的3.5.0以下服务器版本(或者更低)

  • Eureka

    • 跟Spring Cloud版本保持一致

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

微服务开源生态报告 No.4

「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展。 社区动态包括,但不限于:版本发布、人员动态、项目动态和规划、培训和活动。...

07/15 17:08
10
0
微服务开源生态报告 No.4

「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展。 社区动态包括,但不限于:版本发布、人员动态、项目动态和规划、培训和活动。...

07/15 15:18
13
0
Nepxion Discovery【探索】微服务企业级解决方案

Nepxion Discovery【探索】微服务企业级解决方案】 Nepxion Discovery【探索】使用指南,基于Spring Cloud Greenwich版、Finchley版和Hoxton版而制作,对于Edgware版,使用者需要自行修改。使...

10/10 13:33
17
0
Spring Cloud开发人员如何解决服务冲突和实例乱窜?

一、背景 在我们开发微服务架构系统时,虽然说每个微服务都是孤立的可以单独开发,但实际上并非如此,要调试和测试你的服务不仅需要您的微服务启动和运行,还需要它的上下文服务、依赖的基础...

09/04 15:32
19
0
强烈推荐一款开源项目! (OPC)微服务能力开放平台!

简介 OPC微服务能力开放平台 简称ocp是基于layui+springcloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....),其核心的设计目标是分离前后端,快速开发部署,学习简单,功能...

06/12 10:17
182
0
开发人员如何解决 Spring Cloud 服务冲突和实例乱窜?

作者:zlt2000 原文:https://www.cnblogs.com/zlt2000/p/11459390.html?utm_source=tuicool&utm_medium=referral 一、背景 在我们开发微服务架构系统时,虽然说每个微服务都是孤立的可以单独...

09/04 19:59
9
0
企业微服务开放平台生产实践

项目代码地址 https://gitee.com/owenwangwen/open-capacity-platform 简称ocp是基于layui+springcloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....),其核心的设计目标是...

05/23 14:54
27
0
Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力

摘要: Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据、使用Selector机制来配置服务的路由类型、支持单机模式使用MySQL数据库、上线Node.js客户端,并修复了一些bug。 Na...

2018/12/28 16:53
58
0
Nepxion分布式RPC框架

Nepxion Thuder (QQ 1394997) 代码基地:https://github.com/Nepxion 介绍文档:http://nepxion.iteye.com/ 1. 概要 1.1 Thunder是基于Netty + Hessian + ActiveMQ + Tibco + Zookeeper(Cu...

2015/12/19 17:06
128
0
聊聊Elasticsearch的DiscoveryPlugin

序 本文主要研究一下Elasticsearch的DiscoveryPlugin DiscoveryPlugin elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/plugins/DiscoveryPlugin.java public interface Discov...

05/27 23:49
48
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部