Nhờ chiên da IT của BĐH hỗ trợ dịch thuật

Nấm mỡ

Xe điện
Biển số
OF-39127
Ngày cấp bằng
25/6/09
Số km
3,554
Động cơ
483,957 Mã lực
Nơi ở
Đi cả năm không tới Rốn Rùa
Chả là nhà cháu đi loanh quanh nhặt được một đoạn văn Tây:
Scalability suggestion -- using multiple MySQL servers

Here is something to think about:

Before the actual suggestion, here is some background information:

A very high volume vBulletin site can be handled by multiple front-end webservers, and adding more will not be a problem at all. However, the MySQL database server will choke under high load.

Currently, MySQL 3.23.X supports replication via a master-slave relationship. This means that all queries can be sent to the master, then automatically propagate to the slave. If the master fails, the slave can quickly be made to take the master's place.

It is also possible to have 2 MySQL servers where server 2 is slave to server 1, and server 1 is slave to server 2. In this case, they can be load-balanced. No matter which server receives an INSERT, UPDATE, etc request, this request will propagate to the other one. Unfortunately, this scheme does not work with tables using auto_increment fields (plenty in vB). So, this scheme will not work with vBulletin.

Now, to the suggestion:

It will be a very nice feature to be able to define two MySQL servers in the vBulletin initial configuration -- one for reading, and one for writing. In that way, pretty flexible configurations can be invented. Here is an example:

A cluster of several webservers serves as the frontend. Several MySQL servers are the backend -- one of them is master, and the others are slaves. The slaves are internally load-balanced via a load-balancer (plenty solutions on the market today).

All the webservers will send write requests to the master database. For a vBulletin site, the number of writes is much lower than the number of reads. For reading, the webservers will send requests to an internal cluster, made up of several slave MySQL servers.

If the master MySQL server fails, one of the slaves can quickly take its place. At the same time, more webservers and more slave MySQL servers can be added to the configuration, depending on demand.

So, to summarize, an option for specifying two database servers -- one for reading, and one for writing, will make our lives much easier!

Personally, I will use a similar setup even if my site does not have enormous traffic -- I just like the idea of redundancy.
Nhà cháu cũng đã nhờ anh Gúc dưng dịch dọt đọc chả hiểu giề. BĐH có cụ chiên da IT nào hỗ trợ giải nghĩa nôm na hộ nhà cháu không ạ.

Nhà cháu chả có giề để cảm ơn, chỉ có tấm lòng & tị vodka dưng khoản vodka thì BĐH chắc chắn chả cần dồi :D
 
Chỉnh sửa cuối:

f40fd

Xe điện
Biển số
OF-24154
Ngày cấp bằng
14/11/08
Số km
2,026
Động cơ
512,225 Mã lực
Bác ghi danh vào FPT University làm một khóa IT vài năm sau ra trường đảm bảo bác đọc phát hiểu ngay ;))
 

Nấm mỡ

Xe điện
Biển số
OF-39127
Ngày cấp bằng
25/6/09
Số km
3,554
Động cơ
483,957 Mã lực
Nơi ở
Đi cả năm không tới Rốn Rùa
Bác ghi danh vào FPT University làm một khóa IT vài năm sau ra trường đảm bảo bác đọc phát hiểu ngay ;))
Tại nhà cháu đoán nó có liên quan gì đến tăng tốc độ diễn đàn nên hóng nhờ kinh nghiệm BĐH chứ tuổi này mà học chắc về hưu mới dùng được kiến thức :D
 

GiaoThongTài khoản đã xác minh

Em vẫn hành quân...
Biển số
OF-29
Ngày cấp bằng
22/5/06
Số km
15,421
Động cơ
824,481 Mã lực
Nơi ở
Đông dược Phú Hà
Website
www.duocphuha.com
Tại nhà cháu đoán nó có liên quan gì đến tăng tốc độ diễn đàn nên hóng nhờ kinh nghiệm BĐH chứ tuổi này mà học chắc về hưu mới dùng được kiến thức :D
Bác hiểu nội dung nói trên như thế nào, diễn nôm ra được không? Em sẽ cùng phân tích với bác.
 

potter.nguyen

Xe buýt
Biển số
OF-55138
Ngày cấp bằng
17/1/10
Số km
754
Động cơ
456,447 Mã lực
đây là đoạn quảng cáo về MySQL- một hệ quản trị cơ sở dữ liệu cụ ạ. Đại loại nó bảo là nhờ công nghệ mới nên tốc độ truy cập giữa client và server tăng lên. Cái này dành cho các cụ min mod dựng lên cái 4 rum này cho anh em mình thôi. Cụ không cần để ý đâu ạ. Mà cái này cũng chỉ quảng cáo thế thôi. MySQL là hàng miễn phí nên cũng chỉ vừa vừa thôi. Hàng chùa mà cụ
 

Nấm mỡ

Xe điện
Biển số
OF-39127
Ngày cấp bằng
25/6/09
Số km
3,554
Động cơ
483,957 Mã lực
Nơi ở
Đi cả năm không tới Rốn Rùa
Bác hiểu nội dung nói trên như thế nào, diễn nôm ra được không? Em sẽ cùng phân tích với bác.
Hân hạnh được Chã tiếp kiến >:D<

Nhà cháu hiểu dư lày:

  1. Nếu chỉ là MySQL server thì có thể triển khai chia tải theo cơ chế Master/Slave chéo nhau - các máy chủ DB phục vụ Active/Active cho các nhu cầu truy vấn CSDL. Với hệ thống vBulletin, do có nhiều bảng có trường dữ liệu dạng tự oánh số tăng (auto_incremental) nên không triển khai được MySQL được cách này.
  2. Hệ thống vBulletin (theo suy diễn của nhà cháu, không chắc vì không biết) có các cấu phần cơ bản:
    1. Web server: tiếp nhận yêu cầu từ trình duyệt người dùng và gửi nội dung cần biểu thị trả cho trình duyệt.
    2. App server: xử lý yêu cầu từ Web server bằng một số thủ tục, trong đó bao gồm các thủ tục giao tiếp với DB server để truy vấn dữ liệu.
    3. DB server: MySQL server - lưu trữ dữ liệu và đáp ứng các yêu cầu truy vấn nội dung dữ liệu từ App server.
  3. Với vBulletin, giả định của nhà cháu là thành phần Web & App liên kết chặt chẽ với nhau (không tách rời nhau) - hoặc không cần quan tâm. Khi đó, hệ thống vBulletin, với lượng người dùng lớn, sẽ bị nghẽn cổ chai chủ yếu ở các điểm tiếp nhận yêu cầu người dùng và truy vấn dữ liệu từ DB (1 & 3 trong hình dưới đây).

  4. Cách xử lý khuyến nghị của bài viết là (theo hình trên):
    1. Với phần giao tiếp (1): sử dụng các cơ chế multi-head thông thường với Web server (App kèm theo) như với Server Load-balancer, DNS Round-Robin, Reversed-Proxy,... để tiếp nhận yêu cầu từ người dùng bằng nhiều đầu mối (các mũi tên xanh lá cây).
    2. Với phần CSDL (3): xuất phát từ nhận định là số lượng yêu cầu GHI lên DB (thay đổi nội dung CSDL, như khi cập nhật gì đó hoặc khi các cụ mợ post bài) ít hơn yêu cầu ĐỌC từ DB rất nhiều.
      • Cấu hình nhiều DB servers, trong đó 01 Master & một vài Slave
      • Cấu hình replication từ Master sang các Slaves (hoặc chuyển tiếp tuần tự theo cơ chế Chains).
      • Cấu hình vBulletin để chỉ gửi yêu cầu GHI tới Master (các mũi tên đỏ), các yêu cầu truy vấn khác đều gửi tới (các) Slaves (các mũi tên vàng cam).
Nhà cháu hiểu nôm na dư thía, chả biết giề về vBulletin hay MySQL, cũng chả biết hệ thống OF hiện dư lào, chỉ thấy chậm nên nhặt được cứ nộp phứa cho nhà chức trách tham khảo :))
 

jan13th

Xe hơi
Biển số
OF-79958
Ngày cấp bằng
12/12/10
Số km
138
Động cơ
417,520 Mã lực
Ở vBulletin.com có một box dành để trợ giúp về cấu hình máy chủ nói chung để tối ưu cho vBulletin: http://www.vbulletin.com/forum/forumdisplay.php/14-Server-Configuration (thành viên đăng nhập mới xem được).

Em cũng dùng vbb từ hồi ver 2.*, thấy nó rất tốt. Tuy nhiên, OF mình thì thỉnh thoảng chậm thật nên dự là server hơi yếu ?
 
Chỉnh sửa cuối:

GiaoThongTài khoản đã xác minh

Em vẫn hành quân...
Biển số
OF-29
Ngày cấp bằng
22/5/06
Số km
15,421
Động cơ
824,481 Mã lực
Nơi ở
Đông dược Phú Hà
Website
www.duocphuha.com
Cụ Nấm Mỡ nắm quá chắc và giải thích vừa rõ ràng vừa dễ hiểu. Thế mà cụ còn khiêm tốn.

Theo như bài viết ở trên, việc tăng thêm máy chủ để làm webserver thì không có vấn đề gì, giống như bố trí thêm lễ tân đứng đón khách ở cửa, hay là mấy em bán hàng KFC mời khách lựa chọn thực đơn.

Tuy nhiên tăng thêm database server cũng giống như tăng thêm đầu bếp, làm thế nào để không dẫm chân nhau và có thể hỗ trợ nhau khi cần, là việc khó hơn. Họ đưa ra cơ chế có 1 đầu bếp và nhiều phụ việc. Đầu bếp sẽ lo việc tổng thể còn phụ việc sẽ xào nấu theo chỉ đạo của đầu bếp.

Nếu chú đầu bếp nghỉ phép thì sẽ cử 1 chú phụ lên thay.

Hiểu thì đơn giản như thế, nhưng lúc cài đặt không đơn giản. OF đã từng chạy 2 server nhưng không cải thiện được hiệu năng.

Server bây giờ không yếu, RAM hình như 32G, 2 CPU Xeon, tất cả các thể loại như nguồn, ổ cứng, card mạng đều chạy song song 2 chú nên có thể hot swap bất cứ khi nào.

Em không làm trực tiếp nên chỉ nghe loáng thoáng thế thôi. Việc cụ thể đòi hỏi đội kỹ thuật chuyên sâu.
 

Nấm mỡ

Xe điện
Biển số
OF-39127
Ngày cấp bằng
25/6/09
Số km
3,554
Động cơ
483,957 Mã lực
Nơi ở
Đi cả năm không tới Rốn Rùa
Server bây giờ không yếu, RAM hình như 32G, 2 CPU Xeon, tất cả các thể loại như nguồn, ổ cứng, card mạng đều chạy song song 2 chú nên có thể hot swap bất cứ khi nào.
Một máy chủ lớn chưa chắc đã giải quyết được bài toán hiệu năng vì bottleneck hoặc các loại congestion nhiều khi do năng lực ứng dụng hoặc sự trao đổi giữa các ứng dụng chứ không nằm ở CPU, RAM. Trong khi đó, chi phí đầu tư một máy chủ lớn có khi hơn rất nhiều so với vài máy chủ nhỏ hơn, mà mức redundancy lại kém.

Nói thế thôi, Chã thì lạ gì các công cụ để thực hiện cái gọi là performance monitoring để đưa ra quyết định đầu tư. Nhà cháu chỉ dưa góp tẹo, cho vui :D
 

GiaoThongTài khoản đã xác minh

Em vẫn hành quân...
Biển số
OF-29
Ngày cấp bằng
22/5/06
Số km
15,421
Động cơ
824,481 Mã lực
Nơi ở
Đông dược Phú Hà
Website
www.duocphuha.com
Một máy chủ lớn chưa chắc đã giải quyết được bài toán hiệu năng vì bottleneck hoặc các loại congestion nhiều khi do năng lực ứng dụng hoặc sự trao đổi giữa các ứng dụng chứ không nằm ở CPU, RAM. Trong khi đó, chi phí đầu tư một máy chủ lớn có khi hơn rất nhiều so với vài máy chủ nhỏ hơn, mà mức redundancy lại kém.

Nói thế thôi, Chã thì lạ gì các công cụ để thực hiện cái gọi là performance monitoring để đưa ra quyết định đầu tư. Nhà cháu chỉ dưa góp tẹo, cho vui :D
Em cũng tán chơi thế thôi, chứ máy chủ để ở dưới gầm bàn anh XO, lúc nào mà nóng chân quá anh ấy tắt đi một lúc là OF lại tèo ngay. :))
 

Bin&Nhim

Xe tải
Biển số
OF-54833
Ngày cấp bằng
12/1/10
Số km
386
Động cơ
453,420 Mã lực
Hân hạnh được Chã tiếp kiến >:D<

Nhà cháu hiểu dư lày:

  1. Nếu chỉ là MySQL server thì có thể triển khai chia tải theo cơ chế Master/Slave chéo nhau - các máy chủ DB phục vụ Active/Active cho các nhu cầu truy vấn CSDL. Với hệ thống vBulletin, do có nhiều bảng có trường dữ liệu dạng tự oánh số tăng (auto_incremental) nên không triển khai được MySQL được cách này.
  2. Hệ thống vBulletin (theo suy diễn của nhà cháu, không chắc vì không biết) có các cấu phần cơ bản:
    1. Web server: tiếp nhận yêu cầu từ trình duyệt người dùng và gửi nội dung cần biểu thị trả cho trình duyệt.
    2. App server: xử lý yêu cầu từ Web server bằng một số thủ tục, trong đó bao gồm các thủ tục giao tiếp với DB server để truy vấn dữ liệu.
    3. DB server: MySQL server - lưu trữ dữ liệu và đáp ứng các yêu cầu truy vấn nội dung dữ liệu từ App server.
  3. Với vBulletin, giả định của nhà cháu là thành phần Web & App liên kết chặt chẽ với nhau (không tách rời nhau) - hoặc không cần quan tâm. Khi đó, hệ thống vBulletin, với lượng người dùng lớn, sẽ bị nghẽn cổ chai chủ yếu ở các điểm tiếp nhận yêu cầu người dùng và truy vấn dữ liệu từ DB (1 & 3 trong hình dưới đây).

  4. Cách xử lý khuyến nghị của bài viết là (theo hình trên):
    1. Với phần giao tiếp (1): sử dụng các cơ chế multi-head thông thường với Web server (App kèm theo) như với Server Load-balancer, DNS Round-Robin, Reversed-Proxy,... để tiếp nhận yêu cầu từ người dùng bằng nhiều đầu mối (các mũi tên xanh lá cây).
    2. Với phần CSDL (3): xuất phát từ nhận định là số lượng yêu cầu GHI lên DB (thay đổi nội dung CSDL, như khi cập nhật gì đó hoặc khi các cụ mợ post bài) ít hơn yêu cầu ĐỌC từ DB rất nhiều.
      • Cấu hình nhiều DB servers, trong đó 01 Master & một vài Slave
      • Cấu hình replication từ Master sang các Slaves (hoặc chuyển tiếp tuần tự theo cơ chế Chains).
      • Cấu hình vBulletin để chỉ gửi yêu cầu GHI tới Master (các mũi tên đỏ), các yêu cầu truy vấn khác đều gửi tới (các) Slaves (các mũi tên vàng cam).
Nhà cháu hiểu nôm na dư thía, chả biết giề về vBulletin hay MySQL, cũng chả biết hệ thống OF hiện dư lào, chỉ thấy chậm nên nhặt được cứ nộp phứa cho nhà chức trách tham khảo :))
Bác giỏi thế nhà iêm thì chịu ,tiếng anh chả biết gì cả .Tiếc là hết vodka rồi không nhà cháu mời cụ một ly.8->
 

ichbinminh

Xe buýt
Biển số
OF-32493
Ngày cấp bằng
27/3/09
Số km
516
Động cơ
483,810 Mã lực
Nơi ở
bẩn
Em xin phép múa rìu qua mắt thợ tí tẹo!

Về phần diễn giải của cụ Nấm, em đưa ra 1 hướng hơi khác: Đó là không phải có 1 server master & vài slave servers mà theo kiến trúc hiện tại, thì tất cả các server đều là slave & tất cả đều là master (clustered servers). <->
...where server 2 is slave to server 1, and server 1 is slave to server 2

Lý do
: Để tránh việc master die -> cả hệ thống die. Clustered servers cho phép 1 trong các server die thì ko ảnh hưởng đến cả hệ thống, ngoài ra cho phép xây dựng 1 server trung gian để load-balancing (nôm na là phân tải) giữa các server -> reduce overloading & appropriate bandwidth.
<->
...A cluster of several webservers serves as the frontend. Several MySQL servers are the backend -- one of them is master, and the others are slaves. The slaves are internally load-balanced via a load-balancer (plenty solutions on the market today)...
-> Tại sao cần 1 server trung gian? - Vì cần phải syncronize giữa các servers, đảm bảo các server là clone của nhau & đảm bảo sự an toàn cho hệ thống.

Nói nôm na, là thay vì các cụ dồn tiền xây 1 bể nước to thì các cụ xây nhiều bể nước nhỏ & có 1 hệ thống điều áp nằm trung gian, đảm bảo lượng nước trong các bể nhỏ là giống hệt nhau. Hệ thống điều áp này cũng thực hiện luôn công đoạn điều phối nước ra, để đảm bảo ko xảy ra tình trạng 100 cái vòi nước ra đều lấy nước từ 1 đường ống fi 10cm của 1 bể :D
 
Chỉnh sửa cuối:

Dũng Khọm

Xe điện
Tưởng nhớ
Người OF
Biển số
OF-6
Ngày cấp bằng
20/5/06
Số km
2,880
Động cơ
611,692 Mã lực
Tuổi
48
Nơi ở
127 lò đúc
ở chỗ e hay đến có cái dây điện loằng ngoằng , thi thoảng e ngứa chân có đá cái thì thấy OF chết , chẳng hiểu có liên quan j đến nhau 0 nên bây h lâu lắm e 0 dám đá nữa :))

về mấy cái hình loằng ngoằng của các cụ thì e chịu , vừa cật vấn mấy chú đệ tử I tờ thì các chú ấy trả lời là cái đấy vẽ ra cho đẹp chứ muốn làm thì e chịu =)) . Các chú ấy bẩu là cái khung nhà nó yếu thì có xây cả đống bể nước rồi thiết bị này nọ gió to thổi nó vẫn rung thôi . Các chú ấy còn xui đập *** cái xác nhà đi xây cái khung mới , thế các cụ bẩu có cú không cơ chứ :P
 

Nấm mỡ

Xe điện
Biển số
OF-39127
Ngày cấp bằng
25/6/09
Số km
3,554
Động cơ
483,957 Mã lực
Nơi ở
Đi cả năm không tới Rốn Rùa
Về phần diễn giải của cụ Nấm, em đưa ra 1 hướng hơi khác: Đó là không phải có 1 server master & vài slave servers mà theo kiến trúc hiện tại, thì tất cả các server đều là slave & tất cả đều là master (clustered servers). <->
Lý do
: Để tránh việc master die -> cả hệ thống die. Clustered servers cho phép 1 trong các server die thì ko ảnh hưởng đến cả hệ thống, ngoài ra cho phép xây dựng 1 server trung gian để load-balancing (nôm na là phân tải) giữa các server -> reduce overloading & appropriate bandwidth.
Xo zì cụ dưng cái này cụ có tẹo nhầm lẫn :D Trong phần này, người viết chỉ đưa ra biện pháp khả dụng nếu chỉ xét MySQL server. Dưng họ cũng nói rõ là với vB không thể làm được cách này do ...

<-> -> Tại sao cần 1 server trung gian? - Vì cần phải syncronize giữa các servers, đảm bảo các server là clone của nhau & đảm bảo sự an toàn cho hệ thống.
Cái này cụ cũng hơi nhầm lẫn tẹo - load balancer không phải (hay đúng hơn, không nhất thiết) là một server. Chủ yếu là trên hệ thống cụ sẽ chỉ cần biết địa chỉ của 01 Master (đúng là chỉ có 1) & 01 Slave (có thể có nhiều hơn 1), và chú load balancer (có thể triển khai bằng nhiều cách) chịu trách nhiệm chia tải cân bằng cho các Slaves. Còn việc clone (ở đây là replicate) sẽ sử dụng chức năng của chính MySQL để thực hiện (trực tiếp từ Master tới mỗi Slave hoặc theo cơ chế dây chuyền) chứ không phải do ông load balancer.
 
Thông tin thớt
Đang tải

Bài viết mới

Top