こんばんは!
今日はレプリケーションについて調べてみました!
サムネはApexのレプリケーターです。笑
先走りますが、これも複製を作るという意味で同じですね!
レプリケーションとは
レプリケーションとは「本体と複製を常に同期する技術」です。
この場合の本体とはサービスのソースを配置しておくサーバーなどが対象になります。
例えばサービスが一台のサーバーだけで稼働していた場合、そのサーバーが落ちてしまうとサービスの提供がストップしてしまいます。
そこでその対策として同じソースを配置したサーバーを待機状態で起動しておくという手段をとることが多いです。
これを冗長化と呼んだりします。
待機した複製サーバーは障害時だけでなく、普段から負荷分散の視点で本体と複製に処理を分けて行わせたりもしています。
ただし、本体と複製が常に同じデータ状態でないとどっちの情報が正しいのかわからなくなってしまいます。
そこで登場するのがレプリケーション技術です。
本体と複製の同期をリアルタイムで行い、データの齟齬がないようにしてくれます。
データのバックアップと似ていますが、バックアップはあくまである時点での記録になりますので、データの巻き戻しが出来る点は優れていますが、常に同期はされていないという違いがあります。
で、そんなレプリケーションですが、遅延が発生してしまうことがあります。
主な原因はスロークエリのような重い処理に時間がかかり、その分同期が遅れるために起こります。
重い処理とは2秒以上かかる処理だそうです。
またクエリとは簡単にいうと「要求」です。(あれ検索して!とか)
遅延が発生するとデータのパラメータに不具合が生じたりする原因となります。
対策としてはまずは重い処理となっている原因を見つけ、コードを書き換えることで結果は変えず、処理を軽くする方法を検討するなどがあります。
ここでもリーダブルコードで学んだような不要な処理は走らせないだとか、ループから抜ける手段は多い方が良いとかが使えそうですね。
ということで今日はレプリケーションについてでした!
それではまた!
2021.2.16 ガオ
コメント