BigHeadCrew
Junior Member
Thím cũng đang ở Bay Area hảStack này nghe quen quen nhỉ, liệu mình có quen nhau không ta
Thím cũng đang ở Bay Area hảStack này nghe quen quen nhỉ, liệu mình có quen nhau không ta
Tầng database: SQLServer
Server ứng dụng: Tomcat
Backend: Java SpringBoot
Front end: Angular 9
Hệ thống đang build dạng SAAS, muti-tenant (Multi-tenant app with database-per-tenant)
View attachment 670721
Tại sao chọn "database-per-tenant",:muốn data độc lập dữ các tenant, sau này vendor muốn tự quản lý db của họ thì vẫn ok. họ sử dụng app của mình thôi.
Hậu quả đạt được:
- Môi lần migrate db là cực hình đó , dùng flyway nhưng phải tự handle để migratt all data.
- Dùng RDS, mà SQL server cho có 100db trên 1 instance sqlserver. đang tìm cách giải quyết
- Config mỗi request mở transaction đến 1 db thôi cũng khó nhằn, chạy batch job cũng vật.
Distributed system thôi thím. có 4 con:Cũng đang implement 1 platform multi tenacy bác cho hỏi backend bên đó dạng monolith hay microservices nhỉ. Nếu là microservices thì bác implement phần authen thế nào
Bác xử lý vụ connection pool như nào với mô hình này? Mỗi tenant có 1 pool hay thế nào bác?Distributed system thôi thím. có 4 con:
auth-service.
system-service: quản lý tenant và system user
domain-service: biz và domain user.
notifycation-service: notify message và để hiện thị user đang edit giống google sheet ấy
auth-service thì dùng jwt kiêm trả mỗi request, xem user có quyền ko, có quyền mà bị lock, hay đã bị remove quyền khi đang login...
Với PHP mà 500k CCU là hơi bị khủng đó nha, thằng Lazada xưa cũng éo đạt đc số đó đâu.FrontEnd: php
Backend: php
DB: mysql
report: viết sql chạy export ra excel
web CCU 500k request/giây
Hết.
Đúng rồi thím, 1 tenant 1 pool đang để 15 connection mỗi pool.Bác xử lý vụ connection pool như nào với mô hình này? Mỗi tenant có 1 pool hay thế nào bác?
Làm microservice thì bạn nên có 1 api gateway và sẽ authen ở đây.Cũng đang implement 1 platform multi tenacy bác cho hỏi backend bên đó dạng monolith hay microservices nhỉ. Nếu là microservices thì bác implement phần authen thế nào
Làm microservice thì bạn nên có 1 api gateway và sẽ authen ở đây.
Vấn đề là có nhiều microservices và mỗi service lại có nhiều connection đến các tenant db
Thì ở phần api gateway bạn check tenant id nào thì authen tenant đó . Làm multiple tenant thì request kiểu gì chả gửi kèm tenant id .Vấn đề là có nhiều microservices và mỗi service lại có nhiều connection đến các tenant db
Thím có bao nhiêu tenant? Như này thì số lượng connection sẽ bùng nổ rất nhanh và server chạy db cần cực khỏe.Đúng rồi thím, 1 tenant 1 pool đang để 15 connection mỗi pool.
Thím ấy chia mỗi tenant 1 db mà, các db sẽ dạng này: service_id_tenant_id: mỗi service lại có db riêng cho từng tenant.Thì ở phần api gateway bạn check tenant id nào thì authen tenant đó . Làm multiple tenant thì request kiểu gì chả gửi kèm tenant id .
Còn microservice mà lại chia kiểu này thì hơi dở thông thường sẽ chia theo service và service đó sẽ có 1 db riêng . Trong table thì thêm cột tenant_id . Còn chia như này thì làm mono rồi.
Nếu prartice thì oke, chứ đừng dùng kiến trúc ms khi chưa hiểu hết nó.
kiểu multi tenancy mình hiểu bên bạn đang dùng dạng tenancy per database. Và mình đang hiểu bạn định làm authenticate trên database, kiểu database A có 1 bảng user, database B có 1 bảng user. Nên bạn sẽ mắc 1 cái là thiết kế cái phần authen đó như nào.
Thím có bao nhiêu tenant? Như này thì số lượng connection sẽ bùng nổ rất nhanh và server chạy db cần cực khỏe.
phép tính thô thiển của em:
100 tenant x 5 service x 15 connection = 7500 connection.
Sẽ rất lãng phí tài nguyên nếu các tenant ko sinh lời hoặc lưu lượng truy cập thấp...
Thím có bao nhiêu tenant? Như này thì số lượng connection sẽ bùng nổ rất nhanh và server chạy db cần cực khỏe.
phép tính thô thiển của em:
100 tenant x 5 service x 15 connection = 7500 connection.
Sẽ rất lãng phí tài nguyên nếu các tenant ko sinh lời hoặc lưu lượng truy cập thấp...
Practice thôi chứ team quyết định theo monolith phase này rồi. Mình đang viết và sẽ publish package hỗ trợ cho việc triển khai multi tenancy trên node
Practice thôi chứ team quyết định theo monolith phase này rồi. Mình đang viết và sẽ publish package hỗ trợ cho việc triển khai multi tenancy trên node
Thím có tạo db động luôn ko. Khi đăng ký là tự động tạo db rui access được luôn
Sent using vozFApp