13 điểm bởi GN⁺ 2024-07-01 | 3 bình luận | Chia sẻ qua WhatsApp
  • Một dịch vụ drop-in có thể thay thế trực tiếp SQS, cải thiện đáng kể trải nghiệm của lập trình viên
  • Cung cấp UI đầy đủ tính năng, khả năng quan sát, truy vết, lập lịch tin nhắn và giới hạn tốc độ
  • Có thể chạy một phiên bản SQS riêng trên mọi đám mây
  • Được triển khai dưới dạng một binary Go duy nhất và có thể dùng từ các client SQS hiện có
  • UI chạy trên :3000, còn máy chủ tương thích SQS chạy trên :3001
  • Tương thích với các client SQS của mọi ngôn ngữ
    • Python
      • import boto3  
        # Chỉ cần thay đổi endpoint_url  
        sqs = boto3.client("sqs", ..., endpoint_url="http://localhost:3001";)  
        sqs.send_message(QueueUrl="...", MessageBody="hello world")  
        
      • Hoạt động mượt mà với cả Celery
      • app = Celery("tasks", broker_url="sqs://...@localhost:3001")  
        

Ý kiến của GN⁺

  • SmoothMQ mở rộng các tính năng của SQS để mang lại trải nghiệm tốt hơn cho lập trình viên
  • Có thể chạy phiên bản riêng mà không bị phụ thuộc vào đám mây, giúp tăng tính linh hoạt
  • Có thể tiếp tục dùng nguyên các client SQS hiện có nên chi phí chuyển đổi thấp
  • Có thể quản lý hàng đợi và tin nhắn dễ dàng qua UI, giúp nâng cao hiệu quả vận hành
  • Khi áp dụng công nghệ mới, cần cân nhắc đầy đủ khả năng tương thích với hệ thống hiện có

3 bình luận

 
aer0700 2024-07-02

Có lẽ SQLite và Postgres vẫn sẽ còn được dùng cả 10 năm nữa. Tôi cũng từng nghĩ Redis sẽ như vậy, nhưng dạo này thì không chắc nữa.

 
superwoou 2024-07-02

Dạo này người ta dùng gì thay cho Redis vậy?

 
GN⁺ 2024-07-01
Ý kiến Hacker News
  • Ý tưởng giúp sử dụng các công nghệ k8s, kubernetes, cloud native, self-hosted, edge-enabled với chi phí thấp là rất hay

    • Đã dùng rq và minio trên k8s trong vài năm, và gần đây đang chú ý đến SQLite như một phương án thay thế
    • Nhấn mạnh tầm quan trọng của đám mây cá nhân, và cho rằng không phù hợp khi xử lý quá nhiều thứ trên đám mây công cộng
    • Cảm biến BTLE hoàn toàn có thể giao tiếp trực tiếp với Apple Watch
    • Việc phải đi qua đám mây không mang lại lợi ích, và cần sửa điều đó ở thế hệ công cụ tiếp theo
  • Chỉ ra rằng SQLite chạy trên một máy chủ đơn lẻ, và dù hoạt động trong hầu hết trường hợp, nó không thể đáng tin cậy 100%

    • Nếu máy chủ hàng đợi bị sập, SQS nhiều khả năng vẫn sẽ tiếp tục hoạt động
    • Trong trường hợp tốt nhất thì nó có thể chạy được, nhưng sẽ không cung cấp độ tin cậy ngang với SQS
  • Bỏ qua vấn đề quy mô và benchmark, đây là công cụ hữu ích cho các mô-đun kiểm thử tính năng/kiểm thử đơn vị dùng SQS

  • Nhắm đến một hệ thống hàng đợi được lưu trữ, với mục tiêu rẻ hơn SQS mà không phải hy sinh hiệu năng

    • Giống như Backblaze và Minio đã thành công trong không gian S3, mục tiêu là thành công tương tự ở mảng hệ thống hàng đợi
  • Thích viết các dịch vụ tương thích API AWS, và có nhắc đến dự án Dyna53

  • Dùng LocalStack thì có thể sử dụng SQS và nhiều dịch vụ AWS khác cho mục đích kiểm thử/phát triển; nó được tài liệu hóa tốt và là mã nguồn mở

  • Thích các dự án tạo ra những lựa chọn thay thế self-hosted đơn giản cho các dịch vụ phổ biến

    • Có vẻ sẽ hoạt động tốt với Litestream mà không gặp vấn đề lớn, và sẽ rất phù hợp làm hệ thống hàng đợi tạm thời mà không cần điều chỉnh backend storage
  • Một đề xuất nhanh về cấu trúc dự án:

    • Đề xuất chuyển mọi struct trong thư mục models/ lên thư mục gốc
    • Nhờ vậy, người dùng package có thể dùng các tên ngắn gọn và sạch như q.Message và q.Queue, đồng thời tránh xung đột tên nếu người dùng có package "models" riêng
  • Nhắc đến ElasticMQ, được dùng để mô phỏng SQS trong môi trường Docker

  • Hỏi lý do vì sao lại tắt hỗ trợ khóa ngoại nhưng vẫn tiếp tục dùng nó trong schema cơ sở dữ liệu

    • Phần chú thích "TODO: check for errors" và đoạn có vẻ như đang vô hiệu hóa việc kiểm tra ràng buộc khóa ngoại khiến người ta ngần ngại muốn thử