如何从 Bluemix 上另一个应用程序的目录访问文件?

How to access file from another application's directory on Bluemix?

这是我的问题场景:

1.Create 2 apps.
2.App1 continuously pulls tweets and stores the json file in its /data folder.
3.App2  picks up the latest file from the /data folder of App1 and uses it.

我已经使用 R 及其相应的构建包在 bluemix 上部署应用程序。

How do I access /data/file1 in App1 from App2 i.e. can I do something like this in the App2 source file :

read.csv("App1/data/Filename.csv") ; will bluemix understand what App1 folder points to ?

您无法从 bluemix 上的其他应用程序访问文件。您应该使用像 cloudant 这样的数据库服务来存储您的 json。将相同的服务绑定到两个应用程序。

Bluemix 是一种平台即服务。这实质上意味着没有传统意义上的文件系统。是的,您的应用程序 "lives" 在一种 VM 上的文件结构中,但是如果您要随时重新暂存或重新部署您的应用程序,对文件系统的更改将会丢失。

处理您拥有的这些数据的 "right" 方法是将其存储在 NoSQL 数据库中,并将每个应用程序指向该数据库。 Bluemix 提供了多种选择,具体取决于您的需要。

MongoDB 可能是使用和理解起来更容易、更直接的数据库之一。 Cloudant 也非常好且稳健,但学习曲线略高。

设置此数据库后,您可以定期轮询它以获取新记录,或者更好的是,研究使用 WebSockets 将通知从一个应用程序实时推送到另一个应用程序。

无论哪种方式,单击 Bluemix 主导航中的 Catalog link 并搜索这些服务中的任何一个以供应并将它们绑定到您的应用程序。然后您需要通过 VCAP_SERVICES 环境对象引用它们,您可以了解有关 here.

的更多信息

使用 Cloudant 或对象存储服务之类的东西是在两个应用程序之间共享数据的好方法。您甚至可以将同一服务绑定到 2 个应用程序。

另一个解决方案是创建一个微服务,它是为您存储数据的持久层。然后,您可以在此基础上创建一个您的两个应用程序都可以调用的 API。

如上所述,将信息存储在磁盘上对于云应用来说不是一个好主意。去看看 http://12factor.net,它描述了编写真正的基于云的应用程序的禁忌。