High Scalability là gì?

0
2560
(Last Updated On: Th3 18, 2016)

Xin chào các bạn, hẳn các bạn đã thấy các trang web Facebook, Google hay là Youtube phục vụ hàng tỷ người trên thế giới rồi chứ? Có khi nào bạn đặt câu hỏi họ đã sử dụng máy chủ như thế nào? Kết hợp chúng ra sao để có thể làm được điều đó. Trước hết mình chưa nói đến họ đã làm thế nào. Chúng ta tìm hiểu khái niệm High Scalability trước nhé.

Cứ Google dịch cho nó mau thôi: High Scalability là “Khả năng mở rộng cao“. Ở đây ý nói là hệ thống máy chủ, hạ tầng mạng, băng thông có khả năng nâng cấp, chịu tải lớn, mở rộng khi có nhu cầu và việc mở rộng cũng bao gồm việc thêm các máy chủ vào hệ thống, mở rộng băng thông mạng nhầm nâng cao khả năng sẵn sàng, sức mạnh để phục vụ người dùng cuối.

Hiểu đơn giản hơn thì các bạn cứ tưởng tượng một quán nét có 1 máy chủ + 20 máy con. Với 20 người khách thì quán nét có thể phục vụ hết tất cả. Và người ngồi tại máy chủ cũng dễ dàng tính tiền. Tuy nhiên có khoảng 30 người khách vào quán, thì 20 máy con không thể phục vụ hết được.

Giả sử trường hợp có 50 người khách vào quán, và quán cũng mở rộng đến 50 máy con để phục vụ thì người ngồi máy chủ khi tính tiền cũng như thực hiện “nạp tiền”, “mở máy”, “đóng ứng dụng”, “gửi tin nhắn đến khách truy cập web lạ,…” thì ôi thôi đảm bảo người này sẽ stress mất.

Bây giờ quán nét thêm một máy chủ nữa, và có thêm một người coi quán. Đảm bảo người trông coi đầu tiên sẽ dễ thở hơn, giảm được áp lực công việc. Tuy nhiên điều đáng nói ở đây là: Chỉ có một đường truyền ADSL, một cái Hub phải chịu tải đến 50 máy. Ở phía cạnh người dùng, họ có thể chơi game, xem phim, youtube, nghe nhạc hay là mấy anh ra quán download phần mềm về nhà thì thử hỏi có thể phục vụ tốt đến người dùng hay không. Từ đó giải pháp đề ra họ phải nâng cấp thêm đường truyền mạng. Chưa nói là thêm quạt để mùa hè nóng bức không có tiếng chửi rủa inh ỏi…

Mở rộng không gian lưu trữ là một ví dụ

Mở rộng không gian lưu trữ với 2 ổ đĩa
Mở rộng không gian lưu trữ với 2 ổ đĩa

Xét về nhu cầu lưu trữ dữ liệu, trong máy tính của chúng ta, ngoài không gian gian để chứa hệ điều hành là điều bắt buộc, với mỗi môi trường làm việc đòi hỏi dung lượng khác nhau.

  • 1 anh nhân viên văn phòng suốt ngày đánh máy, soạn thảo văn bản và làm trình chiếu slide cho khách thì ắt hẳn chẳng cần dùng đến ổ cứng 1TB (1TB=1024GB) so với anh chuyên thiết kế đồ họa.
  • Đối với một Gamer ngoài ổ cứng cần thiết có thể lưu trữ được trò chơi của họ thì cần đến một vi xử lý mạnh mẽ + card đồ họa + đủ ram để có thể chạy mượt mà các trò chơi mà họ thích.
  • Một cô gái thích xem phim HD online trên mạng, chỉ cần một chiếc máy tính đủ cấu hình để xem phim không giật giật thì đường truyền mạnh của cô ta phải đủ băng thông truyền tải bộ phim.

Khi đó cần thiết một nhu cầu nâng cấp và mở rộng. High Scalability nôm na là như vậy.

Tuy nhiên, không phải nâng cấp hệ thống lúc nào cũng giống như việc ghép nối ổ cứng để tăng dung lượng lưu trữ. Hình ảnh này bạn biết của trò chơi nào rồi chứ:

Hình ảnh trong game GTA IV
Hình ảnh trong game GTA IV

Cấu hình mượt mà để chạy GTA IV:

CPU: Intel Core 2 Quad 2.4GHz, AMD Phenom X3 2.1GHz
CPU Speed: 2.4 GHz
RAM: 2 GB (Windows XP) 2.5 GB (Windows Vista)
OS: Windows Vista – Service Pack 1 / XP – Service Pack 3 / Windows 7
Video Card: 512MB NVIDIA 8600+ / 512MB ATI 3870+
Sound Card: Yes
Free Disk Space: 18 GB

Theo bảng trên thì tốc độ CPU cần là 2.4 Ghz, 1 Core 2 Quad (4 nhân). Trên thực tế Core 2 Quad là hai con Core 2 Duo kết hợp lại.

Nhưng bạn không thể kết hợp 2 máy tính Core 2 Duo để có sức mạnh giống 1 con Core 2 Quad được.

Đối với mở rộng hệ thống máy chủ Web:

  1. Nâng cấp cơ sở dữ liệu (Database)
  2. Nâng cấp CPU
  3. Nâng cấp tốc độ đọc, ghi dữ liệu trên server (I/O)

Về nâng cấp cơ sở dữ liệu, có thể dùng nhiều máy chủ để chứa Database.

Nâng cấp CPU (xử lý ứng dụng, các request từ client,…)

 

  1. Scaling Up (vertical scaling) : tăng số lõi CPU hoặc là dùng CPU mạnh hơn.
  2. Scaling Out (horizontal scaling) : tăng số máy chủ.

Nâng cấp tốc độ đọc ghi dữ liệu trên máy chủ (I/O):

Có thể sử dụng nhiều ổ cứng với cấu hình RAID để tăng tốc độ đọc ghi cũng như đảm bảo an toàn lưu trữ. Nhưng đó là thiết lập trên một máy chủ đơn. Việc nâng cấp khả năng lưu trữ dùng file Server như Glusterfs, CEPH sẽ bị hạn chế về tốc độ vị nó còn phụ thuộc vào hạ tầng mạng của bạn.

Trên đây là một ít thông tin và ví dụ về High Scalability. Bạn có thể xem một bài viết của mình hướng dẫn cân bằng tải với Nginx tại bài này: Cân bằng tải với Nginx.

Mình sẽ viết thêm về một số hình thức High Scalability khác ở các bài viết tiếp theo, hy vọng các bạn đón đọc.

Bình luận