laravel ioma-ghabhaltais

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:

  1. 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.
  2. 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.
  3. stòr-dàta ioma: tha a chuid fhèin aig gach neach-gabhail stòr-dàta.

Buannachdan a 'mhodail

  1. Scalability: nas fhasa an tagradh airson feadhainn ùra a mheudachadh tenant às aonais atharrachaidhean mòra.
  2. Èifeachdas cosgais: a’ lughdachadh bun-structair agus cosgaisean cumail suas le bhith a’ roinn ghoireasan am measg tenant.
  3. Cùram meadhanach: a’ sìmpleachadh ùrachaidhean is cumail suas leis nach eil ann ach aon eisimpleir den tagradh.
  4. 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 configgus 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.

Autore