thảo luận Microservices and Cloud Native Group

Mình thấy nhiều người trong này dùng Java cho microservice mà không để ý thời gian startup của nó rất lâu(trừ những thằng dùng graalvm). Có bạn nào làm rõ cho mình hiểu tại sao lại dùng Java không?


Mình ko rành java nhưng xin vặn ngu một cậu: lúc đóng docker image thì app java đã được build rồi mà nhỉ, lúc run file jar mình cũng thấy nhanh mà đâu chậm so với run các thằng khác

via theNEXTvoz for iPhone
 
Mình ko rành java nhưng xin vặn ngu một cậu: lúc đóng docker image thì app java đã được build rồi mà nhỉ, lúc run file jar mình cũng thấy nhanh mà đâu chậm so với run các thằng khác

via theNEXTvoz for iPhone
chạy trong một thời gian dài thì app tối ưu thôi chỉ trừ cái jvm startup lâu chút(nếu so spring với bọn framework bên nodejs hoặc golang)
 
Các bác dùng công nghệ gì để đồng bộ dữ liệu giữa các service với nhau vậy? Cho mình xin tên một với. Research qua thì thấy có Kafka Connect.
 
Các bác dùng công nghệ gì để đồng bộ dữ liệu giữa các service với nhau vậy? Cho mình xin tên một với. Research qua thì thấy có Kafka Connect.
Hiện tại thì người ta hay dùng message broker như Kafka, RabbitMQ, Nats...
Data được ghi vào một đầu rồi replicate đi các chỗ khác.
Kafka Connect thì thường đi kèm với một thằng đọc database log như Debezium, Maxwell...
 
Mình ko rành java nhưng xin vặn ngu một cậu: lúc đóng docker image thì app java đã được build rồi mà nhỉ, lúc run file jar mình cũng thấy nhanh mà đâu chậm so với run các thằng khác

via theNEXTvoz for iPhone

Do cách build JIT nên bản thân ứng dụng Java khi run đã chậm hơn ứng dụng khác (AOT) một chút, cộng thêm framework Spring boot khởi động rất chậm nữa :ROFLMAO:

Trong môi trường high scalability, thời gian startup-warnup chậm gây ra downtime rất lớn cho hệ thống, đây là một điểm trừ chí mạng nên em nghĩ bác ấy thắc mắc cũng là có cơ sở :(

Như bác trên trả lời thì khi PM lựa chọn ngôn ngữ cho hệ thống, cần đánh giá trên nhiều phương diện, nếu đánh giá điểm trừ này là chấp nhận được thì có thể tặc lưỡi bỏ qua :)

Sent from Xiaomi Mi MIX 2 using vozFApp
 
Do cách build JIT nên bản thân ứng dụng Java khi run đã chậm hơn ứng dụng khác (AOT) một chút, cộng thêm framework Spring boot khởi động rất chậm nữa :ROFLMAO:

Trong môi trường high scalability, thời gian startup-warnup chậm gây ra downtime rất lớn cho hệ thống, đây là một điểm trừ chí mạng nên em nghĩ bác ấy thắc mắc cũng là có cơ sở :(

Như bác trên trả lời thì khi PM lựa chọn ngôn ngữ cho hệ thống, cần đánh giá trên nhiều phương diện, nếu đánh giá điểm trừ này là chấp nhận được thì có thể tặc lưỡi bỏ qua :)

Sent from Xiaomi Mi MIX 2 using vozFApp
em có thắc mắc là khi deploy khi nào build xong version mới oke hết rồi mới switch qua chứ ha, chứ đâu có shutdown luôn version cũ mà downtime rất lớn ha thím
 
em có thắc mắc là khi deploy khi nào build xong version mới oke hết rồi mới switch qua chứ ha, chứ đâu có shutdown luôn version cũ mà downtime rất lớn ha thím

Cái bác nói là cơ chế upgrade, có thể sài nhiều cơ chế để tránh downtime thì không kể, nhưng VD nhiều trường hợp hệ thống quá tải, cần scale lên để tăng khả năng đáp ứng, rồi scale theo chuỗi dịch vụ... thì không làm ngay được. Em dùng từ downtime hơi quá, gọi là chờ lâu thì đúng hơn.

Sent from Xiaomi Mi MIX 2 using vozFApp
 
Do cách build JIT nên bản thân ứng dụng Java khi run đã chậm hơn ứng dụng khác (AOT) một chút, cộng thêm framework Spring boot khởi động rất chậm nữa :ROFLMAO:

Trong môi trường high scalability, thời gian startup-warnup chậm gây ra downtime rất lớn cho hệ thống, đây là một điểm trừ chí mạng nên em nghĩ bác ấy thắc mắc cũng là có cơ sở :(

Như bác trên trả lời thì khi PM lựa chọn ngôn ngữ cho hệ thống, cần đánh giá trên nhiều phương diện, nếu đánh giá điểm trừ này là chấp nhận được thì có thể tặc lưỡi bỏ qua :)

Sent from Xiaomi Mi MIX 2 using vozFApp
tôi thấy start up/warm up time của java web app với embedded web server cũng đâu có chậm nhỉ? Spring boot hello world project bật lên chậm lắm chắc đến 1s là cùng
 
tôi thấy start up/warm up time của java web app với embedded web server cũng đâu có chậm nhỉ? Spring boot hello world project bật lên chậm lắm chắc đến 1s là cùng
Đấy là project thím có cái gì đâu. Cứ register một đống bean xem. Của tôi toàn chục s.
 
Thực ra chạy JVM cũng được mà nó tốn resource thôi :big_smile:
Một con Spring Boot chạy mấy thứ cơ bản như Tomcat, Hibernate cho một project REST bèo cũng phải cấp cho nó tầm 512MB. Trong khi một project Go tương đương tầm 64-128MB chắc dư.
 
tôi thấy start up/warm up time của java web app với embedded web server cũng đâu có chậm nhỉ? Spring boot hello world project bật lên chậm lắm chắc đến 1s là cùng
Spring Boot nó chơi kiểu runtime optimization nên khi chạy lên thì nó mới reflect cái code, anotation của app để optimize lại. Hello World thì không có gì để reflect hết, nhưng dự án lớn là ăn đòn! Đọc tại liệu của micronaut xem bọn nó dìm hàng spring boot thì lôi hết ra bỉ mà :))
 
Đang làm software engineer bên AWS như DynamoDB, API Gateway, CLoudWatch, CloudFormation, docker ở Canada.
Nói chung thấy hay và thú vị, cực kì tiềm năng trong tương lai, serverless sẽ lên ngôi
 
Đấy là project thím có cái gì đâu. Cứ register một đống bean xem. Của tôi toàn chục s.
hử, bạn qua c++ hay go xong tạo ra cả 1 đống service rồi dùng 1 cái ioc import cả đống service đấy vào xem startup time của app xem nó vẫn như cũ hay chậm hơn?
tôi đồ rằng cái project spring của bạn còn toàn xài autowired với componentscan, syntax sugar quá mà, chả cần biết nó làm gì đằng sau cả
Drnv7cy.png


Spring Boot nó chơi kiểu runtime optimization nên khi chạy lên thì nó mới reflect cái code, anotation của app để optimize lại. Hello World thì không có gì để reflect hết, nhưng dự án lớn là ăn đòn! Đọc tại liệu của micronaut xem bọn nó dìm hàng spring boot thì lôi hết ra bỉ mà :))
đúng thế, reflection ở bất cứ language nào đều là expensive operation hết, ko thể bằng direct invoke được.
trên thực tế ở các project có dùng ioc mà muốn maintain được startup time đều hạn chế tối đa việc phải reflect để scan đống service class rồi lại reflect lần nữa để tạo instance, tốt nhất là tập trung register service ở 1 chỗ và tránh resolve by type (chuyển qua dùng key, kiểu khai báo service name chả hạn)
 
Last edited:
Hiện tại mình đang dùng MySQL Master Slave để lưu data, nhưng mà bây giờ write request lên cỡ 1000 transactions per second, thì MySQL nó có chịu nổi không các bác, em đang định chuyển sang MongoDB
 
Hiện tại mình đang dùng MySQL Master Slave để lưu data, nhưng mà bây giờ write request lên cỡ 1000 transactions per second, thì MySQL nó có chịu nổi không các bác, em đang định chuyển sang MongoD
Cloud Native thì cứ bơm tiền vào sẽ giải quyết đc hết :))
 
Hiện tại mình đang dùng MySQL Master Slave để lưu data, nhưng mà bây giờ write request lên cỡ 1000 transactions per second, thì MySQL nó có chịu nổi không các bác, em đang định chuyển sang MongoDB
thím phải coi thử 1000 trans đó nó có gì không ổn không
còn nếu trans oke hết thì nếu no chịu không nổi thì cứ đô la thần chưởng vào là được
 
Có các bạn sinh viên nào năm cuối muốn học không mình dạy :big_smile:
Dạo này buổi chiều tối tương đối rảnh nên có thể dạy kèm cho vài bạn ở quán cà phê :big_smile:

P/s: ở Thủ Đức nhé, gần ĐH Ngân Hàng :big_smile:
Em ở sát bên luôn, thím có nhận học sinh nghèo hiếu học không, em muốn đi theo thím :shame:
 
Back
Top