SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Design a scalable social network
Problems and solutions
Châu Nguyễn Nhật Thanh
December 8, 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 cache
Figure 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-feed
18
Giải pháp
Figure 11: http://www.slideshare.net/mongodb/socialite-the-
open-source-status-feed
19
Bonus
http://swagger.io/swagger-editor/
Figure 12: http://www.slideshare.net/pvullioud/swagger-
45508232?smtNoRedir=1
20
Hỏi đáp
21
The end
22

Contenu connexe

Similaire à Design a scalable social network: Problems and solutions

Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...GMO-Z.com Vietnam Lab Center
 
Giải pháp Social Listening
Giải pháp Social ListeningGiải pháp Social Listening
Giải pháp Social ListeningMil Nguyen
 
Giáo án tin học 6
Giáo án tin học 6Giáo án tin học 6
Giáo án tin học 6Vien Luc Van
 
Asp tiengviet
Asp tiengvietAsp tiengviet
Asp tiengvietquanvn
 
Chude08_Mindmap_HangLe
Chude08_Mindmap_HangLeChude08_Mindmap_HangLe
Chude08_Mindmap_HangLeHằng Lê
 
BTL-CSDL2-streaming.pdf
BTL-CSDL2-streaming.pdfBTL-CSDL2-streaming.pdf
BTL-CSDL2-streaming.pdfLanAnh5100
 
Chude08 nhom29-mindjet mindmanager
Chude08 nhom29-mindjet mindmanagerChude08 nhom29-mindjet mindmanager
Chude08 nhom29-mindjet mindmanagerThiên Trúc Trần
 
UIUX06-07 Phan tich nhiem vu hehehehehe.pdf
UIUX06-07 Phan tich nhiem vu hehehehehe.pdfUIUX06-07 Phan tich nhiem vu hehehehehe.pdf
UIUX06-07 Phan tich nhiem vu hehehehehe.pdflieudienfcthon3
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quanVũ Nam
 
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Kiến Trúc KISATO
 
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủ
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủGiới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủ
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủBùi Việt Hà
 
Lập trình tinh giản
Lập trình tinh giảnLập trình tinh giản
Lập trình tinh giảnDieu Le Hoang
 

Similaire à Design a scalable social network: Problems and solutions (15)

Tin học 6
Tin học 6Tin học 6
Tin học 6
 
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
 
Giải pháp Social Listening
Giải pháp Social ListeningGiải pháp Social Listening
Giải pháp Social Listening
 
Giáo án tin học 6
Giáo án tin học 6Giáo án tin học 6
Giáo án tin học 6
 
Asp tiengviet
Asp tiengvietAsp tiengviet
Asp tiengviet
 
Asp tiengviet
Asp tiengvietAsp tiengviet
Asp tiengviet
 
Chude08_Mindmap_HangLe
Chude08_Mindmap_HangLeChude08_Mindmap_HangLe
Chude08_Mindmap_HangLe
 
BTL-CSDL2-streaming.pdf
BTL-CSDL2-streaming.pdfBTL-CSDL2-streaming.pdf
BTL-CSDL2-streaming.pdf
 
Chude08 nhom29-mindjet mindmanager
Chude08 nhom29-mindjet mindmanagerChude08 nhom29-mindjet mindmanager
Chude08 nhom29-mindjet mindmanager
 
UIUX06-07 Phan tich nhiem vu hehehehehe.pdf
UIUX06-07 Phan tich nhiem vu hehehehehe.pdfUIUX06-07 Phan tich nhiem vu hehehehehe.pdf
UIUX06-07 Phan tich nhiem vu hehehehehe.pdf
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quan
 
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
 
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủ
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủGiới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủ
Giới thiệu giải pháp Ngân hàng câu hỏi thông minh iQB 8.0. Bản chi tiết đầy đủ
 
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTITKHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
 
Lập trình tinh giản
Lập trình tinh giảnLập trình tinh giản
Lập trình tinh giản
 

Plus de Chau Thanh

ZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseChau Thanh
 
ZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseChau Thanh
 
Cache hcm-topdev
Cache hcm-topdevCache hcm-topdev
Cache hcm-topdevChau Thanh
 
Design a scalable site: Problem and solutions
Design a scalable site: Problem and solutionsDesign a scalable site: Problem and solutions
Design a scalable site: Problem and solutionsChau Thanh
 
Design a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsDesign a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsChau Thanh
 
IoT and developer chances
IoT and developer chancesIoT and developer chances
IoT and developer chancesChau Thanh
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectChau Thanh
 
Zingme practice for building scalable website with PHP
Zingme practice for building scalable website with PHPZingme practice for building scalable website with PHP
Zingme practice for building scalable website with PHPChau Thanh
 

Plus de Chau Thanh (8)

ZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premise
 
ZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premiseZaloPay Merchant Platform on K8S on-premise
ZaloPay Merchant Platform on K8S on-premise
 
Cache hcm-topdev
Cache hcm-topdevCache hcm-topdev
Cache hcm-topdev
 
Design a scalable site: Problem and solutions
Design a scalable site: Problem and solutionsDesign a scalable site: Problem and solutions
Design a scalable site: Problem and solutions
 
Design a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsDesign a scalable social network: Problems and Solutions
Design a scalable social network: Problems and Solutions
 
IoT and developer chances
IoT and developer chancesIoT and developer chances
IoT and developer chances
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat Architect
 
Zingme practice for building scalable website with PHP
Zingme practice for building scalable website with PHPZingme practice for building scalable website with PHP
Zingme practice for building scalable website with PHP
 

Design a scalable social network: Problems and solutions

  • 1. Design a scalable social network Problems and solutions Châu Nguyễn Nhật Thanh December 8, 2016 Head of Game Backend and Cloud - VNG Corp.
  • 2. 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
  • 4. 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
  • 5. Các module chính của MXH
  • 6. Trang chủ Figure 1: Trang chủ facebook 3
  • 7. Danh sách bạn bè Figure 2: Facebook friend list 4
  • 10. 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
  • 11. 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 cache Figure 4: Numbers Everyone should know,Jeff Dean, Google 7
  • 12. 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
  • 13. Giải pháp Figure 6: SNS components 9
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Giải pháp Figure 7: Follower list 13
  • 19. 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
  • 20. Giải pháp Figure 8: Sinh nhật bạn bè 15
  • 21. Feed
  • 22. 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
  • 23. 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
  • 24. Giải pháp Figure 10: http://www.slideshare.net/mongodb/socialite-the- open-source-status-feed 18
  • 25. Giải pháp Figure 11: http://www.slideshare.net/mongodb/socialite-the- open-source-status-feed 19
  • 26. Bonus