위 챗 보너스 금액 배분 알고리즘
2600 단어 짜임새
사용 자 는 위 챗 에서 보 너 스 를 빼 앗 을 때 가방 을 빼 앗 는 것 과 가방 을 뜯 는 두 가지 조작 으로 나 뉜 다.가방 을 빼 앗 는 것 은 보너스 에 남 은 금액 이 있 는 지 여 부 를 결정 하지만 행동 이 신속 하지 않 으 면 가방 을 뜯 는 단계 에서 다른 사용자 에 게 보 너 스 를 빼 앗 겼 을 수 있 습 니 다.
보너스 금액 은 언제 계산 합 니까?한 구조 군 텐 센트 재 지불 통 전문가 의 피드백 에 따 르 면 보 너 스 를 뜯 을 때 실시 간 으로 계산 하 는 것 이지 미리 분배 하 는 것 이 아니 라 실시 간 으로 계산 하 는 것 은 메모리 에 기반 하고 추가 저장 공간 이 필요 하지 않 으 며 실시 간 으로 계산 하 는 효율 도 높다.매번 보 너 스 를 뜯 을 때마다 시스템 은 0.01 에서 나머지 평균치 * 2 사 이 를 보너스 로 하 는 금액 을 취한 다.
매번 조작 하 는 원자 성 을 확보 하기 위해 가방 을 뜯 는 과정 에서 CAS 를 사용 하여 매번 한 명의 동시 다발 사용자 만 가방 을 뜯 는 데 성공 하도록 확보 했다.가방 을 뜯 는 CAS 에 실패 한 사용 자 는 시스템 에서 자동 으로 재 시도 할 수 있 습 니 다.그러나 재 시도 과정 에서 다른 사용자 에 게 기선 을 잡 혀 빈손으로 돌아 갈 수도 있 기 때문에 엄격 한 의미 로 가방 을 뜯 는 호출 도 사용자 가 먼저 얻 는 것 을 보장 하지 못 한다.
위의 원인 을 바탕 으로 그 당시 에 단체 에서 이런 알고리즘 이 복잡 하 다 고 언급 했 고 위 챗 보 너 스 는 저장 소 를 줄 이기 위해 매번 에 이해 가 약간 복잡 한 실시 간 계산 을 했다.대부분의 구조 사가 생각 하 는 사전 분배 금액 을 비교 해 보면 사전 분배 금액 은 금액 을 하나의 메모리 대기 열 에 저장 해 야 하고 보너스 의 점유 율 이 많 으 면 비교적 큰 저장 공간 이 필요 하 다.위 챗 보 너 스 는 count: balance 라 는 두 개의 숫자 만 저장 합 니 다.count 는 몇 명 이 뺏 을 수 있 는 지, balance 는 남 은 금액 만 을 말한다.
그러나 선분 배 금액 도 굳이 추가 저장 이 필요 한 것 은 아니다.예 를 들 어 랜 덤 알고리즘 을 이용 하여 피 드 가 같은 상황 에서 랜 덤 수가 실제로 돌아 오 는 랜 덤 시퀀스 도 고정 되 어 있다.아래 Python 코드 와 같이 주어진 seed 1024 에 대해 서 는 실행 할 때마다 돌아 오 는 결 과 는 같 습 니 다.
>>> import random
>>> random.seed(1024)
>>> random.randint(1,100)
80
>>> random.randint(1,100)
49
>>> random.randint(1,100)
39
>>> random.randint(1,100)
83
>>> random.randint(1,100)
88
따라서 사전 분배 금액 도 하나의 피 드 를 추가 로 저장 하거나 일부 보너스 id 를 이용 하여 암호 화 변환 제로 저장 해 야 한다.보 너 스 를 지급 할 때 는 CAS 조작 없 이 DECR 조작 만 하면 된다.DECR < 0 시, 보 너 스 를 뜯 어서 다 뺏 겼 다 는 뜻 입 니 다.DECR 은 원자 조작 이기 때문에 자 물 쇠 를 넣 을 필요 가 없고 간단 한 방법 으로 먼저 가방 을 뜯 고 먼저 얻 을 수 있 으 며 원리 적 으로 동시 충돌 하 는 상황 이 존재 하지 않 습 니 다.
1 인당 할당 금액 은: total * random (n) / randomtotalk, 중복 계산 필요 없어 요.random (1). random (n) 은 저장 할 필요 가 없습니다. 주어진 seed 에 대해 random (1) 에서 random (n) 으로 돌아 가 는 것 은 고정 되 어 있 기 때 문 입 니 다.
Reference: 1、https://www.zybuluo.com/yulin718/note/93148 2. 네티즌 들 이 채 팅 기록 을 바탕 으로 정리 한 위 챗 보너스 구성 도
위 에서 언급 한 구조 군 에 관심 이 있 는 친 구 는 Tim 공중 번호 인 'TimYang net' 에 주목 한 후 'arch' 에 답 하여 그룹 에 들 어 가 는 방식 을 얻 을 수 있다.Similar Posts:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenResty 관련 nginx 및 lua 함수루 아 코드 를 어떻게 사용 하 는 지 소개 한다.두 가지 방법 이 있 습 니 다.첫 번 째, server 의 location 에 직접 삽입 합 니 다. Nginx subrequest 를 통 해 다른 location...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.