我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

Java Chassis 3技术解密:与Spring Cloud的互操作

来源:网络 更新时间:2024-04-10 09:31:14

本文分享自华为云社区《Java Chassis 3技术解密:与Spring Cloud的互操作》,作者: liubao68。

Java Chassis 3注重利用架构的韧性设计来解决兼容性问题,使得微服务之间的互操作更加灵活。

例如,引入微服务网关可以解决不同语言、不同框架、遗留系统之间的互操作问题。在本文中,将基于这一架构原则,探讨Java Chassis3在运行时设计依赖上的技术细节。

下面我们描述一个互操作的场景和假设。

  • Spring Cloud和Java Chassis应用同时注册到注册中心。引入了Spring Cloud Gateway作为网关,并将其注册到注册中心。
  • Spring Cloud微服务和Java Chassis微服务相互调用。它们在作为消费者的时候,无需感知对方是不同的框架,实现透明调用。

从技术原理上梳理上述互操作需要满足的条件:

  • Spring Cloud和Java Chassis需要相互认知的注册信息,包括应用名称、服务名称、地址信息和格式等。注册中心的选择对于注册中心和客户端进行选型有重要影响。在本例中,我们选择使用 Service Center 或者 Nacos 作为注册中心,并使用Spring Cloud Huawei实现Spring Cloud注册。
  • Spring Cloud访问Java Chassis时,只需要一个地址信息,依赖较少。而Java Chassis访问Spring Cloud,则需要了解Spring Cloud应用提供的契约信息。

Java Chassis与Spring Cloud的REST调用的部分,主要依赖于契约。Spring Cloud通过FeignClient来声明客户端契约,客户端需要在FeignClient中重复书写REST标签;而Java Chassis有两种契约发现模式:从注册中心发现和从Provider实例发现。Java Chassis3默认采用从Provider实例发现,而Java Chassis2则采用从注册中心发现。从Provider发现的好处在于可以降低对注册中心元数据管理能力的要求,这使得我们既可以选择 Service Center 作为注册中心,也可以选择 Nacos 作为注册中心。

从Provider发现,要求Provider实现以下接口:

它包含一个健康检查接口和一个查询契约的接口。只要Spring Cloud应用实现了上述接口,它就具备了Java Chassis微服务需要的基础特征,这样Java Chassis就可以像访问本框架的微服务一样访问Spring Cloud框架开发的微服务应用。为了简化这一过程,在Spring Cloud中简单实现该接口,该实现接口可以从 export 目录加载符合Open API 3.0规范的契约信息,只需将Spring Cloud需要对外暴露的REST接口的契约文件放到这个目录下。

Java Chassis与Spring Cloud互操作的例子已经放到了ServiceComb Samples中,该例子还提供了使用Nacos作为注册中心和配置中心的实现,只需要将Profile设置为Nacos即可。

客户故事:在架构选型变化的时候,解决功能迁移和兼容性问题是最大的挑战。一些客户在将Spring Cloud应用改造为Java Chassis的过程中,发现一些功能不被支持,比如SseEmitter、WebSocket等。如果选择支持这些能力,Java Chassis需要实现很多Servlet能力,这些能力规划会和微服务技术架构存在冲突。对于这些场景,我们选择通过架构韧性来保留这些功能,比如将提供SseEmitter、WebSocket功能的应用独立出来,采用Spring Boot开发,这些应用可以通过调用Java Chassis微服务的REST接口来实现其特殊功能。通过这种架构韧性的理念,降低了技术持续演进的包袱,为敏捷迭代,持续创新奠定了方向,减少了兼容性问题的争论。

点击关注,第一时间了解华为云新鲜技术~