Cloud foundry Eureka在云铸造/PaaS环境中的价值?

Cloud foundry Eureka在云铸造/PaaS环境中的价值?,cloud-foundry,spring-cloud,netflix-eureka,Cloud Foundry,Spring Cloud,Netflix Eureka,我们正在开发一款将部署在cloud Foundry中的云本地应用程序,在最初的“让我们使用Netflix的所有产品”之后,我们开始质疑与CF的重叠是否证明了Netflix组件的使用是合理的 特别是在Eureka的情况下,我们计划将其用于服务发现,但随后CF和routes提供了非常类似的现成功能。我们将错过的是服务的运行时注册(在架构不经常更改的情况下,这不是一个很大的挑战,实际上是serviceID->CF路由的静态映射)和心跳(在应用程序级别,因为我假设在容器级别,CF确保一切正常) 所以现在

我们正在开发一款将部署在cloud Foundry中的云本地应用程序,在最初的“让我们使用Netflix的所有产品”之后,我们开始质疑与CF的重叠是否证明了Netflix组件的使用是合理的

特别是在Eureka的情况下,我们计划将其用于服务发现,但随后CF和routes提供了非常类似的现成功能。我们将错过的是服务的运行时注册(在架构不经常更改的情况下,这不是一个很大的挑战,实际上是serviceID->CF路由的静态映射)和心跳(在应用程序级别,因为我假设在容器级别,CF确保一切正常)

所以现在我想知道-当使用CF时,你如何在你的应用程序(现实生活中的应用程序)中使用它?将其保留在体系结构中有什么好处

谢谢,

莱泽克

附言。
有趣的是,如果eureka存储serviceID->CF路由的简单映射,那么如果我是对的,Zuul的值也会下降(因为LB将由CF交付,gorouter是一个非常好的选择)。

eureka使用应用程序ID进行服务发现,这只存在于应用程序设计的上下文中。CloudFoundry路由使用URL进行寻址,这在代码中引入了对底层基础设施的依赖性

如果我需要访问
帐户服务
,我想以该名称申请。该服务的URL将有所不同,这取决于我是在本地计算机上测试、运行已部署的QA实例还是在生产环境中运行。我不想让我的应用程序知道它在哪里运行,以及哪个URL映射到哪个环境。无论如何,这些URL可能会随着时间的推移而改变


如果我使用Eureka,那么我只需要
帐户服务
,特定于环境的问题就会从我的应用程序中抽象出来。

对于cloud foundry,我们也觉得使用Eureka可能是一种过火的行为。 但我们做了一件事,将服务的名称外部化和标记化。最初我们需要SpringConfigurations服务来管理配置,但觉得它也可以作为服务url映射的中心源。(必须编写自定义代码以从中央数据源加载)

我们创建了一个带有自定义数据存储的Spring配置服务,其中包含许多内容,如密码、服务URL等。 我们使用cups连接到Spring配置服务,配置模板包含一组令牌,然后动态地将其转换为服务URL

我们最初需要SpringConfigurations服务来管理配置,但觉得它可以作为服务url的中心源(必须编写自定义代码以从数据源加载)

CloudFoundry没有ip和端口,因此无需跟踪单个实例的运行状况检查以实现负载平衡。CF在内部做得非常好,开箱即用。 因此,您只需要一个中央数据源,就可以将我们的host.domain名称与密钥/令牌映射。 成员资格v1=


但若您希望一个点击CF的事务能够调用托管在多个数据中心的服务,那个么您将需要eureka或consul.io来克服这一问题。CF集群不跨数据中心。

如果我们假设使用硬编码URL,这是正确的,但是如果我们使用配置服务(我希望现在大多数人都使用配置服务)来存储serviceID->cloud foundry路由映射上的信息会怎么样?本地机器、QA和PROD(通过spring概要文件区分)的映射将有所不同,并将从我的应用程序中抽象出来。如果我是对的,这种方法将提供与Eureka在CF中提供的完全相同的结果,但将从每个服务中删除一个组件(Eureka服务器)和Eureka客户端libs。所以我的观点是一场纯粹的胜利…?:)这当然是一种可行的方法,但它确实需要您在两个地方维护路由并保持同步。您需要定义与cf关联的路由(例如在manifest.yml中),然后在config server中定义匹配的路由。如果某些地方发生了变化,则需要在这两个地方进行修复。在更大的部署中,最好避免那些非自动同步任务。但是如果它在你的环境中对你有效,那就太好了!说得好。所以现在我想知道——如果我们在体系结构中已经有了Redis,那么serviceID->route的这种映射可以保留在Redis中。好处-没有额外的组件,如果我是对的话,有Eureka的所有价值?小更新(一个月后)-由于您提到的原因,我们最终还是使用了Eureka-有时我厌倦了在太多的地方(包括Zuul)配置路由;-)再次感谢你的帮助!如果还没有发现,我在这里找不到它,您可以配置Eureka客户端来宣布IP:端口,而不是HTTP路由。这样,例如使用Ribbon,您可以针对单个实例运行负载平衡。不过,请记住,您的CF实例需要允许应用程序实例在不通过CF路由器的情况下相互联系。当我看到您的答案时,有一个简短的更新:显示了CloudFoundry的一个新功能,使其能够使用CPI、云提供商接口跨多个数据中心运行。