
Trong thế giới phát triển phần mềm hiện đại, việc xử lý và truyền tải dữ liệu hiệu quả giữa các hệ thống đã trở thành một yêu cầu quan trọng. Apache Kafka và RabbitMQ là hai nền tảng message broker hàng đầu, mỗi hệ thống đều có những ưu điểm riêng và phù hợp với các tình huống sử dụng khác nhau. Bài viết này sẽ đi sâu vào phân tích, so sánh Apache Kafka và RabbitMQ, giúp các nhà phát triển và kiến trúc sư hệ thống có cái nhìn tổng quan để lựa chọn công cụ phù hợp nhất cho dự án của mình. Tổng quan về Apache Kafka Apache Kafka là gì? Apache Kafka là một nền tảng xử lý dòng dữ liệu phân tán, mã nguồn mở, được phát triển ban đầu bởi LinkedIn và sau đó trở thành một dự án của Apache Software Foundation. Kafka được thiết kế để xử lý dữ liệu theo thời gian thực, với khả năng thu thập, lưu trữ và [...]
Read more →
Apache Spark là một công cụ đa ngôn ngữ cho phép xử lý dữ liệu, khoa học dữ liệu (data science) và học máy (machine learning) trên các node đơn (single-node machines) hoặc trên clusters. Không chỉ đơn giản như vậy, Apache Spark còn có nhiều hơn các tính năng hay ho. Vậy anh em cùng lướt qua xem 10 tính năng nổi bật trong Apache Spark là gì? 1. Fault tolerance Tính năng đầu tiên của Apache Spark là Fault tolerance. Fault tolerance ở đây anh em có thể hiểu là khả năng chịu lỗi, khả năng xử lý lỗi. Apache Spark ngay từ khi bắt đầu đã được thiết kế để hanler lỗi từ các worker nodes. Spark đạt được khả năng này nhờ vào sử dụng DAG và RDD (Resilient Distributed Datasets). DAG ở đây chứa tất cả các bước (step) cần thiết để hoàn thành một task. Tất cả đều được ghi lại. Chính vì vậy, khi xảy ra lỗi ở nodes worker nào đó, ta có thể tái hiện lỗi từ DAG đã lưu hiện có. 2. Dynamic In Nature Tính năng thứ hai của [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh 1. Apache Commons Chain là gì? Apache Commons Chain là một framework, một thư viện mã nguồn mở của Apache. Nó cung cấp API cho phép chúng ta dễ dàng cài đặt các xử lý tuân theo Chain of Responsibility (COR) pattern. Chain of Responsiblity cho phép một đối tượng gửi một yêu cầu nhưng không biết đối tượng nào sẽ nhận và xử lý nó. Điều này được thực hiện bằng cách kết nối các đối tượng nhận yêu cầu thành một chuỗi (chain) và gửi yêu cầu theo chuỗi đó cho đến khi có một đối tượng xử lý nó. Chain of Responsibility Pattern hoạt động như một danh sách liên kết (Linked list) với việc đệ quy duyệt qua các phần tử (recursive traversal). 2. Cài đặt thư viện Apache Commons Chain Thêm thư viện vào project vào project maven: <!-- https://mvnrepository.com/artifact/commons-chain/commons-chain --> <dependency> <groupId>commons-chain</groupId> <artifactId>commons-chain</artifactId> <version& [...]
Read more →
Bài viết được sự cho phép của tác giả Lê Chí Dũng I. Giới thiệu 1. Apache là gì? Apache HTTP Server, hay thường được gọi là Apache là phần mềm web server được sử dụng nhiều nhất trên thế giới. Ban đầu được dựa trên NCSA HTTPd server. Apache bắt đầu được phát triển vào khoảng đầu năm 1995 khi NCSA bị đình trệ và đóng 1 vai trò quan trọng trong sự phát triển ban đầu của World Wide Web, nhanh chóng vượt qua NCSA HTTPd như HTTP server ưu thế và trở nên phổ biến nhất kể từ tháng 4/1996. Vào năm 2009, nó trở thành phần mềm web server đầu tiên phục vụ hơn 100 triệu website. Apache được phát triển và duy trì bởi 1 cộng đồng mở của các nhà phát triển dưới sự bảo trợ của Apache Software Foundation. Thường được sử dụng trên hệ thống giống Unix (thường là Linux), ngoài ra còn hỗ trợ rộng rãi các hệ điều hành khác bao gồm eComStation, Microsoft Windows, NetWare, OpenVMS, OS/2 và TPF. Apache là miễn phí và là [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Sau khi cài đặt Apache Kafka, các bạn có thể sử dụng công cụ Apache Kafka CLI để làm việc với topic trong Apache Kafka server. [irp posts="35520" name="Apache Kafka là gì?"] [irp posts="46000" name="Cài đặt Apache Kafka sử dụng Docker Compose"] Xem thêm việc làm AngularJS hấp dẫn trên TopDev Tạo mới topic Chúng ta sẽ sử dụng tập tin kafka-topics.sh của Apache Kafka CLI để làm việc với topic trong Apache Kafka server. Để tạo mới một topic, các bạn có thể sử dụng câu lệnh với cú pháp như sau: kafka-topics.sh --create --topic <topic_name> --bootstrap-server <kafka_server> --partitions <partition_number> --replication-factor <replication_number> Trong đó: topic_name là tên topic mà chúng ta cần tạo kafka_server là địa chỉ Apache Kafka server với định dạng host:port partition_number là số lượng partitions mà chúng ta cần tạo replication_number là số lượng replicate mà chúng ta muốn cho mỗi partition. Giá trị của tham số này sẽ phụ thuộc vào số lượng Apache [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Để làm việc với Apache Kafka, các bạn cần nắm một số khái niệm cơ bản về: Producer Consumer Broker Cluster Topic Topic Partitions Partition Offset Consumer Group [irp posts="35520" name="Apache Kafka là gì?"] [irp posts="46000" name="Cài đặt Apache Kafka sử dụng Docker Compose"] Xem thêm tuyển dụng UI UX Designer hấp dẫn trên TopDev Producer Producer là những application produce data và gửi data tới Apache Kafka Server. Data này sẽ là những message có định dạng, được gửi dưới dạng mảng byte tới Apache Kafka server. Ví dụ như các bạn có một tập tin .txt chứa text bên trong, chúng ta có thể dùng Producer để đọc từng dòng trong tập tin này rồi gửi tới Apache Kafka server. Consumer Consumer là những application nhận message từ Apache Kafka server với message được gửi từ Publisher. Consumer cần phải subcribe vào một topic nào đó của Apache Kafka server để có thể nhận được tất cả các message được emit vào topic này. Sau khi nhận được data, Consumer [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Apache Kafka là một open-source distributed event streaming platform giúp chúng ta có thể tạo và process data stream real-time. Các bạn có thể hình dung đến những hệ thống mà mỗi giây, data đều được sinh ra và cần được xử lý ví dụ như hệ thống quản lý giao thông, quản lý thời tiết, data sẽ được tạo ra từ nhiều nơi khác nhau và cần được collect để xử lý. Sử dụng Apache Kafka với high scalable có thể giúp chúng ta giải quyết những bài toán như vậy. [irp posts="45862" name="Cài đặt Apache Kafka trên macOS"] [irp posts="36289" name="Sử dụng Apache POI để đọc, ghi dữ liệu từ file Excel trong Selenium"] Xem thêm các việc làm Flutter lương cao trên TopDev Apache Kafka là một hệ thống enterprise messaging, hoạt động với cơ chế Pub-Sub messaging architecture. Chúng ta có Message Publisher, Message Consumer và Message Broker. Message Publisher là nơi produce các message và emit các message vào Message Broker, Message Consumer là nơi nhận, nó sẽ subscribe Message Broker và [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết trước, mình đã hướng dẫn các bạn cách cài đặt Apache Kafka trên macOS, việc cài đặt sử dụng Docker Compose sẽ giúp chúng ta nhanh chóng start lên một Apache Kafka server mà không tốn nhiều effort, chỉ cần cài đặt Docker và tập tin docker-compose.yml. Cụ thể như thế nào? Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Apache Kafka sử dụng Docker Compose các bạn nhé! [irp posts="7048" name="Cách thiết lập một dự án Symfony để làm việc với Docker Subdomains"] Xem thêm các việc làm OOP lương cao trên TopDev Mình sẽ tạo mới một tập tin docker-compose.yml với Docker Compose version như sau: version: '3.8' Chúng ta sẽ khai báo 2 service, một cho Apache Zookeeper và một cho Apache Kafka: services: zookeeper: kafka: Vì Apache Kafka muốn chạy được phải có Apache Zookeeper nên mình sẽ khai báo service zookeeper trước. Chúng ta sẽ sử dụ [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết này, mình hướng dẫn các bạn cách cài đặt Apache Kafka trong macOS các bạn nhé! Đầu tiên, các bạn cần đi đến trang Download của Apache Kafka https://kafka.apache.org/downloads để download latest version của nó! Các bạn hãy download phiên bản binary mới nhất. [irp posts="35520" name="Apache Kafka là gì?"] [irp posts="35153" name="Capacity Planning - Dự toán công suất cho ứng dụng (Tập 1 )"] Xem thêm Tuyển dụng Machine Learning Fresher trên TopDev Sau khi download xong, các bạn hãy giải nén tập tin download này ra. Để có thể sử dụng Apache Kafka ở bất kỳ đâu trong máy của mình, mình sẽ chỉnh sửa tập tin .bash_profile để thêm đường dẫn tới thư mục bin của Kafka như sau: export PATH=/Users/khanh/Downloads/kafka_2.13-3.0.0/bin:$PATH Để những thay đổi của chúng ta có hiệu lực liền, các bạn hãy reload lại tập tin .bash_profile với câu lệnh như sau: . ./.bash_profile Để start [...]
Read more →
Bài viết được sự cho phép của tác giả Tô Thị Vân Anh Chúng ta đều biết rằng, trong mỗi môi trường phát triển phần mềm, dữ liệu là một phần không thể thiếu. Khi phát triển, chúng ta thường lưu trữ dữ liệu trực tiếp trong các file chương trình, mỗi khi có sự thay đổi nào đó liên quan trực tiếp đến dữ liệu trong các file đó thì bắt buộc phải thực hiện biên dịch code và kiểm tra lại các kết quả biên dịch đó. [irp posts="32922" name="Các kiểu “đợi chờ” trong Selenium Webdriver: Implicit wait, Explicit wait và Fluent wait"] [irp posts="35555" name="Làm quen: Tóm tắt cơ bản về Selenium"] Vậy thì vấn đề đặt ra ở đây là, nếu như dữ liệu cần phải thay đổi nhiều lần, liên tục và hàng ngày thì chúng ta sẽ thực hiện thay đổi từng phần theo mỗi lần thay đổi đó và rồi lại biên dịch lại? Chỉ nghĩ thôi đã thấy khá là mệt mỏ [...]
Read more →
Bài viết được sự cho phép của tác giả Lê Chí Dũng Apache Kafka® A DISTRIBUTED STREAMING PLATFORM Hiểu đơn giản là nền tảng về đường truyền dữ liệu phân tán. Apache Kafka là distributed event streaming platform có khả năng xử lý hàng nghìn tỷ sự kiện mỗi ngày. Ban đầu được hình thành như một hàng đợi nhắn tin, Kafka dựa trên sự trừu tượng của nhật ký cam kết phân tán. Kể từ khi được tạo và mở bởi LinkedIn vào năm 2011, Kafka đã nhanh chóng phát triển từ hàng đợi nhắn tin đến một nền tảng phát trực tuyến sự kiện đầy đủ. Một stream platform sẽ có 3 khả năng chính: Publish và subscribe vào các stream của các bản ghi, tương tự như một hàng chờ tin nhắn. Các stream của các bản ghi được lưu trữ bằng phương pháp chịu lỗi cao cũng như khả năng chịu tải. Xử lý các stream của các bản ghi mỗi khi có bản ghi mới. [irp [...]
Read more →
Bài viết được sự cho phép của tác giả Ngo Thang Nói về cơ sở dữ liệu thì chắc ai cũng nghĩ ngay đến hệ quản trị cơ sở dữ liệu quan hệ như Mysql, PostgreSQL, hay NoSQL như MongoDB, DynamoDB, Cassandra… Và theo mình nghĩ đa số anh em ở đây cũng đang sử dụng chủ yếu là MySQL. Mình cũng vậy, từ lúc đi làm đến giờ toàn phang MySQL, chưa có cơ hội làm việc với NoSQL (tự tìm hiểu thì có còn dùng trong dự án thật thì chưa) [irp posts="14862" name="Maven Apache"] [irp posts="14005" name="20 trường hợp sử dụng lệnh Docker cho developer"] Kể cả các công ty to như Pinterest hay Instagram cũng vậy, họ vẫn đang dùng MySQL. Còn NoSQL thì hiện nay thấy rất nhiều công ty đã dùng vào hệ thống chính của họ. Ví dụ như Netflix, Discord, Spotify … Nên hôm nay quyết định viết bài này để tìm hiểu xem thật sự thằng Cassandra này nó có ưu điểm, nhược điểm gì, dễ scale hay không … Khái quát qua về Cassandra [...]
Read more →
1. Maven là gì? Maven là công cụ quản lý và thiết lập tự động 1 dự án phần mềm. Chủ yếu dùng cho các lập trình viên java, nhưng nó cũng có thể được dùng để xây dựng và quản lý các dự án dùng C#, Ruby, Scala hay ngôn ngữ khác. Maven phục vụ mục đích tương tự như Apache Ant, nhưng nó dựa trên khái niệm khác và cách hoạt động khác. Maven hỗ trợ việc tự động hóa các quá trình tạo dự án ban đầu, thực hiện biên dịch, kiểm thử, đóng gói và triển khai sản phẩm. Được phát triển bằng ngôn ngữ Java cho phép Maven chạy trên nhiều nền tảng khác nhau: Windows, Linux và Mac OS... 2. Maven hoạt động như nào? Maven dùng khái niệm Project Object Model (POM) để mô tả việc build project, các thành phần phụ thuộc và các module. Nó định nghĩa trước các target cho việc khai báo task, trình biên dịch, đóng gói và thứ tự hoạt động để mọ [...]
Read more →