2011-04-08 11 views
4

2 대의 원격 컴퓨터를 연결하는 수단으로 일부 원격 서버에서 실행되는 mysql 데이터베이스를 사용하는 것은 나쁜 습관입니까? 예를 들어, 원격 db의 특정 행에 대해 box1 폴링을 사용하면 box2가 게시 한 값을 확인하고, box2가 값을 게시하면 box1이 a, b, c를 수행합니다. 조언 해 주셔서 감사합니다.소켓 프로그래밍의 대안으로 mysql db?

답변

4

ZeroMQ과 같은 것을 사용하는 것이 좋습니다. 이는 대부분의 언어에 대해 바인딩이있는 소켓보다 사용하기 쉬운 추상화입니다. intro documentation뿐만 아니라 응용 프로그램에서 사용할 수있는 다양한 패턴의 many examples이 있습니다.

데이터베이스에 대한 유혹을 이해할 수 있지만 클라이언트간에 신호를 보내기 위해 끊임없이 쓰거나 폴링한다는 생각은 IO를 낭비하고 연결을 묶습니다. 더 중요한 것은 이해하기 어려울 것 같습니다./다른 사람 (또는 2 년 후) 자신이 디버그합니다.

+0

이것은 매우 흥미로운 내용입니다. 지금 비디오 개요를보고 있습니다. 여기를 가리켜 주셔서 감사합니다 ... 여전히 유혹을 느낍니다 : F (댓글은 위에 있지 않음) – brux

3

하실 수 있습니다. 복잡한 물건을 만들었다면 조심 해야겠다.하지만 괜찮 으면 한 번만 할 수있는 물건을 다루어야한다.하지만 그렇게 어렵지는 않다.

당신이하고있는 일을 메시지 큐라고하며, 그 중 일부는 MySql을 기반으로하는 오픈 소스 프로젝트입니다.

3

예?

상황에 중개인을 배치하여 코드의 요점을 모호하게 만듭니다. 알지 못하는 일을하기 위해 알고있는 것을 사용하려고하는 것 같습니다. 꽤 정상적입니다. 문제가 해결 될 수 있기 때문입니다.

+0

올바른, 소켓 작업과 반대로 mysql 작업을 멀티 스레딩한다는 생각은 훨씬 더 매력적이며 소켓 버전을 안전하게 만드는 것은 훨씬 어렵습니다. – brux

+0

실제로; 그러나 적어도 그것이 좋은 생각이 아니라는 것을 당신이 인식한다는 것이 좋습니다. 그러나 시장 진출 시간은 언제나 가장 좋은 의도를 무너 뜨 렸습니다. D – Tejs

1

컴퓨터가 2 개인 경우 (송신자 - 수신자)은 빠른 응답 시간이 필요할 경우 이 좋지 않습니다. 그렇지 않으면 괜찮습니다 ... 직접 소켓 연결은 더 좋을 것이지만 실제로 필요하지 않으면 시간을 낭비하지 않아도됩니다.

두 개 이상의 컴퓨터가 있고 내결함성이 필요하다면 실제로 은 중개인이 필요합니다. 중개인이 간단한 키 - 값 저장소 (예 : memcached, redis) 또는 메시지 대기열 (예 : 전용 메시지 대기열)이 될 수있는 기계간에 원하는 신호 방식에 따라 MySQL은 두 개의 대기열로 사용되는 것을 보았습니다 큰 트래픽을 가진 다른 사이트)

+0

그리고 얼마나 빨리 내가 ​​MySQL 데이터베이스에 대한 설문 조사, 속도가 내 ISP의 구성에 의해 제한됩니까? – brux

+0

은 서버 및 구성에 따라 다릅니다. 당신은 그것을 측정해야합니다;) –