[SPRING] 어떻게 WebSocket을을 사용하여 MySQL의에서 라이브 알림 업데이트를 얻으려면?
SPRING어떻게 WebSocket을을 사용하여 MySQL의에서 라이브 알림 업데이트를 얻으려면?
몇 일에서 나는 소셜 네트워크 또는 Q / A 웹 사이트 라이브 알림을받을 방법을 찾고 있었다. 그리고는 가입자 게시자 패턴에 대해 알게되었습니다. 나는 라이브 업데이트가 WebSocket을을 사용하여 가져온 것을 알게되었습니다. 엔드 포인트 및 클라이언트를 게시 할 웹 소켓이 엔드 포인트에 가입하고 일정 변경에 대한 업데이트를 얻을. 하지만 웹에서받은 예는 채팅 모든 응용 프로그램입니다. 하지만 내 요구 사항은 MySQL의 DB에서 실시간 알림을받을 것입니다. 그래서 나는 마음에 몇 가지 질문이
내 패턴이 옳다면, 나는 MySQL의에 웹 소켓을 연결할 수있는 방법을 모르겠어요. 어떤 도움 / 지침은 높게 평가된다.
최신 정보: 좀 더 웹 검색 후 : 내 웹 사이트에 대한 나머지 웹 서비스를 만드는 오전부터 1, AJAX는 알림 기능 대신 WebSocket을 구현하는 더 나은 방법이 있나요? 2. WebSocket을은 AJAX보다 구현하기가 복잡 나머지 엔드 포인트를 (모두의 목적이 동일하기 때문에, 알림을 얻기 위해) 타격 호출?
해결법
-
==============================
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 채널이 있다면, 그것을 유지하는 것이 비현실적인 것).
어쨌든 ... 행운을 빕니다!
from https://stackoverflow.com/questions/48688604/how-to-get-live-notification-updates-from-mysql-using-websockets by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 보안 로그 아웃 및 최대 세션 (0) | 2019.10.03 |
---|---|
[SPRING] 실행 항아리에서 실행 스프링 테스트 (0) | 2019.10.03 |
[SPRING] ContextRefreshedEvent 봄에 발사 될 때? (0) | 2019.10.03 |
[SPRING] 봄 SAML - 읽기 및 실행시 상쾌한 IdP가 메타 데이터 (0) | 2019.10.03 |
[SPRING] 어떻게 봄 부팅 응용 프로그램에서 활성 구성을 기록하는? (0) | 2019.10.03 |