第6回 最適な設計はホスト時代の流儀に同じ?
システム連携を集中管理する接続マネージャの考え方 |
さて、一瞬にして大きな負荷のかかる処理をいかにしてうまくこなすか。このコントロール方法は、コンピュータアーキテクチャ的にいうと、コンピュータやサーバの台数を増やして負荷を分散させて軽減させる(負荷分散)か、あるいはアクセス数を制限する(流量制御)などの方法が基本になるでしょう。
実際の方法は千差万別で一概にはいえません。しかしサーバ・サイドJavaでは、これらの方法を工夫して、一極集中するシステム連携の負荷を軽減する仕組みが考えられています。これが「接続マネージャ」という考え方です。接続マネージャというのはミドルソフトに対するアクセスを効率的にコントロールする仕組みのことです。
図5 接続マネージャ経由で基幹システムへアクセス(業務プログラムは必ず接続マネージャ経由で基幹システムへアクセスする)
|
接続マネージャを使ってシステム連携を行う場合は、プログラムから直接、相手の基幹システムやミドルソフトに対してアクセスを行うのではありません。必ず接続マネージャを経由させて行います。この意味では、接続マネージャは、相手システムへのアクセスを中継するソフトウェアということになります。接続マネージャは、一般的に以下のような役目を持っています。
(1)事前にシステム接続を終了させ、接続負荷を軽減する役目
システム連携で負荷がかかるのは、一番初めにプログラムが相手のシステムにアクセスするときに行う接続処理だといわれています。そこで接続マネージャは、連携したい基幹システムやミドルソフトに対して、事前に他システムへとの接続を完了しておきます。
この接続作業は、例えばコンピュータ・システムを立ち上げた最初の初期処理などコンピュータ負荷の少ない時間を見計らって行われます。そしてプログラムが実際にミドルソフトにアクセスしたときに、接続マネージャが事前に接続済みの状態をプログラムに渡すことになります。負荷のかかる接続作業を接続マネージャが成り代わって行ってくれるわけですから、プログラムが複数処理されてもコンピュータ負荷が一挙に上がることが避けられます。
(2)保管した接続をプログラムに引渡し、性能アップさせる役目
接続マネージャによる事前接続が、ただ1つだけしかないと、プログラムが同時に複数動くサーバ・サイドJavaの世界では、有効ではありません。そのため接続マネージャは、事前に複数の接続を他システムに対して行います。この接続は実際に使われるか使われないかは分かりません。
しかし接続マネージャはプログラムから複数のアクセス要求がくることを見越して、接続状態を貯金しておき、プログラムが同時にアクセスを要求してくれば、順番に接続をプログラムに割り当てていきます。こうすることで、さらに接続の負荷を軽減させ全体のパフォーマンスをアップさせます。このような接続の保管機能を、接続プーリングなどともいいます。
(3)接続数をコントロールし極端な資源の利用を制限する役目
他システムにも無制限に接続できるかといえばそうではありません。相手のシステムには許容できる接続数もありますし、接続できる数によってソフトウェアの料金が決められている場合もあります。そのため接続マネージャでは、他システムへの接続を常に、ある一定の数以下に制限するように監視しています。プログラムが他システムへアクセスするためには、必ず接続マネージャを経由することになりますから、この結果、サーバ・サイドJavaの世界では、無制限のプログラムからの接続要求から他システムを守ることができるようになります。例えば接続マネージャに、他システムへの接続を50まで許すように決めておきます。プログラムからのアクセス要求が増えてくると接続マネージャはプログラムの要求に応じて、どんどん接続をプログラムに渡します。しかしプログラムに渡した接続数が50になったところで、接続マネージャは、それ以降のプログラムの接続要求を待ち状態にします。また同時に、接続マネージャは、プログラムで必要としなくなったアクセスを把握しています。もしプログラムで不要になった接続が出てきた場合(接続マネージャに接続が戻されたとき、という表現をします)、待ち状態になっているプログラムに対して、この空いた接続を渡してアクセスを成功させる役目をするのです。
3/6 |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|