위 챗 보너스 금액 배분 알고리즘

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:
  • 모 분포 식 응용 실천 일치 성 해시 의 문제점
  • 위 챗 구조의 시사 점
  • Feed 메시지 큐 구조 분석
  • 구 글 은 Datacenter 가 컴퓨터 라 고 말 했다
  • .
  • 단원 화 와 분포 식 구조의 절 분 문제
  • 좋은 웹페이지 즐겨찾기