我一直在为股市分析构建大数据应用程序。每天约5TB的记录。我使用Golang进行数据转换/计算并在Cassandra / MySQL中保存。但是Python有很好的数据库分析Pandas,Spark等,但是多核处理没有简单的方法,需要花费很多时间。
所以,我想在Golang中同时调用python数据分析任务。一种方法是直接执行命令行任务,但我认为应该有更多可扩展的解决方案。也许Golang和Python之间有通信库。我想也许我应该创建Python Flask的多个服务器并为它们提供任务。速度很重要,但我可以牺牲一些来简化解决方案。有任何想法吗?
答案 0 :(得分:0)
如您所建议的那样,将您的应用拆分为多个服务器,需要进行一些权衡。
从好的方面来说,拆分它可以在负载平衡方面提供更大的灵活性。换句话说,如果您的烧瓶服务器负担过重,您可以随时旋转一些并使用负载平衡器进行水平扩展。当然,这假设您在这些烧瓶服务器上所做的任何事情都可以并行完成(取决于您的实际业务逻辑)。
它还提供高可用性:消除一个潜在的单点故障。
然而,这种“微服务”方法确实会产生一些开销
您可以考虑使用google-protobuff序列化/反序列化邮件。它与语言无关并节省了一些网络开销。它不像发送json那么容易,但如果效率至关重要,那么它可能值得一试。另外,它支持python和go。