Rest.li: RESTful Service Architecture at Scale

Bài tóm tắt LinkedIn 2013 3. Quy mô lớn Độ khó: Dễ

LinkedIn · 2013 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc

Bối cảnh

  • LinkedIn cần một cách chuẩn để mô tả resource trong kiến trúc SOA cho client viết bằng nhiều ngôn ngữ, chịu được vài nghìn QPS mỗi instance, bất đồng bộ, và cho phép interface tiến hoá lâu dài.

Thay đổi chính

  • Rest.li: framework Java REST+JSON, thiết kế theo entity với động từ kiểu HTTP, batch operation chuẩn, client và server type-safe, IDL mô tả resource, kiểm tra tương thích khi API đổi.
  • R2: lớp transport REST bất đồng bộ, hiện thực HTTP bằng Netty.
  • D2 (Dynamic Discovery): ZooKeeper làm registry service và host; client tự lấy thông tin mới nhất và cân bằng tải ở phía client, tránh server quá tải.
  • Đã dùng hơn một năm (2013); mọi service mới viết bằng Rest.li và LinkedIn chủ động chuyển toàn bộ service cũ, gồm following, recommendation và network update stream trên homepage.

Bài học cho SWE

  • Chuẩn hoá giao thức giữa service (verb, batch, IDL, kiểm tương thích) là điều kiện để có hàng trăm service; discovery + load balancing phía client bỏ được load balancer phần cứng ở giữa.

Liên quan