thảo luận Code trên Mac với Win cái nào sướng hơn?

  • Người tạo chủ đề Người tạo chủ đề bamboo.bamboo
  • Ngày bắt đầu Ngày bắt đầu
Để mình test thử, 500 files mở cùng lúc, nhưng lúc code mình chỉ code 1 file, code gì cũng đc, rất mượt, mỗi cái add thêm //
Thì treo liền :amazed:
treo quá kỳ dị, mà bạn dùng st2 hay 3? chạy trên ssd hay hdd, mở cái console (ctrl + `) xem nó báo thế nào?
mà có nhất thiết phải mở 500 file một lúc không? có folder thì sublime tìm file trong đó khá nhanh mà?
 
> dùng docker deploy nhanh hơn.
cái này thì anh đúng.
nhưng như tôi lặp lại, dùng docker hay không nó không liên quan tới việc hẹn giờ moi dữ liệu. (bạn nào pro chỉ tôi cách viết cronjob/systemd timer *bên trong* docker tôi xem nào?) Tôi bảo rồi, cái này anh không biết thì đừng nói, ở đây ngoài anh ra có ai thắc mắc vụ đó đâu? tôi lặp lại rất nhiều lần là docker không giải quyết dc hết công việc của *dev*, với lại nhu cầu cao thì vẫn phải tự customize dockerfile, lúc đó thì phải có kiến thức về linux distro là cái target của cái dockerfile đó... anh có phải là đối tượng (dev) tôi muốn nói đến đâu mà cứ cố đấm ăn xôi làm gì?

p/s: docker nó là công cụ mới có nhiều cái hay ho hơn thì tôi công nhận, nhưng không phải là không có alternative (dù tổng hợp lại thì docker vẫn hơn), ví dụ version management thì có asdf, deploy thì có chef, puppet, ansible (mấy cái này tôi thì cũng chỉ nghe nói thế thôi chứ nhu cầu tôi có hạn chỉ viết cái bash script setup lúc deploy vps thôi), lúc chưa có docker k8s thì thiên hạ vẫn sống tốt chứ có phải trời sập đâu?
Mẹ, có mỗi cái cronjob thôi mà docker cũng ko làm ăn được, phải viết docker file rồi conjob cái docker file đó,vậy thôi chạy mẹ trên host đi chứ éo ai rãnh đi làm từng cái docker file cho từng cái cronjob. Tôi nghĩ là hắn cũng ko hiểu
 
Mẹ, có mỗi cái cronjob thôi mà docker cũng ko làm ăn được, phải viết docker file rồi conjob cái docker file đó,vậy thôi chạy mẹ trên host đi chứ éo ai rãnh đi làm từng cái docker file cho từng cái cronjob. Tôi nghĩ là hắn cũng ko hiểu
cái đoạn màu xanh là anh đoán mò, và từ kết luận của cái hành động đoán mò ấy anh luận ra cái đoạn màu đỏ...

haha...
 
cái đoạn màu xanh là anh đoán mò, và từ kết luận của cái hành động đoán mò ấy anh luận ra cái đoạn màu đỏ...

haha...
Vậy chạy cronjob trong docker sao cho tiện ? thay vì nói bâng quơ bóng gió thì nói thằng đi, vào vấn đề đi, ẽo lã như đàn bà vậy
 
ok xong rồi... giờ vầy...

trước tiên, phải nói đôi điều về docker...

thứ nhất docker nó là một cái công cụ, như mọi công cụ khác thì nó tất nhiên không phải là thứ để lôi ra dùng mọi lúc mọi nơi, có những mục đích rất phù hợp để dùng docker, có những mục đích khác thì không...

cũng như mọi công cụ khác thì muốn dùng anh cũng phải biết cách; đồng thời cũng phải thay đổi cách suy nghĩ một chút về cách làm cái việc mà mình vẫn làm, đôi khi dùng docker để làm cái việc ấy phải làm theo một cách khác, trình tự khác...

cho nên tôi mới bảo anh prescolt rằng hoặc anh ta đang dùng sai cách, hoặc anh ta đang dùng sai mục đích; và rõ ràng là anh ta cứ chê hiệu năng network của docker nó kém, tôi không bàn tới chuyện đúng sai, cái đó tôi dốt thật, nhưng nếu anh ta thấy nó kém thì đừng dùng docker cho cái mục đích ấy nữa... có ai ép ai đâu, chả hiểu anh ta cứ cố chứng minh cái điều hiển nhiên ấy làm gì, thế mà bị anh ta mắng là tranh luận kiểu trẻ trâu, buồn vãi...

thực tế tôi cũng không thấy ai dùng docker để chạy mấy cái service network cả, chưa nói tới các service network mà phải tính toán từng ly từng tí một về hiệu năng, đòi hỏi phải can thiệp sâu về ngắt ngủng các thứ (tôi chịu mấy cái này)

bởi vì, nếu các anh bớt chút thời gian vào ngay docker.com các anh sẽ thấy một cái câu sờ sờ to lù lù là:

We help developers and development teams build and ship apps.

chính vì thế cho nên là tôi không muốn tiếp tục câu chuyện với anh prescolt nữa, cái anh đang làm không phù hợp để chạy với docker thì không nên cố gắng làm gì, còn chuyện anh chê nó kém hay dở thực ra chẳng có ý nghĩa gì, docker nó tốt xấu hay dở làm gì đến anh đánh giá, cả thế giới người ta đánh giá rồi và những người thấy nó phù hợp nhu cầu cũng đã dùng cả rồi...

quay qua câu chuyện với anh Nipin, tôi thấy anh có hai vấn đề như thế này với thằng docker, đều là xuất phát từ thực tế (anh thừa nhận) là anh thiếu kinh nghiệm với docker...

1. mindset của anh về docker nó chưa đúng, anh còn coi nó là một cái VPS bị đóng gói lại thì nó không chính xác, dẫn đến nhưng nhu cầu của anh nó hơi "anti-pattern" (từ này không rõ tiếng Việt nói sao) ví dụ như anh muốn chạy cron trong container (chi tiết khúc sau)

2. anh chưa nhìn thấy được mục đích của cái docker là để đóng gói, thuận tiện cho việc mang vác, triển khai... nó không phải là thứ để anh không cần phải biết cách làm việc với OS và vẫn làm được việc, cho nên cái ý anh nói đi nói lại rằng docker thì cũng phải biết viết script này nọ kia cho vào Dockerfile nó hiển nhiên quá nhưng anh vẫn coi nó là cái gì quan trọng lắm mà lặp đi lặp lại...

dài dòng về thằng docker đủ rồi, giờ tôi nói về chi tiết một chút, lấy cái use case của anh ra nói chuyện cho dễ:

anh nói là cần cào dữ liệu của một site, site ấy nó block IP 6 tiếng nếu request quá 100, số trang cần quét là 10000 trang (con số tôi phịa ra cho dễ nói chuyện)

cách xử lý hiện tại của anh là chạy qua proxy, anh xin được ở đâu một mớ proxy mà nói chung là cũng lởm cái sống cái chết, hẹn giờ 6 tiếng chạy một lần...

làm theo cách này có 2 điểm dở:

- phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
- anh phải duy trì một con VPS resource đủ lớn để điều khiển một đống crawler chạy song song thông qua một lũ proxy, mà con VPS này làm xong việc là đứng chờ cron -> nói chung tốn tiền

tôi đề xuất làm lại theo phương án sau:

- anh build một cái image, tuỳ theo script quét của anh chạy cái gì, ví dụ python thì đơn giản nhất là anh extend cái image python official, thêm hai dòng copy code của anh vào và set ENTRYPOINT cho nó chạy thôi...
- anh làm thêm một cái project con con của terraform, cho nó connect với đủ thứ cloud provider mà anh biết, AWS và GCP gì gì ấy, mục đích là để tạo một cái network rồi launch cái image của anh tạo ra trong bước 1, gán network ấy cho cái container ấy để nó đi cào dữ liệu về thôi... request đủ 90 cái (an toàn) thì ngưng, tắt, xoá network, trả resource...

cái bước launch thì tuỳ, thích thì launch cái terraform bằng tay, mỗi lần launch 100 container đi cho nó nhanh... hoặc nếu thích hẹn giờ thì tuỳ, nhưng hẹn giờ để chạy terraform nó là bad practice, tuỳ anh cân nhắc...

nó giải quyết được vấn đề proxy của anh, cái ấy nó unreliable quá không ai tính vào yêu cầu công việc cả, requirements mà lại có dòng "xin thằng Nam 500 cái proxy" thì tôi nghe xong sợ vãi tè...

nó giải quyết được vấn đề tiền của anh, có thể tốn hơn, nhưng chắc chắn là nhanh hơn... thời gian là tiền bạc...

trước khi kết thúc để đi tắm, tôi lấy một cái ví dụ thực tế cách đây vài năm...

gitlab, thằng này chắc các anh biết, cách đây đâu 3-4 năm, nó có cung cấp một cái image để tự launch gitlab trên server riêng...

cái image này nó bê nguyên con từ cái script puppeteer để launch gitlab trên một cái VPS, tức là lần đầu launch cái image này là puppeteer nó chạy phành phạch, setup abcxyz tất cả các thứ từ đầu tới cuối y như một cái VPS... trong cái container có một đống service, từ php-fpm cho tới mysql các kiểu...

đây là điển hình của dùng sai cách thằng docker, anti-pattern khủng khiếp... sau đấy một đống image gitlab khác do người khác làm chạy ngon lành, không ai dùng cái image "chính hãng" kia cả...

rồi thì tất nhiên gitlab nó cũng khôn ra và publish image mới chuẩn hơn...

ví dụ này để anh thấy rằng thằng gitlab chắc cũng không thiếu người giỏi cỡ anh, mà nó còn có lúc chưa hiểu cách dùng docker, thì các anh ngại gì mà còn cố chấp...

các anh có dùng hay không không bổ béo gì cho tôi cả, có béo là béo các anh (nếu nó phù hợp) cho nên đừng nghĩ tôi là fan cuồng bênh vực ba cái thứ e-idol, tôi già rồi...

@prescolt tôi chạy cron backup cho voz mấy năm nay rồi và tôi khẳng định là chạy cron trong container bình thường, nó anti pattern thật nhưng trường hợp này tôi coi nó là ngoại lệ chấp nhận được... điều ấy chỉ chứng minh là làm được tốt thôi, còn làm thế nào thì anh tự học tôi không rảnh dạy anh... anh vẫn còn giữ cái kiểu tranh luận công kích cá nhân ấy thì tôi không có hứng thú nói chuyện tiếp... nên nhớ tôi chưa một lần chửi mắng xúc phạm gì anh hết...
 
còn cái vụ anh Pipin vẫn thắc mắc lại sao dev không được chọn môi trường deploy để mai tôi nói tiếp nếu anh hứng thú...

nhưng ngắn gọn nó là để đảm bảo code của anh portable, càng portable càng tốt, không những tốt khi code của anh đưa cho người khác chạy (bán phần mềm???) mà còn tốt ngay cả khi anh deploy code của chính anh...
 
ok xong rồi... giờ vầy...

trước tiên, phải nói đôi điều về docker...

thứ nhất docker nó là một cái công cụ, như mọi công cụ khác thì nó tất nhiên không phải là thứ để lôi ra dùng mọi lúc mọi nơi, có những mục đích rất phù hợp để dùng docker, có những mục đích khác thì không...

cũng như mọi công cụ khác thì muốn dùng anh cũng phải biết cách; đồng thời cũng phải thay đổi cách suy nghĩ một chút về cách làm cái việc mà mình vẫn làm, đôi khi dùng docker để làm cái việc ấy phải làm theo một cách khác, trình tự khác...

cho nên tôi mới bảo anh prescolt rằng hoặc anh ta đang dùng sai cách, hoặc anh ta đang dùng sai mục đích; và rõ ràng là anh ta cứ chê hiệu năng network của docker nó kém, tôi không bàn tới chuyện đúng sai, cái đó tôi dốt thật, nhưng nếu anh ta thấy nó kém thì đừng dùng docker cho cái mục đích ấy nữa... có ai ép ai đâu, chả hiểu anh ta cứ cố chứng minh cái điều hiển nhiên ấy làm gì, thế mà bị anh ta mắng là tranh luận kiểu trẻ trâu, buồn vãi...

thực tế tôi cũng không thấy ai dùng docker để chạy mấy cái service network cả, chưa nói tới các service network mà phải tính toán từng ly từng tí một về hiệu năng, đòi hỏi phải can thiệp sâu về ngắt ngủng các thứ (tôi chịu mấy cái này)

bởi vì, nếu các anh bớt chút thời gian vào ngay docker.com các anh sẽ thấy một cái câu sờ sờ to lù lù là:

We help developers and development teams build and ship apps.

chính vì thế cho nên là tôi không muốn tiếp tục câu chuyện với anh prescolt nữa, cái anh đang làm không phù hợp để chạy với docker thì không nên cố gắng làm gì, còn chuyện anh chê nó kém hay dở thực ra chẳng có ý nghĩa gì, docker nó tốt xấu hay dở làm gì đến anh đánh giá, cả thế giới người ta đánh giá rồi và những người thấy nó phù hợp nhu cầu cũng đã dùng cả rồi...

quay qua câu chuyện với anh Nipin, tôi thấy anh có hai vấn đề như thế này với thằng docker, đều là xuất phát từ thực tế (anh thừa nhận) là anh thiếu kinh nghiệm với docker...

1. mindset của anh về docker nó chưa đúng, anh còn coi nó là một cái VPS bị đóng gói lại thì nó không chính xác, dẫn đến nhưng nhu cầu của anh nó hơi "anti-pattern" (từ này không rõ tiếng Việt nói sao) ví dụ như anh muốn chạy cron trong container (chi tiết khúc sau)

2. anh chưa nhìn thấy được mục đích của cái docker là để đóng gói, thuận tiện cho việc mang vác, triển khai... nó không phải là thứ để anh không cần phải biết cách làm việc với OS và vẫn làm được việc, cho nên cái ý anh nói đi nói lại rằng docker thì cũng phải biết viết script này nọ kia cho vào Dockerfile nó hiển nhiên quá nhưng anh vẫn coi nó là cái gì quan trọng lắm mà lặp đi lặp lại...

dài dòng về thằng docker đủ rồi, giờ tôi nói về chi tiết một chút, lấy cái use case của anh ra nói chuyện cho dễ:

anh nói là cần cào dữ liệu của một site, site ấy nó block IP 6 tiếng nếu request quá 100, số trang cần quét là 10000 trang (con số tôi phịa ra cho dễ nói chuyện)

cách xử lý hiện tại của anh là chạy qua proxy, anh xin được ở đâu một mớ proxy mà nói chung là cũng lởm cái sống cái chết, hẹn giờ 6 tiếng chạy một lần...

làm theo cách này có 2 điểm dở:

- phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
- anh phải duy trì một con VPS resource đủ lớn để điều khiển một đống crawler chạy song song thông qua một lũ proxy, mà con VPS này làm xong việc là đứng chờ cron -> nói chung tốn tiền

tôi đề xuất làm lại theo phương án sau:

- anh build một cái image, tuỳ theo script quét của anh chạy cái gì, ví dụ python thì đơn giản nhất là anh extend cái image python official, thêm hai dòng copy code của anh vào và set ENTRYPOINT cho nó chạy thôi...
- anh làm thêm một cái project con con của terraform, cho nó connect với đủ thứ cloud provider mà anh biết, AWS và GCP gì gì ấy, mục đích là để tạo một cái network rồi launch cái image của anh tạo ra trong bước 1, gán network ấy cho cái container ấy để nó đi cào dữ liệu về thôi... request đủ 90 cái (an toàn) thì ngưng, tắt, xoá network, trả resource...

cái bước launch thì tuỳ, thích thì launch cái terraform bằng tay, mỗi lần launch 100 container đi cho nó nhanh... hoặc nếu thích hẹn giờ thì tuỳ, nhưng hẹn giờ để chạy terraform nó là bad practice, tuỳ anh cân nhắc...

nó giải quyết được vấn đề proxy của anh, cái ấy nó unreliable quá không ai tính vào yêu cầu công việc cả, requirements mà lại có dòng "xin thằng Nam 500 cái proxy" thì tôi nghe xong sợ vãi tè...

nó giải quyết được vấn đề tiền của anh, có thể tốn hơn, nhưng chắc chắn là nhanh hơn... thời gian là tiền bạc...

trước khi kết thúc để đi tắm, tôi lấy một cái ví dụ thực tế cách đây vài năm...

gitlab, thằng này chắc các anh biết, cách đây đâu 3-4 năm, nó có cung cấp một cái image để tự launch gitlab trên server riêng...

cái image này nó bê nguyên con từ cái script puppeteer để launch gitlab trên một cái VPS, tức là lần đầu launch cái image này là puppeteer nó chạy phành phạch, setup abcxyz tất cả các thứ từ đầu tới cuối y như một cái VPS... trong cái container có một đống service, từ php-fpm cho tới mysql các kiểu...

đây là điển hình của dùng sai cách thằng docker, anti-pattern khủng khiếp... sau đấy một đống image gitlab khác do người khác làm chạy ngon lành, không ai dùng cái image "chính hãng" kia cả...

rồi thì tất nhiên gitlab nó cũng khôn ra và publish image mới chuẩn hơn...

ví dụ này để anh thấy rằng thằng gitlab chắc cũng không thiếu người giỏi cỡ anh, mà nó còn có lúc chưa hiểu cách dùng docker, thì các anh ngại gì mà còn cố chấp...

các anh có dùng hay không không bổ béo gì cho tôi cả, có béo là béo các anh (nếu nó phù hợp) cho nên đừng nghĩ tôi là fan cuồng bênh vực ba cái thứ e-idol, tôi già rồi...

@prescolt tôi chạy cron backup cho voz mấy năm nay rồi và tôi khẳng định là chạy cron trong container bình thường, nó anti pattern thật nhưng trường hợp này tôi coi nó là ngoại lệ chấp nhận được... điều ấy chỉ chứng minh là làm được tốt thôi, còn làm thế nào thì anh tự học tôi không rảnh dạy anh... anh vẫn còn giữ cái kiểu tranh luận công kích cá nhân ấy thì tôi không có hứng thú nói chuyện tiếp... nên nhớ tôi chưa một lần chửi mắng xúc phạm gì anh hết...
Teraform làm gì vậy, chạy cron 100 cái task thì viết 1 cái python cho nó start 100 cái background process rồi collect kết quả từ log, làm gì phải viết ra 1 cái docker đủ thứ quy trình rồi start, stop rồi tera form. Chạy job sử dũng proxy như ông kia thì docker mà proxy có ngõm thì docker instance start lên đó cũng tịt, bộ nó chay tiếp được à, rồi vô mò docker nào móc proxy tịt à
Lại còn aws, aws gọi vào cũng chụng một source IP, hay anh định mua 100 cai elasic IP rồi cào ?
 
Teraform làm gì vậy, chạy cron 100 cái task thì viết 1 cái python cho nó start 100 cái background process rồi collect kết quả từ log, làm gì phải viết ra 1 cái docker đủ thứ quy trình rồi start, stop rồi tera form. Chạy job sử dũng proxy như ông kia thì docker mà proxy có ngõm thì docker instance start lên đó cũng tịt, bộ nó chay tiếp được à, rồi vô mò docker nào móc proxy tịt à
đọc đã, hiểu đã, rồi hẵng trả lời :)
 
đọc đã, hiểu đã, rồi hẵng trả lời :)
Đọc lại edit bên dưới, giờ chay 100 cái instance trên aws, vậy có bao nhiêu cái elasic IP gán vào VPC?
Trà lời nhanh đê tôi cho cái bill AWS nào, hay là chưa làm bao giờ nên mạnh dạn phán
 
Sửa lần cuối:
anh nói là cần cào dữ liệu của một site, site ấy nó block IP 6 tiếng nếu request quá 100, số trang cần quét là 10000 trang (con số tôi phịa ra cho dễ nói chuyện)

cách xử lý hiện tại của anh là chạy qua proxy, anh xin được ở đâu một mớ proxy mà nói chung là cũng lởm cái sống cái chết, hẹn giờ 6 tiếng chạy một lần...

làm theo cách này có 2 điểm dở:

- phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
- anh phải duy trì một con VPS resource đủ lớn để điều khiển một đống crawler chạy song song thông qua một lũ proxy, mà con VPS này làm xong việc là đứng chờ cron -> nói chung tốn tiền

tôi đề xuất làm lại theo phương án sau:

- anh build một cái image, tuỳ theo script quét của anh chạy cái gì, ví dụ python thì đơn giản nhất là anh extend cái image python official, thêm hai dòng copy code của anh vào và set ENTRYPOINT cho nó chạy thôi...
- anh làm thêm một cái project con con của terraform, cho nó connect với đủ thứ cloud provider mà anh biết, AWS và GCP gì gì ấy, mục đích là để tạo một cái network rồi launch cái image của anh tạo ra trong bước 1, gán network ấy cho cái container ấy để nó đi cào dữ liệu về thôi... request đủ 90 cái (an toàn) thì ngưng, tắt, xoá network, trả resource...

cái bước launch thì tuỳ, thích thì launch cái terraform bằng tay, mỗi lần launch 100 container đi cho nó nhanh... hoặc nếu thích hẹn giờ thì tuỳ, nhưng hẹn giờ để chạy terraform nó là bad practice, tuỳ anh cân nhắc...

nó giải quyết được vấn đề proxy của anh, cái ấy nó unreliable quá không ai tính vào yêu cầu công việc cả, requirements mà lại có dòng "xin thằng Nam 500 cái proxy" thì tôi nghe xong sợ vãi tè...

Anh launch 100 container thì anh có 100 cái proxy à? Những proxy này mất tiền hay miễn phí? Và anh tính toán kiểu gì mà cách của anh "launch 100 container (trả tiền 100 proxy) -> cào -> trả resource" rẻ hơn cách "launch 1 vps (xin proxy) -> chạy 100 background job -> cào"?

Cái yêu cầu của ông Nipin thì không cần ổn định hay reliable mà là cào dữ liệu với giá thấp nhất có thể.

> - phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
Theo tôi hiểu thì anh Nipin không cần nhanh, 1 ngày không xin được proxy thì ngày đó khỏi cào, để hôm khác.

@Nipin À mà proxy là anh đi xin hay anh cũng cào?
 
Anh launch 100 container thì anh có 100 cái proxy à? Những proxy này mất tiền hay miễn phí? Và anh tính toán kiểu gì mà cách của anh "launch 100 container (trả tiền 100 proxy) -> cào -> trả resource" rẻ hơn cách "launch 1 vps (xin proxy) -> chạy 100 background job -> cào"?

Cái yêu cầu của ông Nipin thì không cần ổn định hay reliable mà là cào dữ liệu với giá thấp nhất có thể.

> - phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
Theo tôi hiểu thì anh Nipin không cần nhanh, 1 ngày không xin được proxy thì ngày đó khỏi cào, để hôm khác.

@Nipin À mà proxy là anh đi xin hay anh cũng cào?
Ý hắn là chay 100 cái instance có 100 cái elasic IP(EC2) hay (EKS),nhưng đời éo như mơ
100 cai elasic IP ra bill ko dưới 3000USD, còn 100 cái EKS tính theo phút cho 1 đơn vị, giá cũng éo rẽ, mà cũng ko chắc là khác IP
Trong khi mua 100con vps ở vulr giá 2.5USD 1 tháng, có API de bật tắt từ xa, chay theo h còn rẽ bèo. Chắc anh ta nghĩ là tiền là lá mít :D
Con nếu mua proxy sock thì 1 con vps môi cái job cho qua 1 cái proxy thì còn rẽ hơn.
Tôi làm ở VNG, google cloud, aws ko thiếu, nên đừng có lèo về aws, tới tháng ăn bill ngập mặt, lúc đó ko biết có còn tiền ăn không.
 
Trong khi mua 100con vps ở vulr giá 2.5USD 1 tháng, có API de bật tắt từ xa, chay theo h còn rẽ bèo. Chắc anh ta nghĩ là tiền là lá mít :D

nếu mà chạy dạng job kiểu này (không cần 24/24) thì dùng spot instance trên aws còn rẻ hơn giá 2.5 usd 1 tháng
 
Như tít ạ.
Các anh có kinh nghiệm cho e xin ý kiến. Trường hợp code iOS thì ko tính nhé! :))
code thì tất nhiên là mấy thằng nhân unix code sướng hơn windows rồi. mình thích code trên linux hoặc mac vì cái terminal nó ngon hơn cmd của windows. Nhưng do còn có nhu cầu giải trí nữa nên vẫn chọn windows :big_smile:
 
nếu mà chạy dạng job kiểu này (không cần 24/24) thì dùng spot instance trên aws còn rẻ hơn giá 2.5 usd 1 tháng
chưa chạy cái này, spot instance này cần 100 cái IP khác nhau có cần VPC elastic IP bổ sung ko hay launch là có IP khác nhau
 
chưa chạy cái này, spot instance này cần 100 cái IP khác nhau có cần VPC elasic IP bổ sung ko hay launch là có IP khác nhau

mình không rõ, đang bàn về giá vps dành cho workload dạng job thôi, ai có nhu cầu dạng này (chạy theo thời gian rồi trả lại) thì lên thuê spot instance chạy cho nó rẻ, chi phí có khi còn 1/5 thông thường thôi
 
ok xong rồi... giờ vầy...

trước tiên, phải nói đôi điều về docker...

thứ nhất docker nó là một cái công cụ, như mọi công cụ khác thì nó tất nhiên không phải là thứ để lôi ra dùng mọi lúc mọi nơi, có những mục đích rất phù hợp để dùng docker, có những mục đích khác thì không...

cũng như mọi công cụ khác thì muốn dùng anh cũng phải biết cách; đồng thời cũng phải thay đổi cách suy nghĩ một chút về cách làm cái việc mà mình vẫn làm, đôi khi dùng docker để làm cái việc ấy phải làm theo một cách khác, trình tự khác...

cho nên tôi mới bảo anh prescolt rằng hoặc anh ta đang dùng sai cách, hoặc anh ta đang dùng sai mục đích; và rõ ràng là anh ta cứ chê hiệu năng network của docker nó kém, tôi không bàn tới chuyện đúng sai, cái đó tôi dốt thật, nhưng nếu anh ta thấy nó kém thì đừng dùng docker cho cái mục đích ấy nữa... có ai ép ai đâu, chả hiểu anh ta cứ cố chứng minh cái điều hiển nhiên ấy làm gì, thế mà bị anh ta mắng là tranh luận kiểu trẻ trâu, buồn vãi...

thực tế tôi cũng không thấy ai dùng docker để chạy mấy cái service network cả, chưa nói tới các service network mà phải tính toán từng ly từng tí một về hiệu năng, đòi hỏi phải can thiệp sâu về ngắt ngủng các thứ (tôi chịu mấy cái này)

bởi vì, nếu các anh bớt chút thời gian vào ngay docker.com các anh sẽ thấy một cái câu sờ sờ to lù lù là:

We help developers and development teams build and ship apps.

chính vì thế cho nên là tôi không muốn tiếp tục câu chuyện với anh prescolt nữa, cái anh đang làm không phù hợp để chạy với docker thì không nên cố gắng làm gì, còn chuyện anh chê nó kém hay dở thực ra chẳng có ý nghĩa gì, docker nó tốt xấu hay dở làm gì đến anh đánh giá, cả thế giới người ta đánh giá rồi và những người thấy nó phù hợp nhu cầu cũng đã dùng cả rồi...

quay qua câu chuyện với anh Nipin, tôi thấy anh có hai vấn đề như thế này với thằng docker, đều là xuất phát từ thực tế (anh thừa nhận) là anh thiếu kinh nghiệm với docker...

1. mindset của anh về docker nó chưa đúng, anh còn coi nó là một cái VPS bị đóng gói lại thì nó không chính xác, dẫn đến nhưng nhu cầu của anh nó hơi "anti-pattern" (từ này không rõ tiếng Việt nói sao) ví dụ như anh muốn chạy cron trong container (chi tiết khúc sau)

2. anh chưa nhìn thấy được mục đích của cái docker là để đóng gói, thuận tiện cho việc mang vác, triển khai... nó không phải là thứ để anh không cần phải biết cách làm việc với OS và vẫn làm được việc, cho nên cái ý anh nói đi nói lại rằng docker thì cũng phải biết viết script này nọ kia cho vào Dockerfile nó hiển nhiên quá nhưng anh vẫn coi nó là cái gì quan trọng lắm mà lặp đi lặp lại...

dài dòng về thằng docker đủ rồi, giờ tôi nói về chi tiết một chút, lấy cái use case của anh ra nói chuyện cho dễ:

anh nói là cần cào dữ liệu của một site, site ấy nó block IP 6 tiếng nếu request quá 100, số trang cần quét là 10000 trang (con số tôi phịa ra cho dễ nói chuyện)

cách xử lý hiện tại của anh là chạy qua proxy, anh xin được ở đâu một mớ proxy mà nói chung là cũng lởm cái sống cái chết, hẹn giờ 6 tiếng chạy một lần...

làm theo cách này có 2 điểm dở:

- phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
- anh phải duy trì một con VPS resource đủ lớn để điều khiển một đống crawler chạy song song thông qua một lũ proxy, mà con VPS này làm xong việc là đứng chờ cron -> nói chung tốn tiền

tôi đề xuất làm lại theo phương án sau:

- anh build một cái image, tuỳ theo script quét của anh chạy cái gì, ví dụ python thì đơn giản nhất là anh extend cái image python official, thêm hai dòng copy code của anh vào và set ENTRYPOINT cho nó chạy thôi...
- anh làm thêm một cái project con con của terraform, cho nó connect với đủ thứ cloud provider mà anh biết, AWS và GCP gì gì ấy, mục đích là để tạo một cái network rồi launch cái image của anh tạo ra trong bước 1, gán network ấy cho cái container ấy để nó đi cào dữ liệu về thôi... request đủ 90 cái (an toàn) thì ngưng, tắt, xoá network, trả resource...

cái bước launch thì tuỳ, thích thì launch cái terraform bằng tay, mỗi lần launch 100 container đi cho nó nhanh... hoặc nếu thích hẹn giờ thì tuỳ, nhưng hẹn giờ để chạy terraform nó là bad practice, tuỳ anh cân nhắc...

nó giải quyết được vấn đề proxy của anh, cái ấy nó unreliable quá không ai tính vào yêu cầu công việc cả, requirements mà lại có dòng "xin thằng Nam 500 cái proxy" thì tôi nghe xong sợ vãi tè...

nó giải quyết được vấn đề tiền của anh, có thể tốn hơn, nhưng chắc chắn là nhanh hơn... thời gian là tiền bạc...

trước khi kết thúc để đi tắm, tôi lấy một cái ví dụ thực tế cách đây vài năm...

gitlab, thằng này chắc các anh biết, cách đây đâu 3-4 năm, nó có cung cấp một cái image để tự launch gitlab trên server riêng...

cái image này nó bê nguyên con từ cái script puppeteer để launch gitlab trên một cái VPS, tức là lần đầu launch cái image này là puppeteer nó chạy phành phạch, setup abcxyz tất cả các thứ từ đầu tới cuối y như một cái VPS... trong cái container có một đống service, từ php-fpm cho tới mysql các kiểu...

đây là điển hình của dùng sai cách thằng docker, anti-pattern khủng khiếp... sau đấy một đống image gitlab khác do người khác làm chạy ngon lành, không ai dùng cái image "chính hãng" kia cả...

rồi thì tất nhiên gitlab nó cũng khôn ra và publish image mới chuẩn hơn...

ví dụ này để anh thấy rằng thằng gitlab chắc cũng không thiếu người giỏi cỡ anh, mà nó còn có lúc chưa hiểu cách dùng docker, thì các anh ngại gì mà còn cố chấp...

các anh có dùng hay không không bổ béo gì cho tôi cả, có béo là béo các anh (nếu nó phù hợp) cho nên đừng nghĩ tôi là fan cuồng bênh vực ba cái thứ e-idol, tôi già rồi...

@prescolt tôi chạy cron backup cho voz mấy năm nay rồi và tôi khẳng định là chạy cron trong container bình thường, nó anti pattern thật nhưng trường hợp này tôi coi nó là ngoại lệ chấp nhận được... điều ấy chỉ chứng minh là làm được tốt thôi, còn làm thế nào thì anh tự học tôi không rảnh dạy anh... anh vẫn còn giữ cái kiểu tranh luận công kích cá nhân ấy thì tôi không có hứng thú nói chuyện tiếp... nên nhớ tôi chưa một lần chửi mắng xúc phạm gì anh hết...
tôi biết là viết mập mờ đánh tráo khái niệm bẫy gà mờ là không đúng, cơ mà nhìn kết quả thì chỉ có thể nói một câu "worth it"
:LOL:)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

> anh nói là cần cào dữ liệu của một site, site ấy nó block IP 6 tiếng nếu request quá 100, số trang cần quét là 10000 trang (con số tôi phịa ra cho dễ nói chuyện)
tôi đã nói ngay từ đầu là nó có 200k trang mà sao anh không nhìn dc nhỉ :LOL:) (số lượng này là nhỏ bởi vì riêng cái project này tôi crawl chắc 10M pages cho các trang khác nhau rồi)

> - phụ thuộc vào proxy, một ngày kia anh xin không được cái nào mà proxy chết hết thì anh làm sao?
proxy list tôi để ở một file riêng, lâu lâu tôi lên mấy trang free proxy refresh một lần, như tôi nói, kiếm 10k cái không khó (tôi chỉ cần vào 3 trang), lúc nào cập nhật tôi chỉ cần rsync 3 cái file đó lên vps là xong, quá trình không tốn quá 3s (cho gõ command + upload, chứ cập nhật proxy thì lâu hơn)

>- anh phải duy trì một con VPS resource đủ lớn để điều khiển một đống crawler chạy song song thông qua một lũ proxy, mà con VPS này làm xong việc là đứng chờ cron -> nói chung tốn tiền
đúng là không biết gì mà mạnh miệng như đúng rồi, cái script của tôi nó chạy song song tầm 20 hit một lúc, tôi chỉ chạy đúng một cái, và nó chưa bao giờ tốn quá 50MB ram + 0.1% cpu, cost không đáng kể, cái vps 5$/tháng cũng tải tốt, không nói đến tôi xài ké vài cái vps khác đang có sẵn (free stuff thanks to aws generosity), không hiểu theo anh là tốn tiền chỗ nào.
p/s: code ở đây cho bạn nào thích soi: https://github.com/nipinium/appcv/blob/master/tasks/fetch/yousuu-infos.rb#L92


chỉ cần mấy cái này thôi thì phần sau của anh tôi đã lười đọc rồi, nhưng để tôi nói thêm:

bài toán ở đây là tôi cần crawl nội dung của 200k pages, limit của cái target website là tầm 20~100 hit một giây (tuỳ thời gian trong ngày). Tiếp đến cùng một IP sau 100 hits liên tiếp nó sẽ đưa vào blacklist trong một khoảng thời gian (tôi cũng không bảo là block 6 tiếng, bảo là 6 tiếng tôi chạy script một lần thôi, mà tôi cũng không nói là trong 6 tiếng này nó crawl dc cả 200k pages luôn nhé để khỏi thắc mắc).

đến đây thì bạn nào cũng biết cái vụ tôi nói spawn ra 1000 cái nodes (1000 ip) là nói đùa, bởi vì hoàn toàn vô nghĩa: mỗi cái node phải biết là mình crawl ở range nào, vì 1000 cái nodes cùng bắt đầu crawl từ 1 thì có khác kẹc gì? config cái đống này tôi đíu nghĩ là sẽ dễ (rất hóng siêu nhân nào chỉ tôi làm sao deploy 1000 cái node mỗi cái state khác nhau một cách đơn giản dễ dàng, tôi đợt trước cũng có bài toán gần tương tự, một cái webapp cho 10 cái nội dung khác nhau, phân biệt bằng vài cái hardstring trong một file frontend javascript, nhu cầu tự config lúc deploy docker file rất gấp, biết xin liên hệ).

mà dù có spawn 1000 cái liên tục, mỗi cái một range thì nó cũng đếch work, vì cái server chỉ chịu dc vài chục request là cùng, nhiều quá nó trực tiếp dẹo, aka cũng chỉ chạy 50 cái một lúc là hết cỡ, chạy xong thì tôi còn phải lấy nội dung về máy nữa.


đấy bài toán như thế bạn nào "biết rõ docker" chỉ tôi cách dùng docker thực hiện cái :LOL:)))))))))))))))
 
Sửa lần cuối:
mình không rõ, đang bàn về giá vps dành cho workload dạng job thôi, ai có nhu cầu dạng này (chạy theo thời gian rồi trả lại) thì lên thuê spot instance chạy cho nó rẻ, chi phí có khi còn 1/5 thông thường thôi
Mới xem rồi, spot mac dinh có 1 elastic IP thôi, 100 cái mà 100 elasic IP mới đúng nhu cầu ông NIP, vậy thì quản trị voz mà chạy job kiểu này vỡ nợ mất. Elasic phải mua 1 lần, ko có tính theo giờ
 
@Nipin À mà proxy là anh đi xin hay anh cũng cào?
mấy cái proxy mà crawl dc thì nó rất nát bạn ạ, tôi thử rồi không ăn thua, mấy cái tôi tìm dc là copy tay hết, cũng 3 trang nên không quá lâu, click vài button nó cho một list dài :">

cơ mà cũng không cần làm quá nhiều, 10k cái mà nó sống lâu tầm vài trăm cái cũng đủ rồi, vì tôi cũng không cần quá gấp, không quá outdated quá một tuần là ổn, cho nên trong script có đoạn check nếu mtime của file < 1 tuần thì bỏ qua, giảm hit. lâu lâu thì tôi lại tự tay updated lại, cũng chả mất quá 10 phút.
 
mấy cái proxy mà crawl dc thì nó rất nát bạn ạ, tôi thử rồi không ăn thua, mấy cái tôi tìm dc là copy tay hết, cũng 3 trang nên không quá lâu, click vài button nó cho một list dài :">

cơ mà cũng không cần làm quá nhiều, 100k cái mà nó sống lâu tầm vài trăm cái cũng đủ rồi, vì tôi cũng không cần quá gấp, không quá outdated quá một tuần là ổn, cho nên trong script có đoạn check nếu mtime của file < 1 tuần thì bỏ qua, giảm hit. lâu lâu thì tôi lại tự tay updated lại, cũng chả mất quá 10 phút.
Mua VPS cua vult, từ máy bàn goi API bật khi xài, bat truoc 1 phút truoc khi chạy cron,sẽ tiết kiệm, chứ 100 cái AWS chắc hại thận , còn commit đại gia thì mình ko bàn nhé, ở đây giải pháp nào cũng phai cân nhắt tới tiền cả.
 

Thống kê chủ đề

Ngày tạo
bamboo.bamboo,
Người trả lời cuối
2TbP,
Trả lời
597
Lượt xem
77.836
Quay lại
Lên đầu trang