Những kiến thức thự sự hữu ích và tận tâm! Cảm ơn Đức, chúc bạn thật nhiều sức khỏe, thành công và có thể lan tỏa đến cộng đồng lập trình viên nhiều hơn nhé!
Theo mình nghĩ thì cái nào cũng có mặt lợi mặt hại, mysql Cluster nhiều ưu điểm thì cũng có các nhược điểm như:
Triển khai, quản trị khó
Tốn nhiều tài nguyên hơn vì chạy nhiều service hơn
Độ trễ
...
Một số công ty mình thấy họ không dùng MySQL Cluster mà thay vào đó là dùng các mô hình MySQL khác như master-master và tăng tốc bằng Cache như memcached hoặc redis, có thể cách này mang lại hiệu năng tốt hơn Cluster. Mình đoán thế chứ cũng chưa thử ))))
@minhtien020900 mỗi phút nó sẽ check xem có task nào cần chạy ko chứ ko phải là mỗi phút nó đều sẽ thực hiện chạy các command trong Scheduling.
còn về tối ưu thì không có cách khác, ví dụ điển hình là một app báo thức trên điện thoại đi, bản chất là nó cũng sẽ check mỗi phút 1 lần xem có cái báo thức nào bạn setup đến giờ ko, nếu đến giừo thì đt bạn sẽ kêu. việc check này là bắt buộc. còn việc check thì cũng ko mất quá nhiều thời gian cũng như tài nguyên vì đơn giản nó chỉ check xem đến giờ để chạy task hay ko. nên bạn ko cần suy nghĩ quá nhiều.
Cảm ơn bạn đã chia sẻ, về cơ bản mình đã hiểu những gì bạn trình bày. Nhưng mình có thêm một thắc mắc đó là chức năng của mình ở trên mỗi ngày sẽ chạy một lần thì nếu đặt lịch trong crontab mỗi phút nó sẽ chạy để thực hiện các command trong Scheduling thì có phải không được tối ưu đúng không ạ?
@HuyDQ do em không dùng seed run mà dùng query add tay vào database trên heroku => chỗ này nó chỉ hiểu theo kiểu temp thôi,, phải run bằng seed thì nó mới có data ( lần đầu gặp trường hợp này luôn )
2 yếu tố trên muốn nói về vấn đề async programming với multp-thread. Ví dụ thực tế khi coding với io bound task là 1 là network, bandwidth, disk i/o. Download nhiều file với nhiều thread chưa biết nhanh hơn được bao nhiêu mà có khi còn chậm hơn. Nó chỉ giúp ích vì thực hiện async task tránh block mainthread.
Vd t2, mặc dù là cpu bound nhưng vì task quá đơn giản. Thực thi rất nhanh so với việc fetch data từ memory nên context switch với multithread còn tốn hơn cả time xử lý nên lại chậm hơn singlethread.
Trong thực tế các task đều phức tạp nên khi lập trình multi-thread sẽ tận dụng được sức mạnh của multi-processor.
Với các bài-toán-đơn-giản??? thì single-thread đôi khi lại là giải pháp tốt hơn.
Chỗ này bạn nói chưa rõ nghĩa, còn thiếu. Việc sử dụng single-thread hay multi-thread còn phụ thuộc vào task vụ cần xử lý là IO-Bound task hay CPU-Bound task.
Nếu task vụ là IO-Bound task (vd như download N images từ image_urls) thì sử dụng multi-thread trên ngay cả single processor vẫn giảm khá khá được thời gian thực thi, vì nó không phải là task vụ cpu intensive và có trễ network
Trong ví dụ thực hiện tăng biến count ở trên là CPU Bound task, nó tận dụng khả năng tính toán của CPU chủ yếu, nên máy có nhiều processors sự dụng multi-thread sẽ hiệu quả
@kietheros yep, mỗi người thì có một yêu cầu + cách dùng riêng. Mình đang đồng bộ bằng Dropbox thấy rất ổn, tự mình quản lý files đến khi migrate sang tools khác cũng dễ dàng hơn
THẢO LUẬN
Những kiến thức thự sự hữu ích và tận tâm! Cảm ơn Đức, chúc bạn thật nhiều sức khỏe, thành công và có thể lan tỏa đến cộng đồng lập trình viên nhiều hơn nhé!
@MrHieuChemist bài quản lý dữ liệu số 2 này chính là làm việc thu thập dữ liệu từ google form này Cần lấy được name của các ô dữ liệu mà học sinh truyền vào, chỉnh dữ liệu in về file có sẵn, sau đó phải sửa script trong bài cho tìm đúng ô cần ghi vào nhé https://viblo.asia/p/quan-ly-web-voi-google-sheet-thu-thap-thong-tin-tu-form-tren-website-ve-google-sheet-bai-2-Qpmlewx9Krd giờ bạn cần thêm cách xử lý script trên google sheet cho nó điền đúng ô bạn cần là đc
hay quá anh
Cám ơn bạn đã đọc.
Theo mình nghĩ thì cái nào cũng có mặt lợi mặt hại, mysql Cluster nhiều ưu điểm thì cũng có các nhược điểm như:
Một số công ty mình thấy họ không dùng MySQL Cluster mà thay vào đó là dùng các mô hình MySQL khác như master-master và tăng tốc bằng Cache như memcached hoặc redis, có thể cách này mang lại hiệu năng tốt hơn Cluster. Mình đoán thế chứ cũng chưa thử
))))
Sếp ơi, anh cho e chút tài liệu về vị trí lưu token trên app được không
Cảm ơn Đức vì bài viết này nhé!
hay 👍
giải thích chưa được kĩ càng và chính xác lắm.
@minhtien020900 mỗi phút nó sẽ check xem có task nào cần chạy ko chứ ko phải là mỗi phút nó đều sẽ thực hiện chạy các command trong Scheduling.
còn về tối ưu thì không có cách khác, ví dụ điển hình là một app báo thức trên điện thoại đi, bản chất là nó cũng sẽ check mỗi phút 1 lần xem có cái báo thức nào bạn setup đến giờ ko, nếu đến giừo thì đt bạn sẽ kêu. việc check này là bắt buộc. còn việc check thì cũng ko mất quá nhiều thời gian cũng như tài nguyên vì đơn giản nó chỉ check xem đến giờ để chạy task hay ko. nên bạn ko cần suy nghĩ quá nhiều.
đúng thứ em cần luôn ạ. Cảm ơn anh Tiến !! -from Cyber Security Course with love-
cảm ơn bạn!
Cảm ơn bạn đã chia sẻ, về cơ bản mình đã hiểu những gì bạn trình bày. Nhưng mình có thêm một thắc mắc đó là chức năng của mình ở trên mỗi ngày sẽ chạy một lần thì nếu đặt lịch trong crontab mỗi phút nó sẽ chạy để thực hiện các command trong Scheduling thì có phải không được tối ưu đúng không ạ?
@HuyDQ do em không dùng seed run mà dùng query add tay vào database trên heroku => chỗ này nó chỉ hiểu theo kiểu temp thôi,, phải run bằng seed thì nó mới có data ( lần đầu gặp trường hợp này luôn )
Xịn quá sư phụ Tuấn
idollllll
Hi. Tks bạn đã góp ý.
2 yếu tố trên muốn nói về vấn đề async programming với multp-thread. Ví dụ thực tế khi coding với io bound task là 1 là network, bandwidth, disk i/o. Download nhiều file với nhiều thread chưa biết nhanh hơn được bao nhiêu mà có khi còn chậm hơn. Nó chỉ giúp ích vì thực hiện async task tránh block mainthread.
Vd t2, mặc dù là cpu bound nhưng vì task quá đơn giản. Thực thi rất nhanh so với việc fetch data từ memory nên context switch với multithread còn tốn hơn cả time xử lý nên lại chậm hơn singlethread.
rất hay. Thank tác giả mình thấy mysql-cluster có rất nhiều ưu điểm, lại là hàng chính chủ...không hiểu sao vẫn không được sử dụng rộng rãi !!
Thanks em
@kietheros yep, mỗi người thì có một yêu cầu + cách dùng riêng. Mình đang đồng bộ bằng Dropbox thấy rất ổn, tự mình quản lý files đến khi migrate sang tools khác cũng dễ dàng hơn