39 điểm bởi xguru 2024-05-16 | 6 bình luận | Chia sẻ qua WhatsApp
  • Proxy đảo ngược để tạo đường hầm ra mạng bên ngoài
  • Xử lý lưu lượng ở cấp độ production và được thiết kế để dễ triển khai hosting, đặc biệt là trên Kubernetes
  • Có thể dùng để công khai dịch vụ trong mạng khách hàng, dịch vụ BYOC (Bring Your Own Cloud) hoặc kết nối tới các thiết bị IoT
  • Có thể được triển khai dưới dạng cụm node để đảm bảo khả năng chịu lỗi, mở rộng và triển khai không gián đoạn

Cách Piko hoạt động

  • Dịch vụ upstream kết nối tới Piko để đăng ký endpoint
  • Piko định tuyến các yêu cầu tới endpoint đến dịch vụ upstream đã đăng ký thông qua kết nối chỉ outbound
  • Điều này có nghĩa là có thể công khai dịch vụ mà không cần mở cổng công khai
  • Các yêu cầu HTTP(S) đi vào sẽ dùng header Host hoặc header x-pico-endpoint để xác định ID của endpoint đích
  • Nếu nhiều dịch vụ upstream đăng ký cùng một endpoint, Piko sẽ cân bằng tải các yêu cầu cho endpoint đó giữa các upstream đã đăng ký

Mục tiêu thiết kế của Piko

Xử lý lưu lượng production

  • Piko được thiết kế để xử lý lưu lượng production, không chỉ là công cụ dùng cho thử nghiệm và phát triển
  • Có thể dùng Piko để truy cập mạng khách hàng, xây dựng giải pháp BYOC và truy cập các thiết bị IoT
  • Để hỗ trợ điều này, Piko có thể chạy dưới dạng cụm node nhằm đảm bảo khả năng chịu lỗi, mở rộng theo chiều ngang và triển khai không gián đoạn
  • Ngoài ra, Piko cung cấp các công cụ quan sát để giám sát và gỡ lỗi

Dễ hosting

  • Piko được thiết kế để dễ hosting trên Kubernetes
  • Cụm Piko có thể được triển khai dưới dạng Kubernetes StatefulSet phía sau HTTP load balancer hoặc Kubernetes Gateway
  • Kết nối từ dịch vụ upstream và các yêu cầu từ proxy client có thể được cân bằng tải tới bất kỳ node nào trong cụm, và Piko sẽ quản lý việc định tuyến yêu cầu tới đúng upstream

Bảo mật

  • Dịch vụ upstream kết nối tới Piko thông qua kết nối chỉ outbound
  • Piko định tuyến mọi yêu cầu tới upstream thông qua kết nối đó
  • Vì vậy upstream không cần mở cổng để nhận yêu cầu
  • Piko hỗ trợ xác thực dịch vụ upstream trước khi chúng đăng ký endpoint
  • Piko có thể tự host, vì vậy có thể triển khai trong cùng mạng với proxy client để không chấp nhận yêu cầu từ mạng bên ngoài
  • Ví dụ, có thể cho phép các dịch vụ upstream đã xác thực đăng ký qua Internet bằng TLS, rồi chỉ cung cấp các route nội bộ cho các proxy client nằm trong cùng mạng với Piko

6 bình luận

 
halfenif 2024-05-17

Điều này có nghĩa là có thể đưa dịch vụ ra ngoài mà không cần mở cổng công khai

Tôi tò mò ý nghĩa==các trường hợp sử dụng của điều này.

 
secret3056 2024-05-17

Ví dụ, giả sử sinh viên đại học ngành khoa học máy tính A đang làm một dự án.
Sau khi chăm chỉ phát triển, đến gần ngày thuyết trình, A muốn trình diễn dịch vụ này.
Nhưng A mới chỉ ở mức biết viết server, hoàn toàn không biết cách dựng bất kỳ server hay instance nào.
Hơn nữa, vì đang sống trong ký túc xá nên A không thể công khai dịch vụ bằng port forwarding.
Lúc này, tunneling xuất hiện.
Nếu trên chiếc laptop trong ký túc xá gõ ngork http 8080, một URL ngẫu nhiên sẽ được cấp; khi trình diễn trong lớp học, nếu người dùng truy cập URL này thì yêu cầu HTTP sẽ được chuyển từ máy chủ ngrok sang client ngrok rồi tới chương trình server của A, nhờ đó có thể công khai dịch vụ mà không cần port forwarding riêng.

 
lastorder 2024-05-16

https://github.com/andydunstall/piko/pull/20

Tên dự án đã được đổi từ Pico thành Piko. Có vẻ việc đổi tên là do đã tồn tại một trình soạn thảo tên là pico nên phát sinh vấn đề xung đột.

 
dontdieych 2024-05-18

Nhìn câu trả lời nói là không biết pico editor, tôi cảm nhận rõ mình đúng là dân già rồi. Trước nano là pico mà hu hu

 
xguru 2024-05-16

Hôm qua mình tìm rồi tổng hợp lại và đăng lên, mà trong lúc đó đã thay đổi mất rồi hu hu. Mình đã sửa lại.