Các ứng dụng hiện đại bây giờ đều phải đối mặt với một nỗi lo lớn đó là làm thế nào để ứng dụng có thể hoạt động tốt với số lượng lớn người dùng truy cập và sử dụng đồng thời (high concurrencies issues), mặc dù khả năng đáp ứng của phần cứng ngày càng cải thiện, nhưng tốc độ và khả năng chịu tải (performance) của phần mềm (software) vẫn là yếu tố chính.

Và để tăng performance của ứng dụng ta có hai cách chính đó là:

  • Xử lý song song (parallelize): Sử dụng nhiều Thread và…


Golang là một ngôn ngữ mới và đang tăng trưởng rất nhanh, rất nhiều các hệ thống lớn trên thế giới sử dụng Go là ngôn ngữ chính trong phần Backend services. Không thể nằm ngoài xu thế đó, Tôi! …


Đầu tiên hãy định nghĩa Singleton là gì đã.

Singleton là một mẫu thiết kế (pattern) mà nó đảm bảo rằng chỉ có một Object/Instance được tồn tại trong một vòng đời của ứng dụng.

Rất đơn giản và dễ hiểu, ngay đến cái tên của nó đã cho thấy sự cô đơn rồi. Thực sự đây là một pattern vô cùng đơn giản và ai cũng tưởng là mình hiểu rõ nó lắm… nhưng thực tế rằng có rất nhiều vấn đề thú vị về nó … hãy cùng tôi tìm hiểu nhé 😆.

OK vậy bây giờ hãy…


Cùng với Algorithm thì System Design là một phần rất quan trọng trong phỏng vấn và tuyển dụng, nhất là bạn ứng tuyển với vị trí từ Senior trở lên. Và để cùng tôi chuyển bị tốt cho đợt phỏng vấn tuyển dụng sắp tới, ta hãy cùng nhau tìm hiểu về những điều cơ bản và sơ lược nhất về thiết kế hệ thống nhé. …


Chắc hẳn ai cũng tìm kiếm những mẫu thiết kế tốt (best practices) khi tiếp cận tới một công nghệ hay một kiến trúc nào đó mới mẻ. Nhưng ở bài viết này thay vì tiếp cận với những best practices thì chúng ta hãy tìm hiểu những sai lầm (worst practices) khi làm việc với Redis nhé. Chúng ta sẽ tốt đẹp hơn khi hiểu rõ về những thói quen xấu của mình (chắc chắn là như thế).

1. Không sử dụng mật khẩu

Phần lớn mọi người đều không đặt mật khẩu cho Redis instance của họ, điều này rất tệ với phiên bản…


Sau 8 năm phát triển tích cực cuối cùng vào tháng 5/2019 các kỹ sư ở Oracle đã ra mắt GraalVM — một máy ảo “đa ngôn ngữ” hiệu xuất cao và có tính năng rất đặc biệt là có thể biên dịch ứng dụng Java thành mã máy (native image) để ứng dụng có thể chạy trực tiếp trên mỗi nền tảng mà không cần cài đặt JRE hay các Webserver như Tomcat, Jetty …

GraalVm là gì ?

GraalVM là một máy ảo (virtual machine) cho phép chạy các chương trình viết trên rất nhiều ngôn ngữ khác nhau như JavaScript, Python…


Chắc hẳn ai làm việc với lập trình lâu năm đều đã từng gặp các rắc rối với "memory leak” hay là “out of memory” nguyên nhân là việc quản lý bộ nhớ không tốt, rất may là với Java ta được cung cấp một bộ Garbage Collector (GC) sẽ tự động quét dọn bộ nhớ. Nhờ đến GC mà các LTV không cần quan tâm đến việc quản lý toàn bộ phần bộ nhớ hay là phân phối lại bộ nhớ của chương trình như mà C/C++ chúng ta phải làm.

Nhưng tại sao chúng ta vẫn gặp rắc…


Sau Java 8, Oracle sẽ liên tục phát triển và ra version mới sau mỗi 6 tháng, hiện tại tại thời điểm bài viết này (10–2019) phiên bản mới nhất là Java 13. Điều này sẽ gây chút bối rối với những Java Developer vốn quen với sự "ổn định", nhưng thực tế thì chỉ sau 3 năm mới có một phiên bản LTS (long term support), các phiên bản khác chỉ là các phiên bản thử nghiệm và sẽ bị thay thế bởi các phiên bản khác mới hơn.

https://adoptopenjdk.net/support.html

Roadmap bên trên ta có thể thấy Java 11 là…


Tiếp nối bài trước về Mechanical Sympathy và giới thiệu qua về LMAX Disruptor, ở bài viết này người viết sẽ phân tích sâu hơn và hướng dẫn cách sử dụng về bộ thư viện Disruptor.

LMAX-Disruptor là một bộ thư viện giúp cho việc phát triển các ứng dụng với độ tải lớn (high-performance) cho phép xử lý đồng thời (concurrency) một số lượng rất lớn message mà không cần Lock (lock-free). Nếu bạn làm việc với Java thì thực tế đây là bộ thư viện về Concurrency tốt nhấtnhanh nhất hiện nay.

Quay lại ví dụ…


Gần đây hệ thống tôi đang phát triển liên tục gặp các sự cố liên quan tới I/O Bound và CPU Bound, CPU Server liên tục gặp tình trạng quá tải (100% high load), theo phản ứng bình thường thì các Developer sẽ đổ tại Server yếu sinh lý, không đủ tải hệ thống v.V... và yêu cầu nâng cấp hay mở rộng phần cứng ...blah blah và blah blah...

Nhưng tui thì lại nghĩ rằng liệu có thể cải tiến hệ thống để thân thiện, đồng điệu và hoạt động tốt hơn với phần cứng hay không? Và câu…

Nam Vu

A developer, runner and traveler.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store