+ All Categories
Home > Internet > Design a scalable social network: Problems and Solutions

Design a scalable social network: Problems and Solutions

Date post: 21-Apr-2017
Category:
Upload: chau-thanh
View: 335 times
Download: 0 times
Share this document with a friend
29
Design a scalable social network Problems and solutions Châu Nguy„n Nh“t Thanh October 27, 2016 Head of Game Backend and Cloud - VNG Corp.
Transcript

Design a scalable social network

Problems and solutions

Châu Nguyễn Nhật Thanh

October 27, 2016

Head of Game Backend and Cloud - VNG Corp.

Table of contents

1. Giới thiệu

2. Các module chính của MXH

3. Trang chủ

4. FriendList

5. Feed

6. Bonus

1

Giới thiệu

Về bản thân

Well-known as a:

• Technical Lead of ZingMe platform

• Technical Lead of Cyber Station Manager

• Co-Founder of VNG IoT LabGuest

Speaker at:

• PHPDay 2010, 2011, 2012

• Grokking Engineer

• Vietnam Web Submit

2

Các module chính của MXH

Trang chủ

Figure 1: Trang chủ facebook

3

Danh sách bạn bè

Figure 2: Facebook friend list

4

Photo

Figure 3: Facebook photo 5

Trang chủ

Thách thức

Cách làm thông thường:

• Web server kết nối đến

DB server

• Mỗi chức năng thể hiện

bằng 1 hoặc nhiều table

Với cách làm này:

• Latency cao do phải query vào nhiều bảng khác nhau

• Quá phức tạp khi thêm mới, nâng cấp tính năng

6

Giải pháp

Dùng cache để giảm

latency:

• Kết quả trả về từ

DB sẽ được lưu vào

cache

• Lần tiếp theo sẽ

truy cập vào cacheFigure 4: Numbers Everyone should

know,Jeff Dean, Google

7

Giải pháp

Để giảm độ phức tạp và dễ

dàng nâng cấp

• Tách thành những nhóm

nghiệp vụ nhỏ (service)

• Mỗi nhóm nghiệp vụ là 1

hệ thống độc lâp có

interface vào ra

• Các nhóm nghiệp vụ

tương tác nhau qua

interface này Figure 5: divide and conquer

8

Giải pháp

Figure 6: SNS components 9

FriendList

Thách thức

• Mỗi user có danh sách n bạn (fb=unlimited,zme=500,5K)

• Mỗi user có danh sách những người follow mình

• Thách thức

1. Kiểm tra xem 1 user nào đó có phải là bạn hay không?

2. Kiểm tra 1 user nào đó có đang follow ai không ?

3. Hôm nay là sinh nhật ai trong danh sách bạn mình ?

10

Giải pháp

1. Kiểm tra xem 1 user nào đó có phải là bạn hay không?

• Mỗi user có danh sách bạn là 1 tập hợp

• Thao tác tìm 1 user có phải là bạn không tương đương

với việc kiểm tra 1 phần tử có thuộc tập hợp đó không

• Redis cmd: SADD userId friendId, SISMEMBER userId

friendId

• Tìm bạn chung SINTER userIdA, userIdB, userIdC

11

Giải pháp

2. Kiểm tra 1 user nào đó có đang follow ai không ?

• Mỗi user có danh sách bạn là 1 bitmap (chuỗi bit 2 mũ

32 phần tử)

• Thao tác tìm 1 user có phải là bạn không tương đương

với việc kiểm tra bit tại vị trí thứ userId có bật lên không

• Redis cmd: SETBIT userId friendId 1, GETBIT userId

friendId

• Có vấn đề gì không??? BitMagic

12

Giải pháp

Figure 7: Follower list

13

Giải pháp

3. Hôm nay là sinh nhật ai trong danh sách bạn mình ?

• Mỗi ngày thứ n trong năm là 1 bitmap với vị trí thứ i

trong bitmap là userId thứ i có ngày sinh là ngày thứ n

trong năm

• Thao tác tìm trong danh sách bạn bè có ngày sinh là

ngày thứ n trong năm bằng cách lấy danh sách bạn dạng

bitmap and với bitmap ngày thứ n ở trên và lấy ra tập

các vị trí bằng 1

14

Giải pháp

Figure 8: Sinh nhật bạn bè

15

Feed

Thách thức

• Mỗi user có danh sách n bạn (fb=unlimited,zme=500,5K)

• Khi user thực hiện 1 hành động thì bạn bè của người đó

sẽ thấy hoạt động đó

• Thách thức

1. Kiến trúc như thế nào để đảm bảo latency?

2. Lưu trữ như thế nào để tiết kiệm storage mà vẫn đảm

bảo tốc độ truy cập?

16

Giải pháp

• Feed sẽ được lưu

trữ thành feedItem

và feedIdList

• Mỗi user có 1 danh

sách lưu trữ các

feedId tương ứng

với các action

(photo,blog...)

• Có 2 phương pháp

PUSH và PULL Figure 9: Chiến lược hiện thực hệ

thống news feed

17

Giải pháp

Figure 10: http://www.slideshare.net/mongodb/socialite-the-

open-source-status-feed18

Giải pháp

Figure 11: http://www.slideshare.net/mongodb/socialite-the-

open-source-status-feed19

Bonus

http://swagger.io/swagger-editor/

Figure 12: http://www.slideshare.net/pvullioud/swagger-

45508232?smtNoRedir=120

Hỏi đáp

21

The end

22


Recommended