べき乗等性の浅談
2057 ワード
概要
べき乗等性はもともと数学上の概念であり,式:f(x)=f(f(x))が成り立つ数学的性質であってもよい.プログラミング分野で用いられる場合、
べき乗等性は分布式システム設計において非常に重要な概念であり、この性質を持つインタフェースは設計時に常にこのような理念を持っている:
べき乗等には2つの次元があります.1つは空間次元のべき乗等、すなわちべき乗等のオブジェクトの範囲です.個人ですか、機構ですか.ある取引ですか、あるタイプの取引ですか.2つは時間次元のべき乗等です.すなわち、べき乗等の保証時間です.数秒ですか、数分ですか、永久ですか.
ニーズによってソリューションが異なり、難易度やコストも異なります.
べき乗等性適用領域
このようなシーンを考えてみてください.電子商取引プラットフォームで支払った後、ネット上の原因でシステムが支払いに失敗したことを提示したので、もう一度支払いをしました.完成したら、ネットバンクをチェックして、システムに2回減額されたことを発見しました.これはどんな体験ですか.
上記の問題の原因は、1回目の支払いで実際に支払いに成功したが、情報が戻ったときにネットワークが中断し、システムの誤審を招いた可能性がある.例えば、1回目の支払いは確かに失敗したが、2回目の支払いで事故が発生し、支払い要求が重複して送信されたなどである.1回の支払いの過程で、すべての段階で問題が発生する可能性があります.私たちはどのようにこのような問題が引き起こしたリスクを回避しますか?
べき乗等性はこのような問題を解決する方案の一つであるため、電子商取引、銀行、インターネット金融などのデータの正確性に対する要求が高い分野では、この特性は非常に重要な地位を持っている.
べき乗などの一般的な考え方
1. MVCC:####
マルチバージョン同時制御、楽観的なロックの実装では、データの更新時にデータを持つバージョン番号を比較する必要があり、バージョン番号が一致しない操作は成功しません.例えばブログのいいね回数が自動的に+1のインタフェース:
各バージョンでは成功する機会は1回しかありません.失敗したら再取得する必要があります.
2.脱重表:####
データベース・フォームの特性を利用してべき乗を実現するなど、テーブルに一意性インデックスを構築し、あるデータが実行されると、後続の同じリクエストが正常に書き込まれないことを保証するのが一般的です.
例はやはり上述のブログのいいねの問題で、一人でいいねを繰り返すのを防ぐために、1枚の表を設計して、ブログidとユーザーidをバインドして唯一のインデックスを創立して、ユーザーがいいねを押すたびに表の中に1本のデータを書いて、このようにいいねを繰り返すデータは書くことができません.
3.TOKENメカニズム:###
このメカニズムは比較的重要で、適用範囲が広く、多種の異なる実現方式がある.その核心思想は,操作ごとに一意性の証明書,すなわちtokenを生成することである.1つのtokenは、操作の各フェーズで1回の実行権しかなく、実行に成功すると実行結果が保存されます.重複するリクエストに対して、同じ結果を返します.
電子商取引プラットフォームを例にとると、電子商取引プラットフォームの注文idは最も適したtokenである.ユーザーが注文すると、注文の生成、在庫の削減、クーポンの削減など、多くの段階を経験します.
各段階の実行時に、まずその受注idがこのステップを実行したかどうかを検出し、実行されていない要求に対して、操作を実行し、結果をキャッシュし、実行されたidに対して、直接前の実行結果を返し、何の操作もしない.これにより、操作の重複実行の問題を最大限に回避でき、キャッシュされた実行結果もトランザクションの制御などに使用できます.
まとめ
べき乗等性は分布式分野の利刃であり、それぞれの有志と分布式分野のプログラマーはその設計思想を熟知しなければならない.
べき乗等性はもともと数学上の概念であり,式:f(x)=f(f(x))が成り立つ数学的性質であってもよい.プログラミング分野で用いられる場合、
, ,
を意味する.べき乗等性は分布式システム設計において非常に重要な概念であり、この性質を持つインタフェースは設計時に常にこのような理念を持っている:
, ,
.べき乗等には2つの次元があります.1つは空間次元のべき乗等、すなわちべき乗等のオブジェクトの範囲です.個人ですか、機構ですか.ある取引ですか、あるタイプの取引ですか.2つは時間次元のべき乗等です.すなわち、べき乗等の保証時間です.数秒ですか、数分ですか、永久ですか.
ニーズによってソリューションが異なり、難易度やコストも異なります.
べき乗等性適用領域
このようなシーンを考えてみてください.電子商取引プラットフォームで支払った後、ネット上の原因でシステムが支払いに失敗したことを提示したので、もう一度支払いをしました.完成したら、ネットバンクをチェックして、システムに2回減額されたことを発見しました.これはどんな体験ですか.
上記の問題の原因は、1回目の支払いで実際に支払いに成功したが、情報が戻ったときにネットワークが中断し、システムの誤審を招いた可能性がある.例えば、1回目の支払いは確かに失敗したが、2回目の支払いで事故が発生し、支払い要求が重複して送信されたなどである.1回の支払いの過程で、すべての段階で問題が発生する可能性があります.私たちはどのようにこのような問題が引き起こしたリスクを回避しますか?
べき乗等性はこのような問題を解決する方案の一つであるため、電子商取引、銀行、インターネット金融などのデータの正確性に対する要求が高い分野では、この特性は非常に重要な地位を持っている.
べき乗などの一般的な考え方
1. MVCC:####
マルチバージョン同時制御、楽観的なロックの実装では、データの更新時にデータを持つバージョン番号を比較する必要があり、バージョン番号が一致しない操作は成功しません.例えばブログのいいね回数が自動的に+1のインタフェース:
public boolean addCount(Long id, Long version);
update blogTable set count= count+1,version=version+1 where id=321 and version=123
各バージョンでは成功する機会は1回しかありません.失敗したら再取得する必要があります.
2.脱重表:####
データベース・フォームの特性を利用してべき乗を実現するなど、テーブルに一意性インデックスを構築し、あるデータが実行されると、後続の同じリクエストが正常に書き込まれないことを保証するのが一般的です.
例はやはり上述のブログのいいねの問題で、一人でいいねを繰り返すのを防ぐために、1枚の表を設計して、ブログidとユーザーidをバインドして唯一のインデックスを創立して、ユーザーがいいねを押すたびに表の中に1本のデータを書いて、このようにいいねを繰り返すデータは書くことができません.
3.TOKENメカニズム:###
このメカニズムは比較的重要で、適用範囲が広く、多種の異なる実現方式がある.その核心思想は,操作ごとに一意性の証明書,すなわちtokenを生成することである.1つのtokenは、操作の各フェーズで1回の実行権しかなく、実行に成功すると実行結果が保存されます.重複するリクエストに対して、同じ結果を返します.
電子商取引プラットフォームを例にとると、電子商取引プラットフォームの注文idは最も適したtokenである.ユーザーが注文すると、注文の生成、在庫の削減、クーポンの削減など、多くの段階を経験します.
各段階の実行時に、まずその受注idがこのステップを実行したかどうかを検出し、実行されていない要求に対して、操作を実行し、結果をキャッシュし、実行されたidに対して、直接前の実行結果を返し、何の操作もしない.これにより、操作の重複実行の問題を最大限に回避でき、キャッシュされた実行結果もトランザクションの制御などに使用できます.
まとめ
べき乗等性は分布式分野の利刃であり、それぞれの有志と分布式分野のプログラマーはその設計思想を熟知しなければならない.