Chính xác thì ứng dụng nhiều người thuê là gì?


13

Theo định nghĩa có sẵn trực tuyến là " Multi-tenancy là một kiến ​​trúc trong đó một phiên bản duy nhất của một ứng dụng phần mềm phục vụ nhiều khách hàng ". Điều đó có nghĩa là tôi có trang web Nhà hàng hoặc Trường học và tôi cung cấp quyền truy cập vào nhà hàng hoặc trường học khác để sử dụng ứng dụng của mình với dữ liệu của riêng họ bằng cách sử dụng thông tin xác thực của họ mà tôi cung cấp khi họ mua sản phẩm quản lý trường học của tôi. Giống như trang web của tôi cũng giống như schoolmanagement.com và tôi cung cấp tiểu lĩnh vực khác nhau để trường khách hàng khác nhau như school1.schoolmanagement.com & school2.schoolmanagement.com nhưng mã là giống đằng sau cả những tên miền phụ. Cả hai trường có chức năng hoặc chủ đề khác nhau phụ thuộc vào cơ sở dữ liệu riêng biệt của họ. Vì vậy, tôi cần phải cung cấpschoolman Quản lý.com để đăng nhập và một khi khách hàng của tôi đăng nhập dựa trên thông tin đăng nhập của họ, tôi chuyển hướng đến url tương ứng của họ, ví dụ: school1.schoolman Quản lý.com .

Đây là sự hiểu biết của tôi về ứng dụng nhiều người thuê. Là sự hiểu biết của tôi phải không? Có bất kỳ ứng dụng nhiều người thuê trực tuyến mà tôi có thể đi qua.


1
Ý bạn là gì khi "Có ứng dụng nhiều người thuê trực tuyến nào tôi có thể trải qua."? Bạn có muốn lấy nguồn, hoặc thử làm người thuê nhà, hoặc chạy với tư cách là chủ nhà không? Như bạn lưu ý, lưu trữ tên miền là một ví dụ phổ biến cho nhiều khách thuê, với cả các công ty lưu trữ lớn và nhỏ. Google Apps for Business (hoặc bất kể thương hiệu hiện tại là gì) cũng là một ứng dụng nhiều đối tượng thuê trải rộng.
Kristian H

1
Cho đến nay, bạn đang đi đúng hướng. Nhiều người thuê nhà liên quan đến quyền sở hữu dữ liệu. Dữ liệu được phân chia theo tenans (chủ sở hữu). Các ứng dụng được sử dụng giống nhau vì một lý do đơn giản: nền kinh tế quy mô. Việc lưu trữ dữ liệu cũng có thể giống nhau hoặc có thể khác nhau đối với mỗi tenan. Dữ liệu không được chia sẻ - có thể truy cập được giữa những người thuê (hoặc thường thì họ không biết, cho đến nay tôi biết).
Laiv

@KristianH cảm ơn ví dụ lưu trữ tên miền, tôi đã nhận nó.
Nomi Ali

@Laiv Vì vậy, chúng tôi có thể có cơ sở dữ liệu khác nhau cho mỗi khách hàng với cấu hình riêng biệt của họ?
Nomi Ali

2
Đúng. Đó là cách tốt nhất. Nhưng nó cũng là một thứ đắt tiền. Khi tôi nói các cơ sở dữ liệu khác nhau, chúng có thể là: a) Các lược đồ hoặc trường hợp db khác nhau trong cùng một RDBMS hoặc b) RDBMS hoàn toàn khác nhau.
Laiv

Câu trả lời:


8

Vâng, đó là nó. Nhưng định nghĩa của wikipedia là không đủ chung. Nó không giải quyết các kiến ​​trúc đa tầng hoặc các dạng kiến ​​trúc mới hơn như SOA hoặc microservice.

Multi-tenancy là về hệ thống phần mềmcách ly dữ liệu . Vài ví dụ:

  • một hệ thống nhiều tầng với một cơ sở dữ liệu duy nhất có thể là nhiều đối tượng thuê. Ví dụ: một hệ thống SAP bao gồm một phụ trợ cơ sở dữ liệu và một vài máy chủ ứng dụng web hiển thị theo cách có thể mở rộng các dịch vụ web. Nó là nhiều đối tượng thuê: bạn có thể thêm một khách hàng mới mà không thay đổi cài đặt phần mềm đang chạy và một số khách hàng có thể sử dụng hệ thống mà không bao giờ biết về nhau. Dữ liệu được cách ly hoàn toàn (công nghệ độc quyền).
  • hệ thống của bạn bao gồm một hoặc một số quy trình chạy dịch vụ web được tiếp xúc với các khách hàng khác nhau thông qua các tên miền khác nhau (nhưng nó vẫn là các quy trình chạy trên máy chủ). Việc cách ly dữ liệu đạt được với các cơ sở dữ liệu riêng biệt. Đó chắc chắn là nhiều người thuê nhà.
  • một hệ thống microservice có thể chạy một số bộ dịch vụ web được ghép lỏng lẻo, mỗi bộ sử dụng một cơ sở dữ liệu vi mô riêng. Nếu cần để mở rộng quy mô, bạn có thể bắt đầu các bản sao mới của cùng một dịch vụ siêu nhỏ và họ sẽ thông qua một số tính năng đăng ký tìm đồng nghiệp của họ và tự động kết nối với họ, cung cấp cho người dùng hành vi của một ứng dụng. Sau đó, có hai kịch bản có thể:
    • nếu, khi bạn muốn phục vụ một khách hàng mới, bạn phải bắt đầu một nhóm microservice riêng biệt mới và tổ chức rằng microservice cho một khách hàng chỉ kết nối với các dịch vụ siêu nhỏ liên quan đến cùng một khách hàng, sau đó là một bên thuê.
    • nhưng nếu bạn có thể phục vụ khách hàng mới bằng cách sử dụng các phiên bản đang chạy (và microservice mới sẽ chỉ cần cho hiệu suất), thì đó là nhiều khách thuê

1

Tôi muốn nói có, sự hiểu biết của bạn về cơ bản là chính xác. Ứng dụng này được chia sẻ bởi nhiều khách hàng và dữ liệu của từng khách hàng được đưa vào cơ sở dữ liệu. Chia sẻ cùng một mã mà không có dữ liệu của các khách hàng khác nhau trong cùng một cơ sở dữ liệu có thể sẽ không được coi là đa nhiệm.


2
@NomiAli Không, tôi sẽ không xem xét điều đó. Đó là dập tắt một môi trường riêng biệt cho mỗi khách hàng. một trong những lợi ích của multitenant là cơ sở dữ liệu và phần mềm được nâng cấp cho tất cả khách hàng cùng một lúc. Một triển khai, và tất cả mọi người là trên phiên bản mới nhất. Những gì bạn đang nói là mỗi khách hàng có cài đặt riêng biệt. Tôi cho rằng bạn có thể có một cơ sở mã được chia sẻ nhưng cơ sở dữ liệu khác nhau, nhưng điều đó thật ngu ngốc vì bạn cần phải cực kỳ cẩn thận về các thay đổi DB của mình, làm cho nó đắt hơn, đánh bại mục đích của đa nhiệm.
Andy

1
@NomiAli Một lược đồ cho mỗi khách hàng thậm chí còn có nhiều nhược điểm hơn so với cơ sở dữ liệu trên mỗi khách hàng, điều này thậm chí còn khó quản lý hơn vì bạn phải chạy cùng một tập lệnh chỉ thay đổi tên lược đồ. Một lần nữa, nó không phải là không thể, nhưng quan điểm của một ứng dụng đa nhiệm là giảm chi phí cho nhà cung cấp phần mềm; những điều bạn đang hỏi về việc đẩy chúng lên.
Andy

2
Vì vậy, nếu cơ sở dữ liệu cô đơn của tôi, nơi chứa tất cả các khoản thuê nhà bị sập hoặc bị xâm phạm ... Việc giảm chi phí sẽ đi đâu? Và điều gì xảy ra khi mỗi tenan có nhu cầu khác nhau về tài nguyên và hiệu suất? Điều gì nếu họ muốn có quyền truy cập vào lưu trữ dữ liệu? ... Đúng. Lưu trữ dữ liệu khác nhau trên mỗi tenan và các lược đồ khác nhau là đa nhiệm. Ở đây, chiến lược kinh doanh và các dịch vụ chúng tôi muốn cung cấp cho khách hàng thd quan trọng hơn các chi tiết triển khai. Đa thuê nhà là một tính năng, một giá trị khác biệt. Càng gần với nhu cầu của khách hàng, càng tốt.
Laiv

2
Nó có thể khiến bạn thích phần
mềmengineering.stackexchange.com/q/340531/222996

4
Bạn nói quá về khía cạnh đa cơ sở dữ liệu một chút. Nhiều cơ sở dữ liệu chỉ là một quyết định thiết kế; bạn có thể có nhiều cơ sở dữ liệu chia sẻ cùng một lược đồ và sử dụng tập lệnh để cập nhật tất cả chúng cùng một lúc. Tất cả các ứng dụng nhiều người thuê phải tách dữ liệu của mỗi khách hàng khỏi các khách hàng khác; cơ chế mà điều này được thực hiện là một chi tiết thực hiện và phụ thuộc vào các yếu tố như mức độ cô lập mong muốn, v.v.
Robert Harvey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.