Spring Cloud Sidecar

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

我有一个应用程序部署到基于 NetflixOSS 的云,其结构如下:

本质上是一种将信息持久保存到 Cassandra 集群的服务。所有应用程序都已注册到 Eureka - 因此在这种情况下,服务以及 Cassandra 节点都已注册到 Eureka,服务通过 Eureka 查找节点进一步连接到 Cassandra 集群。

我将分两部分来处理这个问题——

  1. 使用 Eureka 注册 Cassandra 节点
  2. 使用 Eureka 连接到 Cassandra 集群的服务

使用 Eureka 注册 Cassandra 节点

这就是 Sidecar 应用程序的用武之地——Sidecar 的目的是促进一些事情,使应用程序成为云环境中的好公民,在这个特定的实例中,它使 Cassandra 能够向 Eureka 注册,响应健康检查。 Spring Cloud Netflix Sidecar 项目为创建 Sidecar 应用程序提供了必要的支持。

启动和运行 Sidecar 应用程序所需的编码量非常少,Sidecar 的行为类似于典型的 Spring Cloud 应用程序,只是它不必将自己注册到 Eureka,而是必须注册另一个应用程序,因此配置基本相同。

这是我的 Sidecar 应用程序的全部代码!:


 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.sidecar.EnableSidecar;

@SpringBootApplication @EnableSidecar public class SampleSidecarApplication {

public static void main(String[] args) { SpringApplication.run(SampleSidecarApplication.class, args); } }

以及与之相关的属性:

应用.yml


 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.sidecar.EnableSidecar;

@SpringBootApplication @EnableSidecar public class SampleSidecarApplication {

public static void main(String[] args) { SpringApplication.run(SampleSidecarApplication.class, args); } }

这里的端口声明为与 Cassandra 相关的端口。

还有一个方面需要处理,即健康检查,Sidecar 公开了一个端点,可以在任何对应用程序有意义的情况下测试受支持应用程序的健康状况。对于 Cassandra,它可以连接到本地节点并触发一个小的 CQL 查询。

结论

假设 Cassandra 节点现在已向 Eureka 注册,尝试在消费服务端创建 Cassandra 会话会非常复杂,这主要是因为实例化 Eureka 客户端所涉及的时间以及代码试图找到节点列表。我将在随后的帖子中介绍这一点。如果您想进一步探索这个示例,这里是 github 存储库。