java-training-camp icon indicating copy to clipboard operation
java-training-camp copied to clipboard

第四期 作业四:基于 Spring 6.0+ HTTP Interface 实现通用同区域优先以及 Zone 多活架构

Open mercyblitz opened this issue 1 year ago • 3 comments

要求:

  • Spring Cloud LoadBalancer 整合 Spring 6+ HTTP Interface(必须)
  • Spring 6.0+ HTTP Interface 实现通用同区域优先以及 Zone 多活架构(可选)

mercyblitz avatar Jan 22 '24 14:01 mercyblitz

服务端核心代码: 1、整合 ZoneAttachmentPreRegistrationHandler,实现区域信息注册到eureka。(代码链接) 2、提供 HTTP Interface 服务端(代码链接

客户端核心代码: 1、提供 microspere 项目中的 ZonePreferenceLoadBalancerClientConfiguration 的完善版本(代码链接) 2、将1的代码手动注册到LoadBalancerClientFactory(代码链接) 3、通过 RestTemplate 实现 HTTP Interface 客户端(代码链接

image

遗留问题: 一:暂未实现 HTTP Interface 客户端的自动装载。 二:microsphere.availability.zone 与 microsphere.availability.zone.enabled 属性共存,在 yml 配置场景下无法使用。

walklown avatar Jan 25 '24 16:01 walklown

问题一:RestTemplateDiscoveryClientOptionalArgs.preRegistrationHandler 属性的 Inject 注解去除了,导致注入实现不得不覆盖 RestTemplateDiscoveryClientOptionalArgs 原本的 Bean 注册。

如果新版本移除了 @Inject 注入,可以通过 BeanPostProcessor 来处理 RestTemplateDiscoveryClientOptionalArgs

mercyblitz avatar Jan 26 '24 06:01 mercyblitz

HTTP Interface的自动装载代码 单元测试代码单元测试

Kurok1 avatar Jan 26 '24 07:01 Kurok1