2017-04-06 1 views
0

저는 주식 시장 분석을 위해 빅 데이터 애플리케이션을 구축해 왔습니다. 하루에 약 5TB의 레코드. 나는 Cassandra/MySQL에서 데이터 변환/계산과 저장을 위해 Golang을 사용합니다. 그러나 Python에는 Pandas, Spark 등의 데이터 분석을위한 훌륭한 라이브러리가 있지만 멀티 코어 처리에는 쉬운 방법이 없으며 많은 시간이 필요합니다.Golang에서 Python 태스크를 호출하십시오.

그래서 나는 Golang에서 동시에 파이썬 데이터 분석 작업을 호출하려고합니다. 한 가지 방법은 명령 줄 작업을 직접 실행하는 것이지만 더 확장 가능한 솔루션이 있어야한다고 생각합니다. 어쩌면 골란과 파이썬 사이의 의사 소통을위한 도서관이있을 것입니다. 어쩌면 내가 파이썬 플라스크의 여러 서버를 만들어 그들에게 작업을 제공해야한다고 생각했습니다. 속도는 중요하지만 간결한 솔루션을 위해 일부는 희생 할 수 있습니다. 어떤 아이디어?

답변

0

제안한 것처럼 여러 개의 서버로 앱을 분할하면 약간의 단점이 있습니다.

더하기 쪽에서는 위로 나누면로드 균형 조정 측면에서 더 많은 유연성을 얻을 수 있습니다. 즉, 플라스크 서버에 과부하가 걸리면로드 균형 조정기를 사용하여 몇 가지 더 회전하고 수평으로 확장 할 수 있습니다. 물론 이것은 당신이 그 플라스크 서버에서 수행하고있는 것이 무엇이든간에 병렬로 수행 될 수 있다고 가정합니다 (실제 비즈니스 로직에 따라 다름).

또한 고 가용성을 제공하므로 잠재적 인 단일 장애 지점을 제거 할 수 있습니다. 지금 당신은 이제 통해 통신하고 있기 때문에, 서버

  • 일부 네트워크 오버 헤드 2 종류를 쓰고있어 이후

    그러나,이 'microservice'접근 방식은 약간의 오버 헤드 쓰기

    • 더 많은 코드를 부과하지 함수 호출과 반대되는 네트워크.

    당신은 직렬화 google-protobuff 사용을 고려할 수있다 (당신이 용기에 모든 것을 실행할 수 있지만, 당신은 여분의 처리 능력을 필요가없는 경우에 그들은 모두, 동일한 시스템에있을 수 있음)

  • 더 머신이 스핀/드 직렬화 메시지들. 언어에 구애받지 않으며 네트워크 오버 헤드의 일부를 절약합니다. json을 보내는 것만 큼 쉽지는 않지만 효율성이 가장 중요하다면 문제가 될만한 가치가있을 것입니다. 게다가 파이썬에서도 지원됩니다.

  • 관련 문제