IPC 프로세스간 통신 방법 중에 제일 빠른 게 뭔가요?
http://en.wikipedia.org/wiki/Inter-process_communication
File Most operating systems
Signal Most operating systems; some systems, such as Windows, implement signals in only the C run-time library and provide no support for their use as an IPC method[citation needed]
Socket Most operating systems
Message queue Most operating systems
Pipe All POSIX systems, Windows
Named pipe All POSIX systems, Windows
Semaphore All POSIX systems, Windows
Shared memory All POSIX systems, Windows
Message passing
(shared nothing) Used in MPI paradigm, Java RMI, CORBA, MSMQ, MailSlots, QNX, others
Memory-mapped file All POSIX systems, Windows
여기에 다양한 아이피씨 방법이 있습니다.
웹 로봇으로 수집한 정보를 가공해 홈페이지에 표시해줄 때 로봇과 홈페이지 언어가 달라서 IPC를 써야 합니다.
이 때 제일 빠른 방법은 무엇일까요?
파이프는 느린가요?
음 ..
아무래도 shared memory 가 제일 빠를 것 같네요.다른 address space 로 데이터 복사가 일어나지 않으니..---
음.. 바보같은 댓글을 달았군요. 언어가 다르다는 문구를 주의깊게 못봤네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
...
shared memory는 언어가 달라도 가능해요. 바이너리 포맷을 잘~ 정하면 되죠.
음 ..
홈페이지 언어라길래 php 나 jsp 가 떠오르길래, 얘네들은 잘 몰라서 일단 지웠는데..;;
검색해 보니 php 에서는 지원해주는군요... ㅎ~;;
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
확장성을 고려한다면 RPC(Java RMI)가
확장성을 고려한다면 RPC(Java RMI)가 무난하네요.
처리해야 하는 데이터가 많다면 단일 인스턴스로는 성능 향상 한계가 있습니다.
고맙습니다. 공부가 필요한 듯 싶습니다.
고맙습니다.
공부가 필요한 듯 싶습니다.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
데이터 스트림이 매우 dynamic 한 경우가
데이터 스트림이 매우 dynamic 한 경우가 아니라면 json 으로 램디스크에 저장하고 읽는 방법을 생각해보길 권해드립니다. 생각보다 훨씬 빠릅니다.
zeromq 를 쓰시는건 어떨지
공유메모리나 mmap, 메세지박스, 시그널등 ipc 방식을 사용하셔도 되지만
zeromq 라는 라이브러리는 이를 더 편하게 사용할 수 있도록 되어있는데요.
tcp, ipc 등 지원하고 자바, c, c++ , 파이썬, 루비등 여러언어에서 지원하는 걸로 알고 있습니다.
직접 데이터 구조를 정의해서 구현하시는 것도 좋지만 안정적인 라이브러리를 활용하시는 것이 버그나 구현 속도에서 나을 것 같습니다.
댓글 달기