Đây là một câu hỏi kết thúc mở với rất nhiều câu trả lời có thể phụ thuộc vào những gì bạn đang cố gắng làm. Tuy nhiên, tôi sẽ thêm một vài điều như một câu trả lời, vì một nhận xét sẽ không đủ lớn.
Dịch vụ này sẽ hoạt động như một nhóm kết nối cơ sở dữ liệu (Tôi nghĩ rằng hơn 2000 kết nối trên cơ sở dữ liệu sẽ gây ra sự cố);
Vâng đó là một ý tưởng tốt. Bạn giữ một số lượng nhỏ hơn các kết nối được mở và bạn sử dụng lại chúng khi yêu cầu đến dịch vụ. Nhưng bạn cần biết các yêu cầu sẽ được phục vụ nhanh như thế nào và mỗi yêu cầu sử dụng cơ sở dữ liệu bao nhiêu, nếu không một nhóm nhỏ có thể dễ dàng cạn kiệt và các yêu cầu khác sẽ bị chặn trong khi chờ kết nối cơ sở dữ liệu được phát hành.
Bộ nhớ đệm có thể giúp ở đó, để trả về dữ liệu đã tìm nạp (như tôi đã nói, tùy thuộc vào những gì bạn đang cố gắng thực hiện - nếu các truy vấn là duy nhất bạn không thể lưu trữ nhiều bộ đệm).
Cũng lưu ý rằng kích thước nhóm sẽ được nhân với số lượng dịch vụ bạn đặt tại chỗ. Một vài dịch vụ và bạn có thể sử dụng kích thước nhóm cơ sở dữ liệu lớn; Nhiều dịch vụ hơn và bạn cần giảm kích thước nhóm, để bạn có cùng số lượng kết nối được mở vào cơ sở dữ liệu.
Có thể có một cơ sở dữ liệu với nhật ký vận chuyển đến cơ sở dữ liệu chỉ đọc khác để phục vụ một số truy vấn;
Cơ sở dữ liệu có thể dễ dàng trở thành nút cổ chai của bạn. Quá nhiều kết nối và / hoặc quá nhiều truy vấn và bạn có thể phá vỡ nó. Tại thời điểm đó, không có vấn đề gì khi bạn có thể mở rộng quy mô dịch vụ của mình theo bất kỳ số nào. Tất cả các yêu cầu cuối cùng sẽ đạt được cùng một cơ sở dữ liệu.
Có nhiều cách khác nhau để bảo vệ nó: bộ nhớ đệm tôi đã đề cập (tùy thuộc vào trường hợp sử dụng của bạn), sao chép một số thông tin trên các máy chủ khác để phục vụ một số truy vấn như bạn đề cập, CQRS (tùy thuộc vào trường hợp sử dụng của bạn), sử dụng quan hệ so với không liên quan (tùy thuộc vào trường hợp sử dụng của bạn một lần nữa), v.v.
Lưu ý rằng khi bạn phân phối dữ liệu như vậy, định lý CAP bắt đầu được áp dụng. Hãy nhận ra điều đó vì bạn có thể cần phải thỏa hiệp giữa tính nhất quán và tính sẵn có.
Nó sẽ mở rộng tốt hơn khi chúng ta có thể thêm nhiều máy hơn để chạy các dịch vụ REST;
Có, dịch vụ REST sẽ mở rộng quy mô, nhưng như tôi đã đề cập ở trên, nếu bạn không bảo vệ cơ sở dữ liệu, điều đó có thể dễ dàng trở thành nút cổ chai.
Có thể sử dụng HTTPS với nén vì lý do bảo mật và tiết kiệm băng thông;
Vâng, cũng như những thứ khác ... có thể bạn muốn xác thực / ủy quyền sau này, v.v.
Có thể thực hiện một số thay đổi tập trung trên các thực thể kinh doanh mà không cần triển khai lại hơn 2000 máy;
Có, nhưng đến một mức độ nhất định và không phải tất cả các loại thay đổi. Nếu bạn thực hiện một thay đổi đột phá, bạn cũng sẽ cần phải cập nhật các khách hàng. Vì vậy, hãy suy nghĩ về một chiến lược để cập nhật các máy khách lên phiên bản mới nhất hoặc nếu bạn cho phép các máy khách cũ vẫn hoạt động và sử dụng ứng dụng.
Nó tích hợp tốt hơn với các hệ thống khác (chỉ cần trỏ đến dịch vụ REST).
Có, nhưng điều đó có nghĩa là khách hàng cho dịch vụ của bạn mà có lẽ bạn không thể kiểm soát.
Nếu bạn thực hiện một thay đổi đột phá và bạn có một chiến lược tốt để cập nhật hơn 2000 máy khách JavaFX thì không có vấn đề gì. Nhưng nếu các máy khách khác tồn tại và bạn không có quyền kiểm soát chúng, bạn có thể cần triển khai phiên bản trên dịch vụ REST và hỗ trợ nhiều hơn một phiên bản cho đến khi mọi người có thể cập nhật lên phiên bản mới nhất.
Như tôi đã nói, nó phụ thuộc vào những gì bạn đang cố gắng làm. Nhìn chung, bạn là một ý tưởng tốt. Nhưng hãy lưu ý rằng mọi thứ sẽ không miễn phí chỉ vì bạn dán dịch vụ REST trước cơ sở dữ liệu.
Chỉ 2 xu của tôi!