我有一个部署到基于NetflixOSS的云的应用程序,该应用程序具有以下结构:
本质上是一种将信息持久保存到Cassandra群集的服务。 所有应用程序都已注册到Eureka –因此,在本例中,该服务以及Cassandra节点都已在Eureka中注册,此外,该服务还通过Eureka查找节点,从而连接到Cassandra集群。
我将分两部分处理:
- 向Eureka注册Cassandra节点
- 使用Eureka连接到Cassandra群集的服务
向Eureka注册Cassandra节点
这是Sidecar应用程序适合的地方– Sidecar的目的是促进使应用程序在Cloud环境中成为良好公民的某些事情,在这种特定情况下,它使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);}
}
以及与此相关的属性:
application.yml
eureka:instance:virtual-host-name: samplecassandra.vipspring:application:name: samplecassandrasidecar:port: 9042
在此,该端口被声明为与Cassandra相关的端口。
健康检查还有一个方面需要处理,Sidecar公开了一个端点,该端点可以测试受支持应用程序的运行状况,无论该应用程序是否有意义。 对于Cassandra,它可以连接到本地节点并触发一个小的CQL查询。
结论
假设现在已在Eureka中注册了Cassandra节点,尝试在消费服务端创建Cassandra会话的复杂程度很高,这主要是由于实例化Eureka客户端所涉及的时间以及代码尝试查找节点列表。 我将在后续文章中介绍。 如果您想进一步探索该示例,请访问github repo。
翻译自: https://www.javacodegeeks.com/2015/09/spring-cloud-sidecar.html