운영 및 유지보수 안전 세션 일관성 설계

세션 일관성 설계

Jun 25, 2021 pm 06:09 PM
1

세션 일관성

세션이란

web-server는 동일한 브라우저에 접속하는 사용자에 대해 자동으로 세션을 생성하고 저장 기능을 제공할 수 있습니다. 일반적으로 사용자 로그인 정보는 세션에 저장됩니다.

세션 일관성 문제는 무엇인가요?

백엔드에 웹 서버가 하나만 있는 경우 모든 http 요청에 대해 올바른 세션을 찾을 수 있습니다. 문제는 고가용성을 충족하지 못한다는 점이다. 서버 한 대가 끊기면 끝난다. 중복성 + 장애 조치, 여러 웹 서버 배포 및 nginx가 다른 웹 서버로 라우팅됩니다. 모든 http 요청은 라우팅되며 동일한 서버로 라우팅된다는 보장이 없으므로 일관성 문제가 발생합니다.

세션 일관성을 해결하기 위한 일반적인 솔루션

일관적인 해시

가장 먼저 떠오르는 솔루션은 동일한 IP가 동일한 웹 서버에 속하도록 클라이언트 IP를 기반으로 해시하는 것입니다. userId, cityId 등 비즈니스 필드 기반의 해시를 사용하면 더욱 유연하게 사용할 수도 있습니다. 그러나 이는 단일성의 원칙을 파괴하고 게이트웨이와 비즈니스를 끈적하게 만드는 것이므로 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋습니다. 장점: 캐시를 저장하고 수평으로 확장할 수 있습니다. 단점: 일부 서비스를 다시 시작하면 세션이 손실되어 일부 사용자가 다시 로그인하게 됩니다. 해시가 수평으로 확장되고 다시 해시 후 세션이 재배포되면 일부 사용자는 세션을 라우팅할 수 없습니다

세션 동기화

여러 웹 서버 간의 세션은 서로 동기화되므로 각 웹 서버에는 모든 세션 정보. 단점: 모든 세션을 포함하기 때문에 메모리에 따라 클러스터 수가 제한되고 확장이 제한됩니다.

클라이언트 저장소

로그인 정보는 클라이언트에 저장되며 각 요청에는 사용자 정보가 전달됩니다. 서버는 완전히 상태 비저장이며 확장이 쉽습니다. 장점: 서버 측에 스토리지가 필요하지 않습니다. 단점: 각 http 요청은 사용자 정보를 전달하므로 트래픽이 낭비되며, 쿠키는 너무 많은 정보를 저장할 수 없습니다.

백엔드 중앙 집중식 스토리지

웹 서버는 세션 정보를 저장하기 위해 통합 스토리지에 연결합니다. 후속 확장을 용이하게 하기 위해 Redis 클러스터에 저장하는 것이 좋습니다. 장점: 정보 유출 위험이 없으며, 수평 확장 시 데이터 손실이 없음, 단점: 추가 네트워크 요청이 추가되고, Redis를 쿼리하려면 비즈니스 코드를 수정해야 함.

위 내용은 세션 일관성 설계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)