분산 세션 정합성 보장

2636 단어

분산 세션 정합성 보장

SESSION는 서버가 클라이언트를 위해 만든 세션으로 사용자의 관련 정보를 저장하고 사용자의 신분을 표시하는 데 사용된다.단일 서버 환경에서는 세션의 일치성을 고려할 필요가 없지만 집단 환경에서 문제가 발생할 수 있습니다. 만약에 한 사용자가 로그인 요청을 할 때 A 서버에 부하가 균형이 잡혀 있다면, A 서버가 그를 위해 분배되었고, 다음에 데이터를 요청할 때 SESSION 서버에 분배되었습니다. 이때 B 서버에 이 사용자가 존재하지 않기 때문에B이 사용자는 로그인 페이지로 리디렉션됩니다. 이런 상황은 불합리한 업무 논리이기 때문에 SESSION의 일치성을 유지해야 합니다.

솔루션


세션 동기화


여러 서버 간 상호 동기화SESSION, 즉 SESSION 서버에서 하나의 A 정보를 생성한 후 SESSION, B, C 등의 서버로 동기화하여 같은 D, B, C 서버에서 D 정보를 생성한 후에도 SESSION 로 동기화해야 합니다.

이점

  • 대부분의 응용 서버는 A 복제 기능을 제공하여 집단을 실현한다
  • 결점

  • SESSION 네트워크 전송을 동기화해야 하며 대역폭을 차지하고 일정한 지연이 있음
  • 한 기계의 SESSION 정보가 바뀌면 모든 서버SESSION의 내용을 동시에 업데이트해야 한다
  • 서버마다 모든 사용자 정보를 저장하고 서버 증가에 따라 성능이 급격히 떨어지며 방송 폭풍을 일으키기 쉽다
  • 세션 매핑


    부하 균형 서버를 수정하여 사용자에게 되돌아오는 SESSION 또는 사용자가 요청한 SESSION 주소를 표시하거나 4층 전송층에서 네트워크 층을 읽는 SESSION ID 또는 7층에서 읽는 IP 협의 중의 일부 속성을 사용하여 IP 이 사용자의 요청이 모두 같은 서버에 떨어지도록 보증합니다

    이점

  • 실현이 상대적으로 간단하다
  • 서버를 균등하게 분배하면 여러 대의 서버가 부하 균형이 잡힌다
  • 결점

  • 서버가 다운되면 서버 요청에 영향을 미치는 모든 사용자
  • 로드 밸런싱 서버가 하나의 상태 있는 노드로 바뀌면 메모리 소모가 커지고 재해가 더 번거롭다
  • 클라이언트 스토리지


    클라이언트에 데이터를 직접 저장합니다. 예를 들어 HTTP 또는 요청 헤더에서 클라이언트에게 요청할 때마다 자동으로 데이터 정보를 휴대합니다.

    이점

  • 단순성, 효율성
  • 서비스 측은 표시 사용자 정보를 저장할 필요가 없음
  • 결점

  • 보안이 떨어지고 민감한 정보는 암호화해야 함
  • 요청할 때마다 대량의 데이터를 가지고 외부 네트워크 대역폭을 차지할 수 있음
  • 데이터가 클라이언트에 저장되면 누설, 변경, 절도 등 위험이 존재한다
  • 백엔드 중앙 집중식 스토리지

    HASH,Cookie,SESSION,Mysql,Oracle,SqlServer,Redis 등 각 Mongodb 서버가 사용자 정보를 필요로 할 때 휴대SERVER하여 집중 저장 서버에 대한 요청을 하고 사용자 정보를 얻는다

    이점

  • 안전 위험이 없음
  • 수평 확장 가능
  • SESSION ID 서버 재가동으로 인한 손실이 없음
  • 결점

  • 요청마다 스토리지 서버에 대한 네트워크 요청이 한 번씩 증가
  • 중앙 집중식 스토리지 서버에 대한 요청이 많고 데이터베이스 압력이 높음
  • 참고

    https://www.jianshu.com/p/5caed857dc3e
    https://www.cnblogs.com/study-everyday/p/7853145.html
    

    좋은 웹페이지 즐겨찾기