문제

웹 응용 프로그램과 쉽게 상호 작용할 수있는 서버에서 이미지 처리 알고를 실행하고자합니다.이미지 처리 알고는 사용자 정의 빌드 라이브러리에서 무겁고 Wont를 사용할 수 없습니다.현재 저는 Heroku의 Ruby에서 내 웹 사이트를 위해 루비를 사용하고 있습니다.

이를 달성하기 위해 가장 좋은 아키텍처는 무엇입니까?웹 사이트에서 이미지 가져 오기 - IT에서 이미지 처리 알고 - 웹 사이트에 다시 표시

대부분의 이미지 처리 코드는 C / C ++에 있습니다.

Ruby에서 Ruby에서 C / C ++ 코드를 직접 전화 할 수 있습니까?헤로쿠에서 가능합니다.

또는 C / C ++ 코드가 Ruby on Rails Server에서 루비가 호출 할 수있는 일부 API를 노출시키는 시스템을 설계해야합니까?

도움이 되었습니까?

해결책

Heroku는 일반적으로 작은 가상 머신 인스턴스를 사용하므로 처리가 얼마나 무거운 지에 따라 아키텍처의 최상의 선택이 아닐 수도 있습니다. 그러나 사용하는 경우 다음을 수행합니다.

배경 작업 GEM을 사용하여 처리를 수행하십시오. 별도의 과정 에서이 일을하고 있습니다 (Heroku Terinology의 Dyno보다는 근로자라고 불리는). 지연된 직업은 Heroku에 통합하는 것과 관련된 온라인 정보가 풍부한 배경 작업에 대한 시도하고 테스트 된 솔루션이지만 현대 버전의 루비 버전에서 새로운 스레딩 시스템을 사용하는 SideKiq과 같은 새로운 것들이 있습니다. 그들은 모든 것을 다이노에서 수행 할 수있게 해줄 것이지만, 웹 서버 Dynos에서 모든 배경 처리를 멀리하는 것이 유용 할 것이므로 지연된 직업 (또는 이와 유사한)은 괜찮을 것입니다.

C / C ++를 통합하는 것에 따라, 아직이를 수행 할 필요가 없습니다. 그러나 C 또는 C ++ 코드를 통합하고 기본적으로 컴파일하는 GEM을 만들 수 있습니다. Jruby가 아닌 루비를 사용하는 한, Heroku는 그들에게 문제가 있어야한다고 생각하지 않습니다. 이 작업을 수행하는 다른 방법이 있으며,

와 같은 주제에 대해 구체적으로 질문을 봐주세요.

루비 내에서 C ++ 함수를 호출하려면

확장자를 만들어야하는 것으로 보이는 것으로 보이는 것으로 보입니다. 이 링크는 도움이되거나 도움이되지 않을 수도 있습니다.

http://www.rubyinside.com/how-to-create-a- ruby-extension-in-c-in- under-5-minutes-100.html

http://guids.rubygems.org/gems-with-extensions/

나는 Heroku 인스턴스에 라이브러리 또는 실행 파일을 가져 오는 것이 어려울 수 있다고 생각하는 것처럼 보석을 만드는 것이 좋습니다. 공개하고 싶지 않으면 벤더 디렉토리에 보석을 저장할 수 있습니다.

전반적으로 웹 서버가 S3에 업로드 할 수 있거나 이미지를 저장하고있는 곳이면 (웹 서버를 AWS JS API로 스테핑 스톤으로 사용하지 않고 브라우저에서 직접 수행 할 수 있습니다. 보석을 찾으십시오. .)

그런 다음 웹 서버가 이미지를 처리하기 위해 백그라운드 작업을 요청할 수 있습니다.

그들을 저장하지 않으면, 상황이 좀 더 흥미로워집니다 ... 백그라운드 작업을 사용하는 경우 데이터베이스가 필요하므로 이미지 데이터를 작업자에게 BLOB로 전달할 수 있습니다. 아마도 데이터베이스.

나는 정말로이 일을 때로는이 일을 때리지 않는 한, 웹 서버 다이노에서 모든 처리를하지 않을 것입니다. 여러 사용자와 함께 병목 현상을 매우 빨리 누르십시오.

백그라운드 프로세스는 이미지 테이블 행에 플래그를 설정하여 웹 서버가 처리가 완료되면 사용자에게 알릴 수 있습니다. (Ajax를 사용하여 업로드 완료 화면에서 JS를 사용하여 정보를 폴링 할 수 있음)

물론 여러 가지 요인에 따라 이것을 수행하는 다른 많은 방법이 있습니다.

답변이 모호하다는 사과하지만, 질문은 아주 열려 있습니다.

행운을 빕니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top