thắc mắc [Java] Thắc mắc về Java

Ví dụ nhé, sản phẩm sp1 có 1000 đơn vị

Có 900 order đúng thời điểm t1 thì order 01 lock record sp1 để update đơn vị, và có 899 order phải retry

Kể cả ko phải đồng thời t1, mà trong khoảng thời gian ngắn, VD 1 giây thì cũng có nhiều order bị retry

Cái retry này nó gây áp lực sang các order sau
Vậy là lock kiểu versioning chỉ nên sử dụng khi sản phẩm ở dưới một ngưỡng đơn vị nào đó nhỉ phải không bác ? Còn bình thường thì đành phải dùng queue với lock theo key. Em thấy trên redis mình sử dụng được lua script để xử lý logic trên redis luôn mà không cần round trip đến database. Không biết có khả thi không :adore: , không biết cái load balancer ở kubernetes kết hợp với cloud services như EKS có tự autoscale thêm các pods có cân được trường hợp này không nhỉ? Em newbie nên cần học hỏi thêm nhiều giải pháp ạ.
 
Last edited:
Mấy bác cho em hỏi java giờ đang phổ biến lợi thế hơn các ngôn ngữ khác ở mảng nào ạ

Maturity, có nhiều ông lớn hỗ trợ và tham gia phát triển, Ecosystem rộng, bám rễ lâu đời trong các ngành như ngân hàng, tài chính, bảo hiểm. Và đủ nhanh cho phần lớn nhu cầu.
 
Chia sẻ các bạn khoá học Spring boot 3 miễn phí cho người mới, học thông qua xây dựng dự án Identity service từ zero
Khóa học lập trình Java Spring boot 3 cho người mới
Khóa học lập trình Java Spring boot 3 cho người mới (https://www.youtube.com/playlist?list=PL2xsxmVse9Ibe6ZGXUTOfz52RO6xJkhmT)

Khoá học Spring boot 3 microservices thông qua xây dựng dự án mạng xã hội

Spring boot 3 và microservices
https://www.youtube.com/playlist?list=PL2xsxmVse9Ibud7tJn5dqJDUAVCg2Olyi
 
Vậy là lock kiểu versioning chỉ nên sử dụng khi sản phẩm ở dưới một ngưỡng đơn vị nào đó nhỉ phải không bác ? Còn bình thường thì đành phải dùng queue với lock theo key. Em thấy trên redis mình sử dụng được lua script để xử lý logic trên redis luôn mà không cần round trip đến database. Không biết có khả thi không :adore: , không biết cái load balancer ở kubernetes kết hợp với cloud services như EKS có tự autoscale thêm các pods có cân được trường hợp này không nhỉ? Em newbie nên cần học hỏi thêm nhiều giải pháp ạ.

Bạn nên tách riêng từng vấn đề, giải pháp, và nên tìm hiểu kỹ hơn từng giải pháp nó giải quyết vấn đề gì, chứ đang giải quyết locking mà bạn đem EKS rồi auto scale thì nó hơi buồn cười, vì 2 cái "không liên quan" đến nhau trong context bạn đang đề cập.


Việc bạn "lock" trên redis thì QPS sẽ cao hơn nhiều so với DB, bù lại consistency sẽ giảm, vì lúc này, approach tốt nhất là debouncing dữ liệu về DB, đó là một risk bạn cần cân nhắc.


Về việc versioning, nó chính là CAS. CAS không nhất thiết phải "performance" tốt hơn so với pessimistic locking, nó tập trung giải quyết vấn đề khác. Và theo quan điểm của mình, CAS chỉ nên sử dụng khi latency giữa các component là cực cực thấp, và payload nhỏ, còn không thì khi rơi vào trường hợp QPS cao, thì resource bị lãng phí tương đối nhiều.
 
Các bác cho em hỏi là giờ còn cần phải học mô hình MVC không hay là học luôn Microservice ạ
Microservices là một system được chia ra thành nhiều service nhỏ. Học MVC trước để nắm rõ cách phát triển một service trước đã rồi mới tính đến chuyện microservice.
 
Các bác cho em hỏi giờ học spring thì học bắt đầu từ đâu ạ? có phải học spring mvc không hay là học spring core rồi đến spring boot luông?
 
Back
Top