Trần Bá NhiệmWebsite: sites.google.com/site/tranbanhiemEmail: tranbanhiem@gmail.comNội dung• Giới thiệu Trang 2 Giới thiệu• Cung cấp phần mềm cho người dùng thực hiện công việc của họ đ
6/29/2011 CHƯƠNG 10 LẬP TRÌNH VỚI ĐẶC TÍNH SCALABILITY ThS Trần Bá Nhiệm Website: sites.google.com/site/tranbanhiem Email: tranbanhiem@gmail.com Nội dung • Giới thiệu • Google search engine • Replication & redundancy • Các ứng dụng Scalable network • Future proofing • Thread pooling • Hiện thực Thread pool • Tránh deadlocks • Load balancing 29/06/2011 Chương 10: Lập trình với Scalability 6/29/2011 Giới thiệu • Cung cấp phần mềm cho người dùng thực công việc họ gọi usability, lượng người dùng đến 10000 scalability • Scalability bao gồm nhiều đặc tính cơng nghệ phần mềm: ổn định, tin cậy hiệu việc dùng tài nguyên máy tính 29/06/2011 Chương 10: Lập trình với Scalability Giới thiệu • Mục tiêu hệ thống scalable phải luôn sẵn sàng để sử dụng thời điểm, giữ nguyên mức độ đáp ứng cao tình thay đổi lượng người dùng • Scalability góc độ kiến trúc phần mềm có vài mở rộng sửa đổi 29/06/2011 Chương 10: Lập trình với Scalability 6/29/2011 Giới thiệu • Khi hệ thống phần mềm cần tăng mức độ phức tạp, khơng cần phải “đại tu” lại với tính bổ sung • Xem xét vấn đề sau: – Thiết kế kiến trúc scalable – Làm bổ sung đặc tính scalability vào ứng dụng như: load balancing, quản lý thread hiệu 29/06/2011 Chương 10: Lập trình với Scalability Google search engine • Google.com search engine lớn Internet • Cung cấp 200 triệu u cầu ngày • Có 15000 server phân tán tồn giới • Có thể xem dịch vụ Internet có đặc trưng scalable 29/06/2011 Chương 10: Lập trình với Scalability 6/29/2011 Google search engine • Mỗi server mà Google dùng khơng phải ln có sức mạnh lớn máy tính để bàn trung bình • Ngồi server thường xuyên trục trặc, hư hỏng phần cứng • Nhưng với hệ thống khắc phục phức tạp Google phát minh số server hư khơng có ảnh hưởng đến hiệu suất chung 29/06/2011 Chương 10: Lập trình với Scalability Google search engine • Google trọng đến tỷ số chi phí/hiệu suất • Nếu để server phục vụ cho yêu cầu từ người dùng có phải hàng tuần tìm kiếm hàng ngàn terabyte liệu có kết • Google chia làm nhóm server: Web, document, index, spell, advertisement, Googlebot 29/06/2011 Chương 10: Lập trình với Scalability 6/29/2011 Google search engine • Mỗi server thực cơng việc đặc thù • Google dùng hệ thống DNS tinh vi để chọn Web server thích hợp cho người dùng tự động điều hướng đến data center gần Đồng thời hệ thống tính đến cân tải, điều hướng đến data center khác có tắc nghẽn 29/06/2011 Chương 10: Lập trình với Scalability Google search engine • Khi có yêu cầu đến, phần cứng cân tải chọn cluster Web server quản lý yêu cầu • Nhiệm vụ Web server sửa soạn HTML cho client, hoàn toàn khơng thực tìm kiếm, việc ủy thác cho index server nằm phía sau Web server 29/06/2011 Chương 10: Lập trình với Scalability 10 6/29/2011 Google search engine • Một cluster index server gồm hàng trăm máy tính, lưu trữ phần sở liệu có hàng ngàn terabyte • Một số sở liệu có nhiều server khác để phịng tránh hư hỏng phần cứng • Bản thân index danh sách từ thuật ngữ tương liên với danh sách mục tài liệu độ đo thích hợp 29/06/2011 Chương 10: Lập trình với Scalability 11 Google search engine • Một mục tài liệu tham chiếu đến trang web tài liệu khác PDF, DOC • Thứ tự kết trả phụ thuộc kết hợp trọng số liên quan đến từ khóa thứ hạng trang (page rank) mục tài liệu • Page rank độ đo mức độ phổ biến site, số lượng link site, cấu trúc link nội bộ,… 29/06/2011 Chương 10: Lập trình với Scalability 12 6/29/2011 Google search engine • Document server chứa toàn World Wide Web đĩa cứng Thực chúng chứa tiêu đề trang, từ khóa theo ngữ cảnh index server cung cấp • Mỗi data center có cluster server riêng nó, cluster giữ web để bảo đảm khắc phục server hỏng 29/06/2011 Chương 10: Lập trình với Scalability 13 Google search engine • Khi tìm kiếm thực hiện, hệ thống ngoại vi thêm nội dung vào trang, gồm: kiểm tra tả quảng cáo • Trộn tất thứ lại theo thứ tự thành kết trả cho client • Thời gian trả kết thường < s 29/06/2011 Chương 10: Lập trình với Scalability 14 6/29/2011 Google search engine • Google bot (spider) công cụ chạy đồng thời hàng ngàn máy tính cá nhân, rà sốt web liên tục để thu thập thông tin phép truy cập, lưu nội dung vào document server cập nhật lại index với mục tài liệu, trọng số liên quan xếp hạng trang • Google kiến trúc scalability tốt 29/06/2011 Chương 10: Lập trình với Scalability 15 Replication & redundancy • Giữ hệ thống cho mục đích triển khai nhanh gọi redundancy • Giữ hệ thống hoạt động gọi replication • Khi làm việc với dịch vụ dựa Internet với mức độ sẵn sàng cao giữ hệ thống quan trọng cần thiết 29/06/2011 Chương 10: Lập trình với Scalability 16 6/29/2011 Replication & redundancy • Khi phần mềm phần cứng bị hỏng, dùng để khắc phục nhanh chóng • Sao lưu khơng cần giữ máy riêng, dùng RAID • Cung cấp chế redundancy máy tính cơng việc hệ cân tải (load balancer) 29/06/2011 Chương 10: Lập trình với Scalability 17 Replication & redundancy • Replication đóng vai trò cập nhật liên tục hệ thống • Replication tích hợp vào Microsoft SQL 29/06/2011 Chương 10: Lập trình với Scalability 18 6/29/2011 Các ứng dụng scalable network • Các ứng dụng phía server thường yêu cầu hoạt động với tối đa cơng suất • Efficiency liên quan đến thơng lượng server số lượng client mà server quản lý • Các ứng dụng scalable network hướng đến đặc tính efficiency cho thread 29/06/2011 Chương 10: Lập trình với Scalability 19 Các ứng dụng scalable network • Các ví dụ trình bày khóa học thường cho thread tạo client kết nối với server – đơn giản khơng phải ý tưởng tốt • Quản lý bên thread riêng lẻ tiêu tốn nhiều nhớ thời gian phục vụ xử lý socket 29/06/2011 Chương 10: Lập trình với Scalability 20 10