「パーシステンス」の版間の差分
imported>Administrator |
|||
(2人の利用者による、間の5版が非表示) | |||
2行目: | 2行目: | ||
==概要== | ==概要== | ||
− | [[ウェブ]] | + | [[ウェブ]]の世界でパーシステンスという場合は、ほぼ[[ロードバランサー]]を咬ました複数台の[[HTTPサーバー]]で[[セッション]]を共有するためのセッションサーバー、およびその構築方法をさしている。明示的に「セッション・パーシステンス」などと記載している事例も見受けられる。 |
==ハードウェアで対応== | ==ハードウェアで対応== | ||
18行目: | 18行目: | ||
===ASP.NET: ASP.NET State Service=== | ===ASP.NET: ASP.NET State Service=== | ||
− | Windows | + | [[Windows Server]]に[[IIS]]を入れると「ASP.NET State Service」というサービスが出来上がる。これはIISの一部なのでWindows Serverでなければ利用できない。このため開発機が普通の[[Windows]]であったり、[[Mono]]や.[[NET Core]]などへの対応を考慮すると極めて非推奨である。 |
サービスを立ち上げてWeb.configのsessionStateに以下のような設定を加えることで利用できる。 | サービスを立ち上げてWeb.configのsessionStateに以下のような設定を加えることで利用できる。 | ||
33行目: | 33行目: | ||
===ASP.NET: RedisSessionProvider=== | ===ASP.NET: RedisSessionProvider=== | ||
− | [[マイクロソフト]]は[[Redis]] | + | [[マイクロソフト]]は[[Redis]]でセッションを管理する[[ライブラリ]](セッションプロバイダー)を[[オープンソース]]として公開している。 |
− | *https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider | + | * https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider |
− | マイクロソフトの意図としては[[Azure]] | + | マイクロソフトの意図としては[[Azure]]でのセッション管理にAzure Redis Cacheを使えという思し召しなのだろう。Azure Redis Cacheはいたって普通のRedisなのでローカルにRedisサーバーを立ち上げてもそのまま利用できる。いたって普通のRedisなのでプラットフォームに依存せず、[[スケールアウト]]もする。現状でもっとも推奨される方法であると思われる。 |
利用には[[NuGet]]から入れられるのが手っ取り早い。 | 利用には[[NuGet]]から入れられるのが手っ取り早い。 | ||
− | *Microsoft.Web.RedisSessionStateProvider | + | * Microsoft.Web.RedisSessionStateProvider |
− | *https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider | + | * https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider |
− | + | 設定方法はマイクロソフトの公式サイトに日本語の資料があるのでこれを見るのが手っ取り早い。 | |
*https://azure.microsoft.com/ja-jp/documentation/articles/cache-asp.net-session-state-provider/ | *https://azure.microsoft.com/ja-jp/documentation/articles/cache-asp.net-session-state-provider/ | ||
49行目: | 49行目: | ||
==参考文献== | ==参考文献== | ||
− | {{ | + | {{reflist}} |
{{stub}} | {{stub}} |
2016年4月1日 (金) 07:45時点における最新版
パーシステンス(英語:persistence)とは、直訳すると「存続」という意味である。
目次
概要[編集 | ソースを編集]
ウェブの世界でパーシステンスという場合は、ほぼロードバランサーを咬ました複数台のHTTPサーバーでセッションを共有するためのセッションサーバー、およびその構築方法をさしている。明示的に「セッション・パーシステンス」などと記載している事例も見受けられる。
ハードウェアで対応[編集 | ソースを編集]
パーシステンスの主な実現方法としては高性能なロードバランサー製品を用いる方法がある。高性能なロードバランサー製品には接続は同一のHTTPサーバーにだけ接続しつづけるという機能が付いている。これを使えば共有セッションを保持するサーバーを用意しなくても個々のサーバー内で完結できる。またアプリケーション側での対応が不要であるためプロプライエタリなものや、プログラムの改変をしている場合じゃねぇデスマーチに陥った案件などでは活躍する。
アプリケーションで対応[編集 | ソースを編集]
アプリケーションでパーシステンスに対応する方法としてはデータベースにセッションを保存するという方法がある。この際に用いるデータベースは一般的なRDBMSでもよいが、セッションという単純なデータ構造、かつ頻繁な読み書き、かつスケールアウトしたい要件ではRedisなどのNoSQLを用いるのが現実的である。
PHP: memcached[編集 | ソースを編集]
PHPではセッションの保存先にmemcachedを指定できる。memcachedを別サーバーにすることでHTTPサーバーをDNSラウンドロビンで単純に複数台設置しても簡単に対応できる。
php.iniで設定するのが手軽である。
session.save_handler = memcached // コメントアウトをはずす session.save_path = "tcp://localhost:11211" // 追記
ASP.NET: ASP.NET State Service[編集 | ソースを編集]
Windows ServerにIISを入れると「ASP.NET State Service」というサービスが出来上がる。これはIISの一部なのでWindows Serverでなければ利用できない。このため開発機が普通のWindowsであったり、Monoや.NET Coreなどへの対応を考慮すると極めて非推奨である。
サービスを立ち上げてWeb.configのsessionStateに以下のような設定を加えることで利用できる。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10" />
</system.web>
</configuration>
ASP.NET: RedisSessionProvider[編集 | ソースを編集]
マイクロソフトはRedisでセッションを管理するライブラリ(セッションプロバイダー)をオープンソースとして公開している。
マイクロソフトの意図としてはAzureでのセッション管理にAzure Redis Cacheを使えという思し召しなのだろう。Azure Redis Cacheはいたって普通のRedisなのでローカルにRedisサーバーを立ち上げてもそのまま利用できる。いたって普通のRedisなのでプラットフォームに依存せず、スケールアウトもする。現状でもっとも推奨される方法であると思われる。
利用にはNuGetから入れられるのが手っ取り早い。
- Microsoft.Web.RedisSessionStateProvider
- https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider
設定方法はマイクロソフトの公式サイトに日本語の資料があるのでこれを見るのが手っ取り早い。