Cuir an gnìomh ioma-ghabhaltas ann an Laravel
Tha sùbailteachd frèam Laravel a’ leigeil leinn cuideachd ailtireachd ioma-ghabhaltais a chuir an gnìomh.
Is e ailtireachd bathar-bog a th’ ann an ioma-ghabhaltas anns a bheil aon eisimpleir de thagradh a’ frithealadh grunn thagraidhean teachdaiche.
Anns an dreuchd seo, nì sinn sgrùdadh air bun-bheachd ioma-ghabhaltas ann an Laravel, na buannachdan aige, agus mar a thèid a bhuileachadh. Bheir sinn sùil cuideachd air na rèiteachaidhean riatanach, eisimpleirean còd practaigeach, agus ceumannan gus dèanamh cinnteach gu bheil an tagradh ioma-mhàladair agad a’ ruith gu rèidh.
Faodar smaoineachadh air gach neach-gabhail mar neach-ceannach air leth leis an dàta aca fhèin air leth bho luchd-gabhail eile.
Ùine leughaidh tuairmseach: 5 minuti
Dè a th’ ann an Ioma-ghabhaltas?
Is e ailtireachd a th’ ann an ioma-ghabhaltas a leigeas le aon iarrtas aoigheachd a thoirt do dh’iomadh neach-gabhail (luchd-ceannach) leis an dàta agus an rèiteachadh aca. Tha dàta gach neach-gabhail air leth bhon fheadhainn eile, a’ dèanamh cinnteach à dìomhaireachd agus tèarainteachd dàta. Faodar ioma-ghabhaltas a chuir an gnìomh ann an diofar dhòighean, nam measg:
- Singilte stòr-dàta, Sgeama roinnte: uile
tenant
bidh iad a 'roinn an aon rud stòr-dàta agus na h-aon bhùird. - stòr-dàta singilte, Patterns sgaradh: i
tenant
bidh iad a 'roinn an aon rud stòr-dàta ach tha am pàtran aca fhèin. - stòr-dàta ioma: tha a chuid fhèin aig gach neach-gabhail stòr-dàta.
Buannachdan a 'mhodail
- Scalability: nas fhasa an tagradh airson feadhainn ùra a mheudachadh
tenant
às aonais atharrachaidhean mòra. - Èifeachdas cosgais: a’ lughdachadh bun-structair agus cosgaisean cumail suas le bhith a’ roinn ghoireasan am measg
tenant
. - Cùram meadhanach: a’ sìmpleachadh ùrachaidhean is cumail suas leis nach eil ann ach aon eisimpleir den tagradh.
- Eòlas cleachdaiche leasaichte: Àrainneachdan gnàthaichte airson diofar
tenant
.
Cur an gnìomh MultiTenancy Laravel
Chaidh grunn innealan a leasachadh airson Laravel gus cuideachadh le bhith a’ buileachadh ailtireachd ioma-ghabhaltais, leithid:
hyn/multi-tenant
- Stiùirich ailtireachd bathar-bog anns a bheil aon eisimpleir de thagradh a’ frithealadh ioma neach-gabhail (no cunntasan cleachdaiche), a’ dèanamh cinnteach à tèarainteachd dàta agus prìobhaideachd airson gach buidheann de luchd-cleachdaidh. Bidh an inneal seo gu tric air a chleachdadh gus seirbheisean SaaS (Bathar-bog-mar-a-Seirbheis) a thoirt seachad.tenancy/tenancy
: fuasgladh sùbailte airson ioma-ghabhaltas Laravel. Chì sinn cuid de fheartan gu h-ìosal:- Gabhaltas fèin-ghluasadach: An àite a bhith ag atharrachadh rèiteachadh a 'phròiseict agad, bidh am pasgan gu fèin-obrachail a' tòiseachadh ioma-ghabhaltas air a 'chùl. Atharraich na ceanglaichean ris an stòr-dàta, caches air leth, cuir ro-leasachain ri siostaman faidhle, agus barrachd;
- Dealachadh dàta fèin-ghluasadach: Bidh am pasgan gu fèin-ghluasadach a’ toirt fios do luchd-gabhail: stòr-dàta, tasgadan, siostam fhaidhlichean, ciudha agus stòr Redis. Chan fheum thu dad atharrachadh ma tha thu air do phròiseact a sgrìobhadh mu thràth;
- Amalachadh le pacaidean eile: Leis gu bheil am modh fèin-ghluasadach ag atharrachadh an ceangal ris an stòr-dàta àbhaisteach, cleachdaidh iomadh pasgan eile an ceangal seo. Mar eisimpleir, faodaidh tu a chleachdadh Laravel Nuadh taobh a-staigh tagradh neach-gabhail gus goireasan luchd-gabhail a riaghladh;
- Ailtireachd air a stiùireadh le tachartas: Bidh loidsig tòiseachaidh ioma-ghabhaltais, loidsig cruthachaidh iar-mhàladair, agus gnìomhachd eile a’ tachairt tro thachartasan. Faodaidh tu gach taobh a ghnàthachadh ;
- Gabhaltas ioma-stòr-dàta: Mura h-eil thu airson an dòigh-obrach stòr-dàta gach neach-gabhail a chleachdadh, tha am pasgan a’ tabhann teamplaidean gus teamplaidean a chuingealachadh don neach-gabhail gnàthach, eadhon airson teamplaidean nach eil ceangailte gu dìreach ris an neach-gabhail;
San artaigil seo cleachdaidh sinn an inneal tenancy/tenancy
, a tha na bhunait làidir airson ioma-ghabhaltas ann an Laravel. Mar sin chì sinn ceum air cheum mar a chuireas tu ioma-ghabhaltas an gnìomh ann an Laravel.
Ceum 1: Stàlaich a 'phacaid
An toiseach, leig leinn am pasgan a stàladh tenancy/tenancy
leis an fhear a rinn an t-òran:
feumaidh neach-sgrìobhaidh gabhaltas / gabhaltas
Ceum 2: Foillsich do rèiteachadh
Rachamaid air adhart a-nis gus na faidhlichean rèiteachaidh pacaid fhoillseachadh:
reiceadair artisan php: foillseachadh --tag = gabhaltas
Ceum 3: Suidhich an Tenancy
Rachamaid air adhart a-nis gus am faidhle a rèiteachadh tenancy.php
, a tha suidhichte san eòlaire config
gus coinneachadh ri feumalachdan tagraidh.
Mar sin tha cuid de pharaimearan mar a leanas:
- storage_driver, stòradh: Faodaidh tu an draibhear stòraidh neach-gabhail a rèiteachadh. Mar eisimpleir, faodaidh tu taghadh eadar Redis no a stòr-dàta. Leugh tuilleadh air an duilleag draibhearan stòraidh.
- tenant_slighe_namespace: Suidhich an t-àite-ainm rianadair a thathar a’ cleachdadh airson slighean a-steach
routes/tenant.php
. - saoradh_raointean: Ma thèid tadhal air ainm aoigheachd a tha an làthair san raon seo, thèid na slighean a-steach
tenant.php
cha tèid an clàradh, a' toirt cothrom dhut na h-aon slighean a tha san fhaidhle sin a chleachdadh. - stòr-dàta: Stèidhich ceangal gu stòr-dàta airson dàta luchd-gabhail.
- sgaoileadh: Dèan rèiteachadh air a’ cheangal Redis airson an dàta neach-gabhail agad.
- tasgadan: A’ dol an àite eisimpleir de
CacheManager
gus taic a thoirt do ioma-ghabhaltas. - siostaman faidhlichean: Dèan rèiteachadh air an àite stòraidh faidhle airson luchd-gabhail.
Airson stiùireadh iomlan leugh na sgrìobhainnean.
Ceum 4: Cruthaich teamplaid an Neach-gabhail
Cruthaich teamplaid Tenant
gus gach neach-gabhail a riochdachadh san tagradh agad:
dèan neach-ciùird php: modail Neach-gabhail -m
Anns an fhaidhle imrich, mìnich structar a 'bhùird tenants
:
Sgeama :: cruthaich ('luchd-gabhail', gnìomh (Blueprint $ table) {
$ table-> id();
$table->string('ainm');
$table->string('domain') -> air leth();
$ table-> clàran-ama();
});
Ceum 5: Comharraich an neach-gabhail agad
Comharraich do neach-gabhail le àrainn no fo-àrainn. Bidh sinn an uairsin ag ùrachadh a’ mhodail de Tenant
gus loidsig aithneachaidh neach-gabhail a ghabhail a-steach:
namespace App\Modailean;
cleachd Illuminate \ Database \ Eloquent \ Model;
cleachd Gabhaltas \ Aithneachadh \ Cùmhnantan \ Neach-gabhail mar Chùmhnant Luchd-gabhail;
cleachd Gabhaltas \ Buaidh \ Ceanglaichean \ Cùmhnantan \ Stòr-dàta Solarachadh;
clas Neach-gabhail a’ leudachadh Modail a’ cur an gnìomh Cùmhnant Tenant, a’ toirt seachad Stòr-dàta
{
protected $fillable = [ 'ainm', 'àrainn'];
gnìomh poblach getTenantKey (): sreang
{
tilleadh ‘domain’;
}
gnìomh poblach getConnectionName (): sreang
{
tilleadh ‘tenant’;
}
gnìomh poblach configureDatabase($ event): falamh
{
$event->useConnection('neach-gabhail', [
'database' => 'neach-gabhail_' . $this-> id,
]);
}
}
Mar sin tha trì dòighean ann: getTenantKey
gus an àrainn aithneachadh, getConnectionName
gus an ceangal a chomharrachadh e configureDatabase
gus an ceangal ris an DB ceart a stèidheachadh.
Ceum 6: Dèan rèiteachadh air an Middleware
Bidh sinn a 'cruthachadh an mearachdan meadhanach a bheir an aire air atharrachadh ceangal an stòr-dàta stèidhichte air neach-gabhail:
dèan neach-ciùird php: middleware TenantMiddleware
Anns a 'mheadhan-bathair, bidh sinn a' comharrachadh an neach-gabhail agus a 'stèidheachadh an ceangal ris stòr-dàta:
namespace App\Http\Middleware; cleachdadh Dùin; cleachd Gabhaltas \ Aithneachadh \ Cùmhnantan \ Neach-gabhail; clas TenantMiddleware { làimhseachadh gnìomh poblach ($ iarrtas, dùnadh $ an ath rud) { $hostname = $request-> getHost(); $tenant = Neach-gabhail::far a bheil('domain', $hostname) -> an toiseach(); ma tha ($ neach-gabhail) {neach-gabhail ($ neach-gabhail); } tilleadh $next($request); } }
Mar sin leig leinn clàradh an middleware TenantMiddleware
in app/Http/Kernel.php
:
protected $middlewareGroups = [
'web' => [
// other middleware...
\App\Http\Middleware\TenantMiddleware::class,
],
];
Ceum 7: Migration
de Tenant
Cruthaich imrich a tha sònraichte do neach-gabhail le bhith a’ sònrachadh an ceangal neach-gabhail:
dèan neach-ciùird php: imrich create_posts_table --create = puist --path = stòr-dàta / imrich / neach-gabhail
Anns an fhaidhle imrich, mìnich structar clàr an neach-gabhail:
Sgeama :: ceangal ('neach-gabhail') -> cruthaich ('puist', gnìomh (Blueprint $ table) {
$ table-> id();
$table->string ('tiotal');
$table->text('susbaint');
$ table-> clàran-ama();
});
Ceum 8: Imrich Luchd-gabhail
Cruthaich òrdugh gus imrich a tha sònraichte do luchd-gabhail a dhèanamh:
dèan neach-ciùird php: àithne MigrateTenants
Anns an fhaidhle àithne, ruith na h-imrich airson gach neach-gabhail:
namespace App\Console\Commands;
cleachd Illuminate\Console\Command;
cleachd App\Models\Tenant;
clas MirateTenants a’ leudachadh Command
{
dhìon $signature = 'imrich:luchd-gabhail';
protected $description = 'Ruith imrich airson a h-uile neach-gabhail';
làimhseachadh gnìomh poblach ()
{
Neach-gabhail :: a h-uile () -> gach (gnìomh (Tenant $tenant) {
neach-gabhail ($ neach-gabhail);
$this->call('imrich', [
'--database' => 'neach-gabhail',
'--path' => 'stòr-dàta/imrichean/neach-gabhail',
'--force' => fìor,
]);
});
$this->info('Chrìochnaich imrich neach-gabhail gu soirbheachail.');
}
}
Ceum 9: Seed
del Tenant
Cruthaich sìol gus dàta sònraichte neach-gabhail a shìolachadh:
neach-ciùird php: seeder TenantSeeder
Anns an t-soladair, mìnich an dàta airson a chur:
Stòr-dàta namespace\Seeders;
cleachd Illuminate \ Database \ Seeder;
cleachd App\Models\Tenant;
clas TenantSeeder a’ leudachadh Seeder
{
ruith gnìomh poblach ()
{
Neach-gabhail :: cruthaich ([
'name' => 'Neach-gabhail a h-Aon',
'domain' => 'tenant1.example.com',
]);
Neach-gabhail :: cruthaich ([
'name' => 'Neach-gabhail a Dhà',
'domain' => 'tenant2.example.com',
]);
}
}
Ruith an sider:
php artisan db:seed --class=TenantSeeder
Suidheachaidhean practaigeach
Iarrtasan SaaS
Tha ioma-ghabhaltas air leth freagarrach airson tagraidhean SaaS far am feum grunn luchd-ceannach (luchd-gabhail) an aon aplacaid a chleachdadh fhad ‘s a chumas iad an dàta aca air leth.
Buidhnean mòra
Faodaidh buidhnean le iomadh roinn ioma-ghabhaltas a chleachdadh gus dàta roinneil a riaghladh leotha fhèin san aon iarrtas.
Aoigheachd air a riaghladh
Faodaidh solaraichean aoigheachd ioma-ghabhaltas a chleachdadh gus seirbheisean stiùirichte a thabhann do dh’ iomadh neach-ceannach le àrainneachdan iomallach.