Trong SOA, chúng ta không nên xây dựng hoặc giữ trạng thái (hoặc thiết kế các phụ thuộc) giữa máy khách và máy chủ. Điều này được hiểu. Nhưng những gì các mẫu có thể được theo sau trong trường hợp một khách hàng muốn tiêu thụ một dịch vụ thời gian thực có thể trả lại một số kết thúc mở của 'hàng'?SOA/Dịch vụ Web Pagination
Các ứng dụng web, tương tự như SOA nhưng cho phép trạng thái (phiên) đã giải quyết vấn đề này với phân trang. Yêu cầu phân trang (trong hầu hết các trường hợp, đặc biệt là với SQL) mà máy chủ lưu trữ dữ liệu và máy khách yêu cầu dữ liệu theo khối.
Nếu chúng ta xem xét các kịch bản giống như pagination cho các dịch vụ web, các mẫu sẽ tuân theo những gì sẽ vẫn cho phép các nguyên lý SOA được tuân thủ (hoặc càng gần càng tốt).
Một số quy tắc cho các nhà tư tưởng: 1) Được hỗ trợ bởi cơ sở dữ liệu SQL (do đó không có khái niệm về số hàng trong tập hợp chọn) 2) Điều quan trọng là không bỏ qua hàng hoặc sao chép hàng trong đặt trong quá trình phân trang 3) Dữ liệu có thể được chèn vào và xóa bất kỳ lúc nào vào cơ sở dữ liệu của các khách hàng khác 4) Không cần xem xét tập dữ liệu một bộ dữ liệu sống (cập nhật-có thể)
Cá nhân, tôi nghĩ rằng 1 và 2 ở trên đã đánh vần giải pháp của chúng tôi bằng cách hạn chế không gian giải pháp với các yêu cầu.
Giải pháp được đề xuất của tôi sẽ có dữ liệu (nhiều như được chọn) được lưu trữ trong một cửa hàng chỉ đọc/bộ nhớ cache, nơi nó có thể được gán một số hàng trong tập kết quả và cho phép phân trang xuất hiện trên ảnh chụp nhanh dữ liệu này. Tôi đã có cơ sở hạ tầng để lưu trữ ảnh chụp nhanh (máy chủ, bộ nhớ cache bên ngoài, memcached hoặc ehcache - điều này phải quy mô khá lớn). Kết quả của truy vấn như vậy sẽ là ID chụp nhanh và khách hàng có thể truy xuất dữ liệu từ ảnh chụp nhanh bằng API chụp nhanh (dịch vụ web) và ID chụp nhanh. Kết quả sẽ được xử lý theo cách chỉ đọc, chuyển tiếp cho các bản ghi x tại thời điểm x là một cái gì đó hợp lý.
Suy nghĩ và ý tưởng cạnh tranh, phê bình hoặc giải thưởng sẽ được đánh giá cao.
Tôi sẽ chỉ cho bạn cách twitter xử lý phân trang của họ. Điều này có thể giúp bạn https://dev.twitter.com/rest/public/timelines –