Rest.li 2.x and a Protocol Upgrade Story
Bài tóm tắt LinkedIn 2015 3. Quy mô lớn Độ khó: Trung bình
LinkedIn · 2015 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Rest.li 2.0 đổi định dạng URL (gọn hơn, nhất quán giữa compound key và complex key, biểu diễn được list/map/chuỗi rỗng) và không tương thích ngược với 1.0. Server mới hiểu cả hai, client mới gửi 2.0 tới server cũ thì hỏng. Đồ thị gọi gồm hàng chục service.
Thay đổi chính
- Handshake qua D2: phiên bản giao thức cao nhất mỗi service hiểu được lưu trong cấu hình D2; client đọc rồi chọn phiên bản theo luật. Object
Requestchỉ giữ dữ liệu, URL được sinh sau khi biết phiên bản. - Beta kín: ép 2.0 giữa các service mà server chắc chắn đã nâng cấp (frontend–backend feed homepage; trang profile–graph service), ramp bằng hệ A/B test lên 100% traffic và chạy nhiều tuần.
- Rollout có kiểm soát: mỗi tuần một nhóm service; chỉ cần sửa cấu hình D2 của service, ZooKeeper đẩy tới mọi client; client cũ vẫn gửi 1.0. Khoảng 100 service trong Q4/2014, không cần chủ service tham gia.
Bài học cho SWE
- Thay đổi giao thức không tương thích: nâng server trước, để client chọn phiên bản theo thông tin server công bố qua discovery, rollout bằng cấu hình chứ không bằng deploy client.
Liên quan
Migration không downtimeNền tảng nội bộ cho service (đường ray chung)Quản lý fleet và migrate code hàng loạt
#Protocol upgrade#Backward incompatible#Handshake#D2 config#ZooKeeper push#Closed beta#A/B ramp#Rest.li 2.0
Được nhắc tới trong
Chủ đề (3)
Công ty (1)
Bài tóm tắt (1)