Spring Cloud Sidecar

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

我有一个应用程序部署到基于 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 存储库。

相关文章