Tomcatについて
Spring Boot 基礎
参考文献
Spring Bootとは
- Spring Bootとは、構成するのが簡単なSpringアプリケーションフレームワークのこと
- Springベースのアプリケーションは、構成作業が大変。
- Spring Bootは構成作業をほとんど行わずにSpringアプリケーションを稼働中の状態にできる。
- 必要な構成はアノテーションによって行う
- WebコンテナーとしてTomcatがデフォルトで内蔵されている。
スターター
Spring Bootでは、スターターを使用することで依存関係の構成作業を最小限に抑える。
例
- spring-boot-starter-web : Spring MVCとコミコミアプリケーション・Tomcatを使用したRESTful Webサービスを作成する場合に使用する。
- spring-boot-starter-jdbc : JDBC接続をプールする場合に使用するスターター。TomcatのJDBC接続プールベース。
自動構成
デフォルトで、Spring Bootは'@EnableAutoConfiguration'アノテーションによってアプリケーションが自動的に構成される。 自動構成は、クラスパスに指定されているJARと、Beanがどのように定義されているかに基づいて行われる。
グローバルIPアドレスの利用 NAPT
NATとは
LANに接続した複数のPCからインターネットを利用するには、各PCのプライベートIPアドレスをグローバルIPアドレスに変換する機能が必要。これの機能をNATという。
コンピュータはプライベートIPアドレスという住所をもっている。しかし、インターネットと接続する時は、このプライベートIPアドレスは使えなず、グローバルIPアドレスを使う必要がある。なぜならプライベートIPアドレスはプライベートな空間のみで使用可能だから。このプライベートIPとグローバルIPを変換するのがNAT。
NAPTとは
NAPTとは、ポート番号を使い1つのグローバルIPから複数のプライベートIPに変換できるようにする仕組み。 言い換えると、1つのグローバルIPで複数のコンピュータがインターネットできるようになる仕組み。
NATの欠点として、1つのグローバルIPからは1つのプライベートIPしか変換することができない。1つのグローバルIPで複数のプライベートIPが変換できたら経済的に嬉しい。そこで、プライベートIPからグローバルIPに変換する際にそのコンピュータのポート番号を使って上げてる。これによって、1つのグローバルIPから複数のプライベートIPに変換する時に、どのプライベートIPに変換すれば良いか識別できるようになる。
参考
分散データベースの2相コミット
2相コミット (2フェーズコミット) とは
複数のデータベースの内容を更新する時に、処理が矛盾しないように整合性を保つための手法。 具体的には、複数のデータベースを更新する前に、全てのデータベースが更新可能かどうかを確かめてから、一斉に更新を行う。
2相コミットの処理ステップ
- マスターのサーバーから複数のデータベースへ更新可能か否かを問い合わせる
- それぞれのデータベースは自身が更新可能か否かをマスターのサーバーへ返す
- マスターのサーバーは全てのデータベースが更新可能であることを確認した後に、一斉にデータベースの更新を行う
- 更新処理の途中であるデータベースが更新処理を失敗した場合、失敗したということをマスターのサーバーへ返す。
- 失敗を知ったサーバーは全てのデータベースへ、ロールバックの指示を出し前の状態へ戻す。
更新可能か問い合わせるフェーズと、実際に更新するフェーズがあることから2フェーズコミットと呼ばれる。
バッファサイズの計算
バッファとは
バッファとは、処理速度の異なる装置間にデータを転送する際に、速度のギャップを埋めるためにデータを一時的に蓄える機能。
例
以下のような転送を考える。
装置A ---送信量S---> バッファ ---受信量R---> 装置B
装置Aは1秒当たり送信量Sに対して、装置Bの受信量はRである。また、S > Rの時、装置Bは受け止めきれない。
この時、バッファでは1秒間でS - R
のデータ量を位置保存すれば装置Bがパンパンになることを防げる。
バッファサイズの計算
上記の条件で、T秒間データを転送すると、バッファサイズはT * (S - R)
必要になる。
仮想記憶システムのページング方式
主記憶
CPUが直接書き込みができるメインメモリの事。
仮想記憶
主記憶上にある実記憶領域の1部を必要に応じてハードディスクなどに退避させることで、見かけ上、物理的な容量より大きな主記憶領域を利用できるようにする仕組み。
ページング方式
仮想記憶システムにおいて、主記憶からハードディスク上にデータを退避させる時に、ページと呼ばれる一定の大きさの区画に分割して、ページ単位で内容を管理する方式。
主記憶の容量がパンパンになってきたら、使っていないページをハードディスクに退避させて、新しい容量を確保する。そのページを使いたくなったらハードディスクから取り出し、また新たなページをハードディスク退避させる。これによって実容量より大きな容量を使うことができる。
RAID (Redundant Array of Inexpensive Disks)
RAIDとは
RAIDとは、複数の磁気ディスクを並列に接続して、信頼性の向上やアクセスの拘束を図る手法。 RAIDには複数の種類がある。
RAID 0
RAID 0とは、データを複数のディスクに細分化して書き込み、アクセスを高速化する方式。(ストライピング)
RAID 1
RAID 1とは、データを複数のディスクに2重に書き込む方式。(ミラーリング)
RAID 5
RAID 5とは、データとパリティデータを複数のディスクに分散して書き込む方式。
パリティとは
パリティとはデータの一部が破損した場合に、復元するためのコード。RAID 5はRAID 0と同様にデータを分散させて保存している。つまり同じデータは複数のディスクに保存されていない。RAID 0の場合は、あるディスクが破損した場合は、そのディスクに保存されたデータは復元することはできないが、RAID 5の場合は、パリティと残りのデータを元に破損したデータを復元することができる。