问题描述
我们有一个基于Web的Java应用程序,我们计划将其迁移到云中,以使多个客户端将在基于SaaS的环境中使用它。 该应用程序的当前体系结构本质上是非常异步的。 有4个不同的模块,每个模块都有自己的数据库。 当需要在模块之间交换数据时,我们使用Pentaho推送数据,并利用目录结构存储临时数据文件,然后由另一个模块提取该临时数据文件以填充其数据库。 考虑到我们应用程序的性质,这种异步通信对我们非常重要。
现在,在将该应用程序迁移到云时,我们面临着两个挑战:
我们计划在数据库服务器上使用多租户,但是我们如何确保用于在不同模块之间传输数据的平面文件也被引导到数据库中各自的租户。
由于我们计划将其托管在云中,因此从数据安全的角度来看,如果将文本文件保存在云服务器上是安全的,则将征询您的意见。
1楼
在不了解您的系统的情况下,我实际上无法提供任何具体建议。 但是,根据我的经验,我建议切换到消息队列,像Kafka之类的东西会很好地工作。
是的,云提供商为静态文件存储提供了足够的安全性。 您可以限制访问,但您认为合适,例如使用AWS S3。
2楼
1-多租户在传输文件时可能会产生一些问题。 但是,从您提供的信息中,跨应用程序进行平面文件移动的过程不会受到影响。 您仍然可以考虑使用MQ模式来传递数据。
2-从数据安全性角度来看,AWS在访问级别,MFA等方面提供了许多功能。如果需要高度安全,我建议您获得AWS Private Cloud,其中任何级别的任何人都不会共享。
3楼
云中的文件存储是安全的,您可以使用控制IAM角色设置来控制文件的权限。 像Google( 云存储 ),Amazon( AWS S3 )等云提供商都提供了安全且可扩展的基础架构来维护云中的文件。
在常规设置中,云存储为您提供带有全局唯一标识的存储桶。 对于多租户设置,您可以为单个租户创建多个存储桶,并在其中存储必要的数据供稿。 接下来,您可以使用水壶(Pentaho)根据唯一的存储桶定义将作业批处理或流式处理作业推送到正确的数据库。
或者,您也可以将( 如其他答案 )推送到具有用户特定主题的流式设置(如ActiveMQ,Kafka等),并具有基于主题的流式服务( 使用java或pentaho )将数据提取到相应的数据库中。
希望这可以帮助 :)