복붙노트

[SPRING] 어떻게 WebSocket을을 사용하여 MySQL의에서 라이브 알림 업데이트를 얻으려면?

SPRING

어떻게 WebSocket을을 사용하여 MySQL의에서 라이브 알림 업데이트를 얻으려면?

몇 일에서 나는 소셜 네트워크 또는 Q / A 웹 사이트 라이브 알림을받을 방법을 찾고 있었다. 그리고는 가입자 게시자 패턴에 대해 알게되었습니다. 나는 라이브 업데이트가 WebSocket을을 사용하여 가져온 것을 알게되었습니다. 엔드 포인트 및 클라이언트를 게시 할 웹 소켓이 엔드 포인트에 가입하고 일정 변경에 대한 업데이트를 얻을. 하지만 웹에서받은 예는 채팅 모든 응용 프로그램입니다. 하지만 내 요구 사항은 MySQL의 DB에서 실시간 알림을받을 것입니다. 그래서 나는 마음에 몇 가지 질문이

내 패턴이 옳다면, 나는 MySQL의에 웹 소켓을 연결할 수있는 방법을 모르겠어요. 어떤 도움 / 지침은 높게 평가된다.

최신 정보: 좀 더 웹 검색 후 : 내 웹 사이트에 대한 나머지 웹 서비스를 만드는 오전부터 1, AJAX는 알림 기능 대신 WebSocket을 구현하는 더 나은 방법이 있나요? 2. WebSocket을은 AJAX보다 구현하기가 복잡 나머지 엔드 포인트를 (모두의 목적이 동일하기 때문에, 알림을 얻기 위해) 타격 호출?

해결법

  1. ==============================

    1.WebSocket을 번영과 AJAX를 통해 큰 이점을 제공 할 경우 실시간 알림입니다.

    WebSocket을 번영과 AJAX를 통해 큰 이점을 제공 할 경우 실시간 알림입니다.

    당신이 알고있는 (CRUD에 대 한 좋은 그다지 때 폴링) AJAX의 역할을 토론 할 때와 AJAX 성능 대 웹 소켓 성능을 비교할 때 두 (WebSocket을 항상 빠른 실시간 업데이트에 관한 한 곳입니다) 전에,이 이미 논의되었다.

    예 ... 당신은 자원을 절약하고 데이터베이스 액세스 포인트에 on_update "후크"를 추가하여 성능 (뿐만 아니라 미래의 코드를 유지 보수 문제)를 향상시킬 수 있습니다.

    아이디어는 간단하다 : 함수 호출은 MySQL 데이터베이스를 업데이트 할 때마다 업데이트 요청이 또한 콜백로 전송됩니다. 즉, 콜백 올바른 채널에 업데이트를 게시 담당하고있다.

    이 방법, 당신은 MySQL 데이터베이스를 폴링하지 않습니다.

    일부 데이터베이스는 업데이트 콜백을 제공하고 다른 사람은하지 않습니다. 나는 MySQL은 않습니다 생각합니다. 그들은 데이터베이스를 특정하기 때문에, 나는이 데이터베이스에 링크 된 콜백을 피하십시오. 너무 코드 기반에 영향을주지 않는 데이터베이스를 대체하는 응용 프로그램에서 데이터베이스 액세스 포인트에 콜백을 추가하는 것이 좋습니다 (IMHO)입니다.

    나는 AJAX 좋은 방법이라고 생각하지 않습니다.

    HTTP / 2는 AJAX의 단점을 완화하는 데 도움이,하지만 그들 모두가 해결되지 않습니다.

    난 당신이 동시에 연결 할 것으로 예상 얼마나 많은 고객 모르겠지만, 클라이언트를 강제로 요청마다 초를 보내거나 두 DoS 공격을 가해 자체에 매우 가까이 할 수 있습니다.

    이것을 고려 : 클라이언트가 2,000 동시 클라이언트에서보다, Ajax 요청을 2 초 간격으로 전송하면, 서버는 1000 REQ / 초에 응답해야합니다 -이 인증, 데이터베이스 쿼리 및 모든 재즈를 포함한다.

    2000 연결된 클라이언트와 WebSocket을를 사용하는 반면,에, 당신은 메시지가 도착할 때까지 아무것도하지 않고 2000 영구 연결을 가지고있다. 어떤 CPU 나 직장, 그냥 연결의 메모리를 필요하지 않습니다. 실제 데이터를 누를 때까지 스트레스가 서버에 없습니다.

    네, 구현하기가 더 복잡하지만, 그들은 어려운 당신이 시작하면 수 없습니다. 또한, 도서관, 어깨 떨어져 많은 작업을 도우미 도구가 많이있다.

    웹 소켓 방식과 관련된 일반적인 문제는 (더 나은 가능 무시) 및 데이터 전파 우려 메시지 순서 (우리가 표시 할 때 (보통 술집 / 하위 데이터베이스 또는 서비스 등의 레디 스 등을 추가하여) 수평 스케일링의 처리를 포함 ? "볼"등의 데이터는 우리가 사용합니까 어떻게 우리가 구독을 분할 할 얼마나 많은 채널 전체 데이터 또는 해당 데이터를 알리는 통보 만 볼 수 있습니까? 보내나요?).

    일반적으로 답변이 응용 프로그램 특정 당신이 당신의 데이터 세트의 예상 크기뿐만 아니라 풀다하려는 기능에 따라 달라집니다 (I가 준 모든 대답은 SO 채널이 있다면, 그것을 유지하는 것이 비현실적인 것).

    어쨌든 ... 행운을 빕니다!

  2. from https://stackoverflow.com/questions/48688604/how-to-get-live-notification-updates-from-mysql-using-websockets by cc-by-sa and MIT license