2017-10-22 8 views
1

node.js 및 MongoDB에 소셜 네트워크 유형의 응용 프로그램을 개발 중입니다. 다음과 같은 기능을 추가하고 싶습니다. - 사용자 A가 사용자 B를 따라 가면 사용자 B가 게시 할 때 자동으로 사용자 A에게 와야합니다!노드 응용 프로그램에서 모든 팔로어에게 실시간 피드를 얻는 방법

접근 한 - 이것은 내가 사용자 B 포스트 뭔가 후 방출 할 때 채널을 구독하고 사용자 B의 채널 및 다른 모든 사용자를 작성 지금 까지 연구가 무엇 모든 가입자에 socket.io와 . 이 접근법을 위해 매번 새로운 사용자가 가입 할 때 채널을 만들려고합니다.

그러나 문제는입니다 - 내가 어떤 사용자가인지하여 MongoDB에서 채널을 저장하는 방법이 어떤 채널 알 수 있습니까 방법에 대한 등이 가능한 방법입니다. 서버를 크래시하는 너무 많은 채널을 만들면 어떻게됩니까?

접근 2-

나는 데이터베이스에 소스 사용자의 추종자를 검색

입니다 가지고 또 다른 방법. 그리고 socket.io를 사용하여 모든 추종자에게 피드를 내 보냅니다. 각 사용자의 팔로워가 100 명이고 사용자가 게시 할 때마다 데이터베이스를 검색하면 오버 헤드가 발생합니다.Redis 캐싱을 사용하면 팔로어를 저장하는 것이 더 좋을까요? 대신 검사의 팔로어 는 레디 스에서 찾아 3 socket.io

접근 방식을 사용하여 MSG를 방출 - 어떻게 찾을

내가 할 수 레디 스 펍/하위의 이름을 들었지만하지 않은 그것은 내 응용 프로그램에서 작동합니다.

이와 비슷한 것을 만들기위한 몇 가지 기준을 제안하십시오. 그리고 위의 접근 방식이 괜찮 으면 pls 나에게 그 흐름을 제안하거나 어떻게 그 코드를 만들 수 있습니다!

예를 들어 알려 주시면 좋겠습니다.

답변

1

나는 Approach 2을 사용할 수 있다고 생각하지만, 그렇게하려면 대기열 (redis queue 또는 rabbitMQ)을 만들어야합니다. 게시물을 만들 때 DB에서 100, 1000 명의 팔로어에게 메시지를 푸시하기 위해 대기열에 푸시해야합니다.

+0

그리고이 최적 상태를 유지하려면 팔로워를 redis에 저장합니까? 그래서 매번 백엔드 데이터베이스를 검사 할 필요가 없습니까? – kartik

+0

우리는 추종자에게 즉시 메시지를 보낼 필요가 없으므로 필요가 없습니다. 그렇게하기 위해 대기열에서 작업을 실행할 수 있습니다. DB로부터의 쿼리. –