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

ServiceComb是否可以动态进行Provider端的HTTP和HTTPS切换? #3820

Open
zhufeizzz opened this issue May 31, 2023 · 6 comments
Open
Milestone

Comments

@zhufeizzz
Copy link

目前我们系统使用的是服务端HTTPS模式,准备切换成HTTP模式,有几个问题:
1、会不会因为服务是Production状态,并且服务版本号未发生变化,导致服务启动注册Schema失败。
2、CSE服务端变更后,所有的客户端是否需要重启,包括JavaSDK和Mesher。如果不需要重启业务中断时间大概是多久。
3、是否可以支持系统一部分服务使用HTTP,一部分使用HTTPS。

@liubao68
Copy link
Contributor

liubao68 commented Jun 1, 2023

你可以先做一个验证。服务端能够正常启动起来并注册,和改成HTTP之前,做普通升级是一样的。

@zhufeizzz
Copy link
Author

zhufeizzz commented Jun 2, 2023

@liubao68 已经试了
1、Mesher不支持动态判断服务端是否开启SSL,只能在配置文件中写死协议类型,也就是说全系统必须统一为HTTP或HTTPS。
2、服务端Production状态下如果修改HTTP协议会报Schema禁止修改错误。

这两个问题让人很难理解,这不都应该是CSE最基本的服务注册发现功能吗。

@liubao68
Copy link
Contributor

liubao68 commented Jun 6, 2023

你说的第一个问题,看起来是 Mesher 的限制, 和 java chassis 无关
第二个问题是 java chassis不允许契约覆盖,比较好的实践是修改版本号(microservcie.yaml)定义, 或者升级到最新版本, 最新版本允许契约覆盖。

@zhufeizzz
Copy link
Author

第二个问题很难说得通,ServiceComb一直在说编程模型和通信模型解耦,HTTP Schema应该属于通信模型的一部分(跟IP/Port保持一致),为啥调整通信模型还要强制刷新版本号呢。

@wujimin
Copy link
Contributor

wujimin commented Aug 10, 2023

契约中包含了endpoint的信息,导致接口定义没变,仅仅是http schema变了,也被判定为契约变化
感觉可以优化,但是成本不低,好像还有兼容问题

大概也许可能,用允许契约覆盖的版本可以规避
不过,契约覆盖,违反了当初的设计基础准则,不知道有没有什么副作用

@liubao68
Copy link
Contributor

3.0.0会考虑支持这种场景。

@liubao68 liubao68 added this to the 3.0.0 milestone Aug 11, 2023
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

3 participants