-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat ✨ feed api 추가 #416
Labels
enhancement
New feature or request
Comments
niamu01
added a commit
that referenced
this issue
Mar 3, 2024
niamu01
added a commit
that referenced
this issue
Mar 8, 2024
niamu01
added a commit
that referenced
this issue
Mar 8, 2024
niamu01
added a commit
that referenced
this issue
Mar 8, 2024
niamu01
added a commit
that referenced
this issue
Mar 9, 2024
Closed
niamu01
added a commit
that referenced
this issue
Apr 2, 2024
niamu01
added a commit
that referenced
this issue
Apr 2, 2024
niamu01
added a commit
that referenced
this issue
Apr 4, 2024
niamu01
added a commit
that referenced
this issue
Apr 4, 2024
niamu01
added a commit
that referenced
this issue
Apr 5, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 10, 2024
niamu01
added a commit
that referenced
this issue
Apr 12, 2024
niamu01
added a commit
that referenced
this issue
Apr 12, 2024
틀만 갖추도록 만들어 두고 endCursor도 없어질 예정 - #416
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
내용
주요 기능: 새로운 소식 올리기 (피드 발행) , 팔로우 한 사람들의 소식 보기 (피드 생성)
피드 발행: 캐시&db에 기록, 나를 팔로우 하는 사람들의 피드에 전송
피드 생성: 내가 팔로우 하는 사람들의 피드를 모아 최신순 정렬
설계
feed db: {
피드 고유 id : objectId
유저 고유 id (로그인한 사람 말고 작성자) : number -> userPreview로 변경
작성된 시각 : Date
피드 타입 : enumType
각 피드에 맞는 글: 각 피드에 맞는 타입
}
// id까지만 한 collection에 두고 feed collection을 따로 두는 설계를 고민했지만... sql공부 중에 비슷한 컬럼끼리 한 테이블에 모아두라 해서 모아둠
feed cache: (Map자료구조)
key: 유저 id
value: 피드 고유 id의 배열
ex) Map<81730, [(81730이 팔로우 하는 사람이 적은 글1), ...]>
cache 방식 2가지
fanout-on-write
포스팅 시 뉴스피드(모든 피드)를 갱신
본인의 캐시에 해당 포스팅을 기록
뉴스피드가 갱신되어있어 (pre-computed) read시 빠름
팔로워가 많은 사용자는 모두(접속하지 않는 유저도) 갱신해줘야해서 오래 걸림 (hotkey)
fanout-on-read
피드를 읽으려 할 때 갱신 (요청기반 on-demand)
비활성화 사용자가 많은 경우 로그인 전까지 자원 소모 x
hotkey x
피드 읽기까지의 소요시간이 길어질 수 있음
+) 두 방법을 적절히 섞어 장점을 얻을 수 있지만,
fanout-on-write
방식을 우선적으로 구현 완료하고 마칠 예정의 이슈API
GET
캐시의 userId와 feedId를 통해 userPreview와 게시글을 가져와 반환
(그럼 게시글도 preloadCache를 해야하는게...맞나)
POST
cache와 db에 업데이트
get, post 둘 다 Authorization header 필요
240303
240308
240309
The text was updated successfully, but these errors were encountered: