フェールオーバーシステムのゴミ箱から

実際には次のような話でした。

ある企業Nでは、安価で信頼性の高いデータストレージおよび処理システムを開発する必要がありました。 データについて簡単に説明します。 クライアントから情報を受信する必要があります(税務申告などの情報は見逃します)。 多くの場合、この情報を検索する必要があり、さらに多くの場合、過去数時間にわたって入力されたデータを変更する必要がありました。 情報の損失は、いかなる場合でも受け入れられません。 火災や地震の場合を含む。 以前は、これはすべて紙で行われ、大きなフォルダーに保存されていました。 フォルダの分析のために、無意味で無慈悲な人々の部門全体がありました。



これはすべて、自動化されたベースに転送されました。 最も興味深いのは、開発にかなりの費用が支払われたが、ハードウェアにお金をまったく割り当てなかったことです。既存のハードウェアでこれをすべて上げるように依頼しました。 車両の艦隊は、道徳的に死んだ十数体のモンスターで構成されており、データベースサーバーとバックアップサーバーを上げる必要があったのは、それらのモンスターでした。





マシンは主にP3、128メガバイト、16メガバイトのビデオ、10ギガバイトのネジでした。 控えめに言っても、これは標準サーバーではありません。



各エントリはバックアップに提供されました。つまり、データベースサーバーとバックアップサーバーをミラーリングします。 最初のテスト中のデータの量とマシンの速度を考えると、データベースからサンプリングするとき、これは不快なほど長い結果を示しました。 ちなみに、ベース自体は完全に正規化されコンパクトであるため、作業速度に大きく貢献しませんでした。

データベース内のレコードの編集は非常に頻繁であったため、これは不便をもたらしました。



ブレインストーミングの後、それはいくぶん倒錯することが決定されました。

合計の合計:

サーバーA.システムのメイン作業サーバーは、当日のベースを格納し、すべての基本的なロジックを実行します。

サーバーB。2番目のサーバーは、現在の日をカウントせずに、データベースを常に保存します。 真夜中に、AからのデータがBに注がれました。ここに、期間に関するレポート用のスクリプトがあります。

サーバーC.バックアップサーバー。 深夜にオーバーフローした後、Bはバックアップし、古いバックアップを消去しました。 そして彼は常にAをミラーリングしました。



合計:サーバーのいずれかが失われた場合、すべての情報がありました。 つまり、A + BまたはCです。



サーバーCは、緊急時に備えて個別に解決されました(顧客は依然として妄想的です)



すべてのサーバーに、Linux、Apache、およびマッスルがありました。 メインコードはPHPで、バックアップはPythonで記述されています。



火災も発生しませんでした、地震も。 2年目はすべてうまくいきます。 後に、「赤いボタン」が追加されました-あなた自身の危険で働く能力と車の1つが失われた場合のリスク。 役に立たないようです)



これは自転車または過度のパラノイアだと思いますが、すべてが機能し、すべてのクラッシュテストに合格し、全員が満足しました。



%username%ですが、このシステムをどのように改善しますか?



UPD:転送するブログをアドバイスします。



All Articles