원본 주소 : http://blog.jboost.cn/2019/06/29/session-redis.html
간단하고 빠른에 대한 몇 가지 초기 프로젝트, 우리는 독립형 환경의 요구 사항을 만족하지 않은,하지만, 사업의 확장을 독립형 개발 및 배치를하고, 또는 가용성 요구 사항을 개선하고 있습니다. 독립형 멀티 기계 스위치를 배치하는 배치 (시작 토큰 기반 인증이 무시 될 수있는 경우) 세션을 공유 할 수있는 중요한 부분이 될 수있다. 이 문서는 오픈 소스 프로젝트의 바람둥이 세션 관리 기반 레디 스 설명 : redission - 바람둥이, 코드가 침입 빠르게 세션 공유를 실현할 수 없습니다.
1. 소개
redisson입니다 비슷한 레디 스 클라이언트가, 그 기능은 jedis의 일부에 비해 풍부한 것으로 jedis. : redission-바람둥이는 바람둥이 세션 레디 스 프로젝트 매니저, 프로젝트 주소를 기반으로 https://github.com/redisson/redisson/tree/master/redisson-tomcat . 다른 구현보다 효율적인 프로젝트 저장, 기록 동작 및 더 최적화 비교. 호출 할 때마다 세션 매개 변수가되는 HttpSession.setAttribute
경우 레디 스 작성하지만, 다른 솔루션은 일반적으로 항상 세션의 전체 시퀀스 이후에 기록 될 수 있습니다.
2.
-
redisson - 모든-3.11.0.jar , redisson - 바람둥이 - 8-3.11.0.jar 바람둥이의 lib 디렉토리에 두 개의 항아리 패키지를 다운로드 (tomcat8 대한이, 다른 버전은 위의 항목 페이지에서 다운로드 링크 주소에서 확인하실 수 있습니다) .
-
바람둥이 conf 디렉토리에 다음과 같은 구성 파일의 context.xml 추가
< 관리자 클래스 명 = "org.redisson.tomcat.RedissonSessionManager" 의 configPath가 = "$ {/conf/redisson.conf catalina.base}" readMode = "MEMORY" 의 UpdateMode = "AFTER_REQUEST" broadcastSessionEvents = "FALSE" />
중
- 의 configPath : Redisson 포인트 또는 프로파일의 YAML JSON 포맷은 3 단계에서 설명한다.
- readMode는 : 세션 속성 모드를 참조하십시오. 가능한 값 1. MEMORY은, 패턴이 동시에 세션 속성은 로컬 세션과 레디 스 톰캣에 저장되며, 업데이트 세션 레디 스 톰캣 지역 행사 ;. 2 레디 스, 레디 스에 저장 만 세션 속성에 의해 후속 세션에 전파됩니다. 기본값은 레디 스입니다.
- UpdateMode를 : 갱신 모드 세션 특성을가집니다. 가능한 값은 1 DEFAULT, 세션은 속성
setAttribute
이 AFTER_REQUEST는 각 요청 후, 모든 레디 스 세션 속성을 저장하는 ;. 레디 스 방법에 저장. 기본값은 기본값입니다. - broadcastSessionEvents : true로 설정하면 sessionCreated 및 sessionDestroyed 이벤트가 모든 인스턴스 바람둥이에 방송되며, 등록 된 모든 HttpSessionListeners 리스너가 트리거됩니다. 기본값은 false입니다.
- 다음과 같이 바람둥이의 conf 디렉토리 redisson.conf의 새로운 구성 파일을 읽
{ "singleServerConfig": { "idleConnectionTimeout"10000, "ConnectTimeout이"10000, "타임 아웃"3000, "retryAttempts": 3, "RetryInterval을": 1500, "비밀번호": "123456", "subscriptionsPerConnection": 5, "CLIENTNAME"NULL, "주소": "레디 스 : //127.0.0.1 : 6379", "subscriptionConnectionMinimumIdleSize"1 "subscriptionConnectionPoolSize"50 "connectionMinimumIdleSize"24 "connectionPoolSize"64, "데이터베이스" 0, "dnsMonitoringInterval"5000 }, "스레드"16 "nettyThreads"32, "코덱"{ "클래스": "org.redisson.codec.FstCodec" }, "transportMode": "NIO" }
상기는 패스워드, 어드레스가 그 값을 수정하여 상기 레디 스 환경 설정 독립형 모드이다. 클러스터 모델의 경우, 구성 파일
{ "sentinelServersConfig": { "idleConnectionTimeout"10000, "ConnectTimeout이"10000, "타임 아웃"3000, "retryAttempts": 3, "RetryInterval을"1500, "failedSlaveReconnectionInterval"3000, "failedSlaveCheckInterval"60000, "암호 "NULL, "subscriptionsPerConnection "5 "CLIENTNAME "NULL, "로드 밸런서 "{ "클래스 ":"org.redisson.connection.balancer.RoundRobinLoadBalancer " } "subscriptionConnectionMinimumIdleSize "1 "을 subscriptionConnectionPoolSize "50, "slaveConnectionMinimumIdleSize": 24, "slaveConnectionPoolSize"64 "masterConnectionMinimumIdleSize": 24, "masterConnectionPoolSize"64 "readMode": "SLAVE", "subscriptionMode": "SLAVE", "sentinelAddresses": "레디 스 : //127.0.0.1 : 26379", "레디 스 : // 127.0.0.1:26389 " , "마스터 이름 ":"mymaster ", "데이터베이스 "0 }, "스레드 "16 "nettyThreads "32, "코덱 "{ "클래스 ":"org.redisson.codec .FstCodec " }, "transportMode ":"NIO " }
-
우리는로드 밸런싱을 달성하기 위해 nginx를 사용할 수 있습니다, 참조 구성
상류 cnserver { 서버 127.0.0.1:8080 중량 = 2 fail_timeout = 10S의 max_fails = 1; 서버 127.0.0.1:8081 중량 = 2 fail_timeout = 10S의 max_fails = 1; } 서버 { 80을 듣고; 서버 _ 로컬 호스트; 인덱스있는 index.html index.htm으로; 위치 / 휴식 / { 인덱스 index.html을; proxy_pass에 http : // cnserver / 휴식 /; } }
위의 모든 배포에 배포 한 다중 시스템 구성을 달성하기 위해 사용 redisson - 바람둥이입니다.
3. 요약
기술 인프라 서비스의 발전과 함께 진화하고있다. 사업 개발, 사용자의 수의 초기 단계에서 사업의 복잡성은 종종 간단한 단일 아키텍처를 사용하여, 빠른 온라인 검증을 달성하기 위해, 상대적으로 낮다. 이 프로젝트는 지속적인 최적화 및 업그레이드 사업 확장과 성장을 계속 할 수있는 기회를 가질 수밖에 동안 많은 프로젝트, 시간 아키텍처 진화 업그레이드의 GG 있었다하지 않을 수 있습니다. redisson-Tomcat은이 문서를 신속하게에만 세션 관리 측면에서, 물론, 다중 시스템 지원으로 전환하는 데 도움이 될 수 있습니다 독립 실행 형 프로그램을 설명합니다. 이 같은 파일 업로드, 지원을 배포 일반 작업과 같은 다른 문제에 관해서 경우, 다른 따라 조정해야합니다.
내 개인 블로그 주소 : http://blog.jboost.cn
내 GitHub의 주소 : https://github.com/ronwxy
내 마이크로 채널 대중 번호 : jboost-ksxy (뿐만 아니라 실제 건조 기술 공개 번호, 환영
주의) ------------------------------------------------ ---------------