Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

想询问一个灰度发布的接入方案,因为这边的项目有好多框架都是自建的,想问一下这种情况要如何接入 #64

Open
d891320478 opened this issue Jul 17, 2023 · 0 comments

Comments

@d891320478
Copy link

具体情况是这样的,目前后端由c++、golang、java组成,最开始只有c++,c++那边自研了一套rpc的框架,后来java和go也接入到这套框架上,接下来又自研了网关服务,入口网关用的nginx,这样整体结构如下:
nginx->自研网关->微服务
同时静态资源由nginx转发。

目前想要通过opensergo实现灰度发布,同时支持前端静态资源灰度和后端服务灰度,结合目前的情况想了以下几种方案,但是都存在一定问题:
1、将现有的nginx拆分成灰度和正式,在nginx之上再加一层网关,并且新加的网关原生支持opensergo,将流量分发到灰度或者正式的nginx,然后通过nginx打灰度标记,通过自研网关转发到灰度或者正式的微服务上。
考虑这种方案的原因是,原本已经做过一套灰度发布方案,注册中心支持区分灰度节点和正式节点,但是现有方案对于灰度规则的配置方式过于不合理,需要写配置文件,操作复杂,支持的规则只有一种,而且由于某些原因存在一定的业务侵入。
目前由于未找到nginx直接接入opensergo的相关文档,使用其它网关如springcloud等需要额外的调研和接入成本,但是看起来开发量更小。

2、基于方案1,在自研网关和rpc层面完全改造,支持opensergo的协议,并给nginx提供脚本,通过opensergo的配置规则识别流量。
这样的好处是规则相对配置更灵活且能够实时生效,缺点是改造量太大。

3、不考虑opensergo,重做一套用于配置和验证灰度规则的功能,再由nginx、网关做接入。
这样做的好处是成本可控,而且对于大多数采用docker compose部署的项目,方便接入,不像opensergo目前强依赖k8s,缺点是轮子越造越多,维护更困难。

目前思考出了这三种方案,想讨论一下哪种方式更合理,或者还有没有其它方式

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant