将 Java 微服务部署在支持多语言的 Kubernetes 上  

将 Java 微服务部署在多语言生态系统内的 Kubernetes 上

| By Animesh Singh, Anthony Amanse

Description

任何应用程序都不是孤立的。如今,开发人员正在采用集成式微服务和云原生的微服务架构。那么在目前的新应用架构中,微服务需要与多语言环境共存。在这个 Code Pattern 中,将学习如何部署一个Java 微服务,并借助服务发现、注册和路由等能力,来与其他多语言微服务并行。

概览

在多语言的世界中,微服务不能只依赖于语言原生框架来完成服务发现、路由和其他任务,它需要与其他多语言服务一起部署。本 Code Pattern 将展示如何在多语言生态系统内部署一个基于 Java 的微服务应用程序,该应用程序名为 “GameOn!”。

该应用程序是一个基于文本的复古冒险游戏,旨在帮助您探索微服务架构和相关概念。该应用程序在 Kubernetes 集群上运行,拥有两种类型的微服务:核心和平台。核心微服务是用 Java 编写的,它还调用了其他多语言服务来获得支持以完成业务。在这种模式下,微服务要么使用 sidecars 作为在同一个微服务容器内的进程,要么使用单独的容器 sidecars 来利用平台服务进行服务发现、注册和路由。所有这些微服务都在一个 Kubernetes 集群管理的 Docker 容器中运行。

  1. 用户通过一个基于 HAProxy 的代理访问在 Kubernetes 上的 GameOn! 部署,该代理负责将 API 集合呈现为整个应用程序的单一方面。WebApp 是一个简单的 NGINX 进程,用于向客户端设备提供 Web 前端。
  2. 用户连接到 Player 微服务来玩游戏。该微服务提供了一个公共 API 来执行 CRUD 操作和管理 API 令牌。
  3. Player 微服务使用 Auth Java 微服务向选定的社交登录服务验证用户,并使用经过验证的玩家的个人资料和进度数据来响应客户端。
  4. 前端客户端需要建立一个与 Mediator 服务进行通信的 WebSocket,然后才能开始玩游戏。Mediator 服务是在 Java 中使用 WebSphere Liberty 实现的,并通过 WebSocket 将玩家连接到各个房间。
  5. 用户单击一个逐步解说样本中的一个按钮,创建一个新房间。
  6. 开发人员在房间实现中使用 Map 微服务,确保已使用最新的连接信息注册了该房间。Map 服务是一个在 WebSphere Liberty 上运行的 Java EE 应用程序,它使用 JAX-RS 提供一个公共 REST API。
  7. Map 服务查验 Player 服务,根据与开发人员相关的 API 令牌来确保允许开发人员更新房间的信息。
  8. 当用户导航到有效的房间服务时,Mediator 服务就会与该现场房间服务建立 WebSocket 连接。

相关博客

相关链接

致谢:

感谢姚炳雄对此 Code Pattern 的翻译内容的审核,并提供了宝贵的反馈意见。