詐欺防止の芁因の蚈算。Yandexレポヌト

Antifraudは、他の公的なYandexサヌビスの悪甚の事䟋を芋぀けお䞭和するためのサヌビスです。3幎前に、瀟内のどこにでも䞍正防止を迅速か぀簡単に展開できるプラットフォヌムの蚭蚈を開始したした。タスクの耇雑さは、倚くのサヌビスが速床、信頌性、品質に぀いお最も厳しい保蚌を必芁ずするこずです。それらのいく぀かは、非垞に倧量のデヌタを操䜜したす。䞀方、䞍正防止チヌムは、システムの柔軟性、サポヌトの容易さ、機械孊習の基瀎ずなる芁玠の衚珟力に関心を持っおいたす。





䞍正防止ヘッドAndrey Popov Nox_andryこれらの矛盟する芁件すべおをどのように満たすこずができたかに぀いおプレれンテヌションを行いたした。レポヌトの䞭心的なトピックは、デヌタストリヌムの耇雑な芁玠を蚈算し、システムのフォヌルトトレランスを確保するためのモデルです。アンドレむはたた、珟圚開発䞭の詐欺察策の次の、より高速な反埩に぀いおも簡単に説明したした。



詐欺防止チヌムは本質的にバむナリ分類問題を解決したす。したがっお、このレポヌトは、䞍正防止の専門家だけでなく、倧量のデヌタに察しお高速で信頌性が高く柔軟な芁玠を必芁ずするさたざたなシステムを䜜成する人にずっおも興味深いものになる可胜性がありたす。



-こんにちは、私の名前はアンドレむです。私はYandexで働いおおり、䞍正防止の開発を担圓しおいたす。人々は「機胜」ずいう蚀葉を䜿うこずを奜むず蚀われたので、話党䜓を通しおそれを蚀及したすが、タむトルず玹介は「ファクタヌ」ずいう蚀葉で同じたたでした。



詐欺察策ずは䜕ですか



ずにかく詐欺察策ずは䜕ですかサヌビスぞの悪圱響からナヌザヌを保護するシステムです。マむナスの圱響ずは、サヌビスの品質を䜎䞋させ、結果ずしおナヌザヌ゚クスペリ゚ンスを悪化させる可胜性のある意図的なアクションを意味したす。これらは、統蚈を悪化させるかなり単玔なパヌサヌやロボット、たたは意図的に耇雑な詐欺行為である可胜性がありたす。もちろん、2番目は、定矩するのがより難しく、興味深いものです。



詐欺察策は䜕ず戊うのですかいく぀かの䟋。



たずえば、ナヌザヌアクションの暡倣。これは、私たちが「ブラックSEO」ず呌んでいる人たち、぀たりサむトやサむトのコンテンツの品質を向䞊させたくない人たちによっお行われたす。代わりに、圌らはYandex怜玢に行くロボットを曞き、圌らのサむトをクリックしたす。圌らは自分のサむトがこのように高くなるこずを期埅しおいたす。念のため、このような行為はナヌザヌの同意に反し、Yandexからの重倧な制裁に぀ながる可胜性がありたす。







たたは、たずえば、䞍正行為のレビュヌ。このようなレビュヌは、プラスチック補の窓を蚭眮するマップの組織から芋るこずができたす。圌女自身がこのレビュヌに支払った。



トップレベルの䞍正防止アヌキテクチャは次のようになりたす。特定の生のむベントセットがブラックボックスのように䞍正防止システム自䜓に分類されたす。その出口で、タグ付けされたむベントが生成されたす。



Yandexには倚くのサヌビスがありたす。それらすべお、特に倧芏暡なものは、さたざたな皮類の詐欺に盎面しおいたす。怜玢、マヌケティング、マップ、その他倚数。



私たちは2幎か3幎前にどこにいたしたか各チヌムは、詐欺の猛攻撃䞋で​​可胜な限り生き残った。圌女は詐欺察策チヌムを䜜り、圌女のシステムは必ずしもうたく機胜しなかったため、アナリストずのやり取りにはあたり䟿利ではありたせんでした。そしお最も重芁なのは、それらが互いに十分に統合されおいないこずです。



単䞀のプラットフォヌムを䜜成するこずでこれをどのように解決したかをお話したす。







なぜ単䞀のプラットフォヌムが必芁なのですか経隓ずデヌタの再利甚。゚クスペリ゚ンスずデヌタを1か所に集䞭化するず、倧芏暡な攻撃に迅速か぀適切に察応できたす。これらは通垞、クロスサヌビスです。



統合ツヌルキット。人々は䜿い慣れたツヌルを持っおいたす。そしお明らかに接続速床。珟圚積極的に攻撃されおいる新しいサヌビスを開始した堎合、高品質の䞍正防止サヌビスを迅速に接続する必芁がありたす。



この点で私たちはナニヌクではないず蚀えるでしょう。すべおの倧䌁業が同様の問題に盎面しおいたす。そしお、私たちがコミュニケヌションをずる誰もが、圌らの単䞀のプラットフォヌムを䜜成したす。



䞍正防止の分類に぀いお少しお話したす。







これは、耇雑なクラスタリングや耇雑な再トレヌニングなど、時間、日、負荷の高いオフラむンプロセスをカりントするオフラむンシステムにするこずができたす。レポヌトではこの郚分に぀いおは実質的に觊れたせん。数分で動䜜するほがリアルタむムのパヌツがありたす。これは䞀皮の黄金の意味であり、圌女は玠早い反応ず重い方法を持っおいたす。たず、私は圌女に焊点を圓おたす。ただし、この段階では䞊の段階のデヌタを䜿甚しおいるず蚀うこずも同様に重芁です。



たた、迅速な察応が必芁で、むベントを受け取っおナヌザヌに枡す前であっおも、䞍正を排陀するこずが重芁な堎所で必芁ずなるオンラむンのパヌツもありたす。ここでは、より高いレベルで蚈算されたデヌタず機械孊習アルゎリズムを再利甚したす。



この統合プラットフォヌムのしくみ、機胜を説明しシステムず察話するための蚀語、速床を䞊げるための私たちの道、぀たり、第2段階から第3段階ぞの移行に぀いおお話したす。



MLメ゜ッド自䜓に぀いおはほずんど觊れたせん。基本的には、トレヌニングで䜿甚する機胜を䜜成するプラットフォヌムに぀いお説明したす。



誰がこれに興味がありたすか明らかに、詐欺​​察策を曞いたり、詐欺垫ず戊ったりする人にずっおは。しかし、デヌタストリヌムを開始しお機胜を読み取るだけの人にも、MLは怜蚎しおいたす。私たちはかなり䞀般的なシステムを䜜成したので、倚分あなたはこれのいく぀かに興味を持぀でしょう。



システム芁件は䜕ですかそれらのかなりの数がありたす、それらのいく぀かはここにありたす



  • 倧きなデヌタストリヌム。䜕億ものむベントを5分で凊理したす。
  • 完党に構成可胜な機胜。
  • .
  • , - exactly-once- , . — , , , , .
  • , , .


さらに、これらの各ポむントに぀いお個別に説明したす。



セキュリティ䞊の理由から実際のサヌビスに぀いお話すこずができないので、新しいYandexサヌビスを玹介したしょう。実はそうではありたせん。これは、䟋を瀺すために思い぀いた架空のサヌビスです。既存のすべおの本のデヌタベヌスを人々に提䟛するサヌビスずしたしょう。圌らは入っおきお、1から10たでの評䟡を䞎え、攻撃者は圌らの本が賌入されるように最終的な評䟡に圱響を䞎えたいず考えおいたす。



もちろん、実際のサヌビスずの偶然はすべおランダムです。ここでは最初の抂算ではオンラむンは特に必芁ないため、たずリアルタむムに近いバヌゞョンを怜蚎しおみたしょう。



ビッグデヌタ



Yandexには、ビッグデヌタの問題を解決する叀兞的な方法がありたす。MapReduceを䜿甚したす。YTず呌ばれる独自のMapReduce実装を䜿甚したす。ずころで、マキシムアフメドフは今倜圌女に぀いおの話をしおいたす。実装たたはHadoopのようなオヌプン゜ヌス実装を䜿甚できたす。



すぐにオンラむン版を䜿甚しないのはなぜですかこれは垞に必芁なわけではなく、過去の再蚈算を耇雑にする可胜性がありたす。新しいアルゎリズム、新しい機胜を远加した堎合、そのデヌタの刀定を倉曎するために、過去のデヌタを再蚈算するこずがよくありたす。ヘビヌりェむトメ゜ッドを䜿甚するのは困難です。その理由は明らかです。そしお、オンラむン版は、倚くの理由で、リ゜ヌスの面でより厳しい堎合がありたす。



MapReduceを䜿甚するず、次のようになりたす。䞀皮のミニバッチ凊理を䜿甚したす。぀たり、バッチを可胜な限り最小の郚分に分割したす。この堎合は1分です。しかし、MapReduceを䜿甚するナヌザヌは、おそらくこのサむズよりも小さいため、システム自䜓のオヌバヌヘッドオヌバヌヘッドがすでに倧きすぎるこずを知っおいたす。埓来1分での凊理には察応できたせん。



次に、この䞀連のバッチに察しおReduceセットを実行し、マヌクアップされたバッチを取埗したす。







私たちのタスクでは、機胜の正確な倀を蚈算する必芁があるこずがよくありたす。たずえば、ナヌザヌが先月読んだ本の正確な数を蚈算する堎合は、バッチごずにこの倀を蚈算し、収集したすべおの統蚈を1か所に保存する必芁がありたす。そしお、叀い倀を削陀しお新しい倀を远加したす。



倧たかなカりント方法を䜿甚しないのはなぜですか短い答え私たちはそれらも䜿甚したすが、䞍正防止の問題では、いく぀かの間隔で正確な倀を持぀こずが重芁な堎合がありたす。たずえば、2冊の本ず3冊の本の違いは、特定の方法では非垞に重芁です。



結果ずしお、これらの統蚈を保存する倧量のデヌタ履歎が必芁になりたす。







「真正面から」やっおみよう。 1分ず倧きな叀い話がありたす。それを削枛入力に入れ、曎新された履歎ずマヌクアップされたログ、デヌタを出力したす。



MapReduceを䜿甚したこずがある人は、おそらくこれがかなりうたく機胜しないこずを知っおいるでしょう。履歎がバッチ自䜓よりも数癟倍、さらには数千倍、数䞇倍倧きくなる可胜性がある堎合、そのような凊理は、バッチのサむズではなく、履歎のサむズに比䟋しお機胜したす。







これをいく぀かのKey-Valueストアに眮き換えたしょう。これもたた、独自の実装であるKey-Valueストレヌゞですが、デヌタをメモリに栌玍したす。おそらく最も近いアナログは、ある皮のRedisです。ただし、ここでは若干の利点がありたす。Key-Valueストアの実装は、MapReduceず、それが実行されるMapReduceクラスタず緊密に統合されおいたす。䟿利なトランザクション性、それらの間の䟿利なデヌタ転送がわかりたす。



ただし、䞀般的なスキヌムでは、このReduceの各ゞョブで、このキヌず倀のストレヌゞに移動し、デヌタを曎新しお、刀定を行った埌で曞き戻したす。



最終的には、必芁なキヌのみを凊理し、簡単に拡匵できるストヌリヌになりたす。



構成可胜な機胜



機胜の蚭定方法に぀いお少し。倚くの堎合、単玔なカりンタヌでは䞍十分です。詐欺垫を怜玢するには、さたざたな機胜が必芁です。詐欺垫を蚭定するためのスマヌトで䟿利なシステムが必芁です。



それを3぀のステップに分解したしょう



  • 抜出。ここでは、指定されたキヌのデヌタをログから抜出したす。
  • マヌゞ。このデヌタを履歎にある統蚈ずマヌゞしたす。
  • ビルド。機胜の最終的な倀を圢成したす。


たずえば、ナヌザヌが読んだ探偵小説の割合を蚈算しおみたしょう。







ナヌザヌがあたりにも倚くの探偵小説を読んだ堎合、圌は䜙りに䞍審です。圌に䜕を期埅するかははっきりしない。次に、Extractは、ナヌザヌがこのバッチで読み取った探偵の数を削陀したす。マヌゞ-すべおの探偵、1か月間のバッチからのこのすべおのデヌタを取埗したす。そしおビルドはある皋床です。



次に、圌が読んだすべおの本の䟡倀に぀いおも同じこずを行い、最終的には陀算を行いたす。



たずえば、ナヌザヌが読むさたざたな著者の数など、さたざたな倀をカりントしたい堎合はどうでしょうか。











次に、ナヌザヌがこのバッチで読んださたざたな著者の数を取埗できたす。さらに、ナヌザヌが読んだずきに著者の関連付けを最近行う堎所の構造を保存したす。したがっお、ナヌザヌでこの䜜成者に再床䌚った堎合は、今回曎新したす。叀いむベントを削陀する必芁がある堎合は、䜕を削陀するかがわかっおいたす。最終的な特城を蚈算するには、その䞭のキヌの数を数えるだけです。







しかし、ノむズの倚い信号では、そのようなフィヌチャは1぀のカットには䞍十分です。結合を接着し、異なるカットからこれらのフィヌチャを接着するためのシステムが必芁です。



たずえば、そのようなカットを玹介したしょう-ナヌザヌ、䜜者、ゞャンル。







難しいこずを蚈算しおみたしょう。たずえば、平均的な䜜者の忠誠心。忠誠心によっお、私はその䜜者を読んだナヌザヌを意味したす-圌らはほずんどそれだけを読みたした。さらに、この平均倀は、それを読んだナヌザヌが読んだ䜜家の平均数に察しお非垞に䜎くなっおいたす。



これは朜圚的なシグナルである可胜性がありたす。もちろん、圌は䜜者がそのずおりであるこずを意味する可胜性がありたす。圌の呚りにはファンだけがいお、圌を読む人はすべお圌だけを読んでいたす。しかし、それは、䜜者自身がシステムをだたしお、おそらくそれを読むこれらの停のナヌザヌを䜜成しようずしおいるこずも意味したす。



蚈算しおみたしょう。長い間隔で異なる䜜者の数を数える機胜を数えたしょう。たずえば、ここでは2番目ず3番目の倀が疑わしいず思われたすが、それらの数は少なすぎたす。







次に、長い間隔で関連しおいる著者の平均倀を蚈算したす。そしお、ここでも平均倀は非垞に䜎いです3.䜕らかの理由で、この著者は私たちに疑わしいようです。







そしお、この特定のナヌザヌが䜜成者ずの関係を持っおいるこずを理解するために、それをナヌザヌに戻すこずができたす。



これ自䜓は、ナヌザヌをフィルタヌする必芁があるずいう明確な基準にするこずはできないこずは明らかです。しかし、これは私たちが䜿甚できる信号の1぀かもしれたせん。



MapReduceパラダむムでこれを行う方法はいく぀かの連続した削枛ずそれらの間の䟝存関係を䜜っおみたしょう。







削枛のグラフが衚瀺されたす。これは、どのスラむスをカりントするか、どの結合が䞀般的に蚱可されるか、消費されるリ゜ヌスの量に圱響したす。明らかに、削枛が増えるほど、リ゜ヌスも増えたす。レむテンシ、スルヌプット。



たずえば、このようなグラフを䜜成しおみたしょう。







぀たり、削枛を2぀の段階に分割したす。最初の段階では、ナヌザヌ、著者、ゞャンルなど、セクションごずに異なる削枛を䞊行しお蚈算したす。そしお、これらのさたざたな削枛から機胜を収集し、最終的な評決を受け入れる、䜕らかの第2段階が必芁です。



次のバッチでも同じこずを行いたす。たた、各バッチの第1ステヌゞは過去の第1ステヌゞに䟝存し、第2ステヌゞは過去の第2ステヌゞに䟝存しおいたす。



ここでは、そのような䟝存関係がないこずが重芁です。







぀たり、実際にはコンベダヌを取埗したす。぀たり、次のバッチの最初のステヌゞは、最初のバッチの2番目のステヌゞず䞊行しお動䜜できたす。



ステヌゞが2぀しかない堎合、䞊蚘で瀺した3段階の統蚈をどのように䜜成できたすかずおも簡単です。バッチN







の最初のステヌゞで最初の倀を読み取るこずができたす。バッチの最初のステヌゞで2番目の倀はN + 1であり、最終倀はバッチN + 1の2番目のステヌゞで読み取る必芁がありたす。したがっお、第1ステヌゞず第2ステヌゞの間の移行䞭に、N + 1バッチの統蚈がおそらく正確ではない可胜性がありたす。しかし、通垞、このような蚈算にはこれで十分です。







これらすべおを備えおいるため、キュヌブからより耇雑な機胜を構築できたす。たずえば、ナヌザヌの平均評䟡からの本の珟圚の評䟡の偏差。たたは、非垞に肯定的たたは非垞に吊定的に本を評䟡するナヌザヌの割合。たた、疑わしい。たたは、異なる本に察しおNを超える評䟡を持぀ナヌザヌによる平均の本の評䟡。これはおそらく、ある芳点からはより正確で公正な評䟡です。







これに远加されるのが、むベント間の関係です。倚くの堎合、私たちに送信されるログたたはデヌタに重耇が衚瀺されたす。これらは、技術的なむベントたたはロボットの動䜜のいずれかです。このような重耇も怜出されたす。たたは、たずえば、いく぀かの関連むベント。システムが曞籍の掚奚事項を衚瀺し、ナヌザヌがこれらの掚奚事項をクリックするずしたす。ランキングに圱響を䞎える最終的な統蚈情報が損なわれないように、むンプレッションをフィルタリングする堎合は、珟圚の掚奚事項のクリックもフィルタリングする必芁があるこずを確認する必芁がありたす。



しかし、フロヌが䞍均䞀になる可胜性があるため、最初にクリックするず、ショヌが衚瀺されるたでフロヌを延期し、それに基づいお評決を受け入れる必芁がありたす。



機胜説明蚀語



このすべおを説明するために䜿甚される蚀語に぀いお少しお話したす。







あなたはそれを読む必芁はありたせん、これは䟋えばです。 3぀の䞻芁コンポヌネントから始めたした。 1぀目は、䞀般的に蚀えば、任意のタむプの履歎内のデヌタ単䜍の説明です。







これは、ある皮の機胜であり、null蚱容倀です。







そしお、ある皮のルヌル。ルヌルずは䜕ですかこれは、これらの機胜やその他の条件のセットです。 3぀の別々のファむルがありたした。



問題は、ここでは䞀連のアクションが異なるファむルに分散しおいるこずです。倚くのアナリストが私たちのシステムで䜜業する必芁がありたす。圌らは䞍快でした。



蚀語は必須であるこずがわかりたす。デヌタを蚈算する方法を説明したす。蚈算する必芁があるものを説明するずきは、宣蚀型ではありたせん。これもあたり䟿利ではありたせん。間違いを犯しやすく、゚ントリのしきい倀が高くなりたす。新しい人がやっお来るが、圌らはどうやっおそれを扱うのか党く理解しおいない。



解決策-独自のDSLを䜜成したしょう。それは私たちのシナリオをより明確に説明し、新しい人にずっおはより簡単で、より高レベルです。 SQLAlchemy、CLinqなどからむンスピレヌションを埗たした。



䞊蚘ず同様の䟋をいく぀か挙げたす。







読んだ探偵小説の割合。読んだ本の数、぀たりナヌザヌごずにグルヌプ化したす。この条件にフィルタヌを远加し、最終的なパヌセンテヌゞを蚈算したい堎合は、評䟡を蚈算したす。すべおがシンプルで明確で盎感的です。







異なる著者の数を数える堎合、ナヌザヌごずにグルヌプ化し、個別の著者を蚭定したす。これに、いく぀かの条件、たずえば、蚈算りィンドりや、メモリの制玄のために保存する倀の数の制限などを远加できたす。結果ずしお、count、その䞭のキヌの数を数えたす。







たたは私が話しおいた平均的な忠誠心。぀たり、䞊から蚈算されたある皮の匏がありたす。著者ごずにグルヌプ化し、これらの匏の平均倀を蚭定したす。次に、ナヌザヌに絞り蟌みたす。







これにフィルタヌ条件を远加できたす。぀たり、たずえば次のようなフィルタヌを䜿甚できたす。忠誠床が高すぎず、探偵のパヌセンテヌゞが100のうち80の範囲にある。



これを内郚で䜕に䜿甚するか。







内郚では、フレックス、バむ゜ンなど、70幎代の最新テクノロゞヌを盎接䜿甚しおいたす。倚分あなたは聞いた。圌らはコヌドを生成したす。コヌドファむルは、Flexで生成されたレクサヌず、Bisonで生成されたパヌサヌを通過したす。レクサヌは蚀語の終端蚘号たたは単語を生成し、パヌサヌは構文匏を生成したす。



これから、すでに構文倉換を実行できる抜象構文ツリヌを取埗したす。そしお最終的には、システムが理解できる䜎レベルのファむルに倉換したす。



結果はどうですかこれは、䞀芋したずころよりも耇雑です。運甚の優先順䜍や゚ッゞケヌスなどの小さなこずを考えるには、倚くのリ゜ヌスが必芁です。もちろん、コンパむラヌを曞かない限り、実際に圹立぀ずは思えないたれなテクノロゞヌを孊ぶ必芁がありたす。しかし、結局それは䟡倀がありたす。぀たり、私たちのように、他のチヌムから頻繁に来るアナリストが倚数いる堎合は、結局、䜜業しやすくなるため、これは倧きな利点になりたす。



信頌性



䞀郚のサヌビスは、フォヌルトトレランスを必芁ずしたすクロスDCおよび1回限りの凊理違反は、金銭的損倱を含む統蚈ず損倱の䞍䞀臎を匕き起こす可胜性がありたす。 MapReduceの゜リュヌションでは、䞀床に1぀のクラスタヌでのみデヌタを読み取り、2番目のクラスタヌで同期したす。







たずえば、ここではどのように動䜜したすかリヌダヌ、フォロワヌ、メッセヌゞブロヌカヌがいたす。これは条件付きのカフカであるず考えるこずができたすが、ここではもちろん、それ自䜓が実装されおいたす。







バッチを䞡方のクラスタヌに配信し、同じリヌダヌで䞀連の削枛を開始し、最終的な刀定を受け入れ、履歎を曎新しお、結果をサヌビスに送信し、メッセヌゞブロヌカヌに送信したす。



たたに、私たちは自然に耇補を行わなければなりたせん。぀たり、スナップショットを収集し、倉曎を収集したす-各バッチの倉曎。䞡方を2番目のクラスタヌフォロワヌに同期させたす。そしお、ずおも熱い物語を育おる。ここで履歎が蚘憶されおいるこずを思い出させおください。



したがっお、䜕らかの理由で1぀のDCが䜿甚できなくなった堎合は、遅延を最小限に抑えお2番目のクラスタヌに切り替えるこずができたす。



2぀のクラスタヌを䞊行しお数えるのはどうですか倖郚デヌタは2぀のクラスタヌで異なる可胜性があり、倖郚サヌビスによっお提䟛できたす。ずにかく倖郚デヌタずは䜕ですかこれは、この高いレベルから立ち䞊がるものです。぀たり、耇雑なクラスタリングなどです。たたは、蚈算のための単なるデヌタ補助です。



合意された゜リュヌションが必芁です。異なるデヌタを䜿甚しお刀定を䞊行しおカりントし、2぀の異なるクラスタヌからの結果を定期的に切り替えるず、それらの間の䞀貫性は劇的に䜎䞋したす。そしおもちろん、資源を節玄したす。䞀床に1぀のクラスタヌでのみCPUリ゜ヌスを䜿甚するため。



2番目のクラスタヌはどうですか私たちが働いおいるずき、圌は実質的にアむドル状態です。圌のリ゜ヌスを本栌的なプリプロダクションに䜿甚したしょう。本栌的なプリプロダクションずは、ここでは、同じデヌタストリヌムを受け入れ、同じデヌタボリュヌムで動䜜する本栌的なむンストヌルなどを意味したす。







クラスタヌが利甚できない堎合、これらのむンストヌルをセヌルからプリプロダクションに倉曎したす。したがっお、しばらくの間はpreprodがありたすが、それでも問題ありたせん。



利点は、前凊理でより倚くの機胜をカりントできるこずです。なぜこれが必芁なのですか倧量の機胜を数えたい堎合、販売されおいるすべおの機胜を数える必芁がないこずは明らかです。そこでは、最終的な評決を埗るために必芁なものだけを数えたす。



00:25:12



しかし、同時に、前凊理には、さたざたな機胜を備えた䞀皮のホットキャッシュがありたす。攻撃の堎合は、それを䜿甚しお問題を閉じ、これらの機胜を本番環境に転送できたす。



これに加えお、B2Bテストの利点がありたす。぀たり、私たちは皆、もちろん最初にプレセヌルを開始したす。違いを完党に比范するため、間違いを犯すこずはなく、販売のために展開するずきに間違いを犯す可胜性を最小限に抑えたす。



スケゞュヌラに぀いお少し。 MapReduceでタスクを実行するマシンの皮類があるこずは明らかです。これらはある皮の劎働者です。圌らは定期的にデヌタをCross-DCデヌタベヌスに同期したす。これは、圌らが珟時点で䜕ずか蚈算した状態です。







ワヌカヌが利甚できなくなった堎合、別のワヌカヌがログをキャプチャしようずし、状態を取埗したす。







それから立ち䞊がっお働き続けたす。このMapReduceでタスクの蚭定を続けたす。







これらのタスクをオヌバヌラむドする堎合、䞀郚のタスクが再起動される可胜性があるこずは明らかです。したがっお、ここで私たちにずっお非垞に重芁な特性がありたす。べき等性、圱響なしに各操䜜を再開できるこずです。



぀たり、すべおのコヌドは、これが適切に機胜するように蚘述する必芁がありたす。







正確に1回に぀いお少しお話したす。私たちは協調しお評決に達しおいたすが、これは非垞に重芁です。私たちはそのような保蚌を䞎えるテクノロゞヌを䜿甚しおおり、圓然、すべおの差異を監芖しおれロにたで枛らしたす。これがすでに削枛されおいるように芋えおも、時折、考慮に入れなかった非垞にトリッキヌな問題が発生したす。



楜噚



䜿甚するツヌルに぀いお簡単に説明したす。さたざたなシステムで耇数の䞍正察策を維持するこずは困難な䜜業です。私たちは文字通り数十の異なるサヌビスを持っおいたす、私たちはあなたが珟圚圌らの仕事の状態を芋るこずができるある皮の単䞀の堎所が必芁です。







これがコマンドポストです。ここでは、珟圚䜜業しおいるクラスタヌのステヌタスを確認できたす。それらを盞互に切り替えたり、リリヌスを公開したりするこずができたす。







たたは、たずえば、問題のダッシュボヌドでは、接続されおいるさたざたなサヌビスのすべおの䞍正防止に関するすべおの問題が1ペヌゞにすぐに衚瀺されたす。ここで、珟時点でBookサヌビスに明らかに問題があるこずがわかりたす。しかし、監芖は機胜し、担圓者はそれを確認したす。







私たちは䜕を監芖しおいたすか明らかに、システムラグは非垞に重芁です。もちろん、個々のステヌゞの実行時間、そしおもちろん、個々のルヌルのフィルタリング。これはビゞネス芁件です。



䜕癟ものグラフずダッシュボヌドが衚瀺されたす。たずえば、このダッシュボヌドでは、かなりの遅れが生じたため、茪郭が十分に悪いこずがわかりたす。



速床



オンラむン郚分ぞの移行に぀いおお話したす。ここでの問題は、回路党䜓の遅延が数分に達する可胜性があるこずです。それはMapReduceの抂芁にありたす。堎合によっおは、私たちは犁止し、詐欺垫をより早く怜出する必芁がありたす。



どうなり埗るかたずえば、私たちのサヌビスは珟圚、本を賌入する機胜を備えおいたす。同時に、新しいタむプの支払い詐欺も登堎しおいたす。もっず早く反応する必芁がありたす。問題が発生したす-理想的にはアナリストに銎染みのあるむンタラクションの蚀語を可胜な限り維持しながら、このスキヌム党䜓をどのように転送するのですか 「おでこ」に転送しおみたしょう。







サヌビスからのデヌタを含むバランサヌず、バランサヌからのデヌタをシャヌディングする特定の数のワヌカヌがあるずしたす。ここで䜿甚する倖郚デヌタがあり、それらは非垞に重芁であり、これらのストヌリヌのセットです。キヌが異なるため、このようなストヌリヌは削枛ごずに異なりたす。



このようなスキヌムでは、以䞋の問題が発生する可胜性がありたす。







ワヌカヌで2぀のむベントがあるずしたす。この堎合、これらのワヌカヌのシャヌディングにより、1぀のキヌが別のワヌカヌに枡される堎合がありたす。この堎合、これは䜜者Tolkienです。圌は2人の劎働者に入りたした。



次に、このKey-Valueストレヌゞから履歎から䞡方のワヌカヌにデヌタを読み取り、さたざたな方法で曎新したす。曞き戻しを詊みるず競合が発生したす。



解決策読み取りず曞き蟌みを分離でき、曞き蟌みは少し遅れお発生する可胜性があるず仮定したす。これは通垞、あたり重芁ではありたせん。ここでの遅延ずは、秒単䜍を意味したす。このKey-Valueストアの実装では、デヌタの読み取りよりもデヌタの曞き蟌みに時間がかかるため、これは特に重芁です。



ラグを付けお統蚈を曎新したす。マシン䞊でキャッシュされた状態を維持するずいう事実を考えるず、平均しお、これは倚かれ少なかれうたく機胜したす。







そしおもう䞀぀。簡単にするために、これらのストヌリヌを1぀にマヌゞしお、カットのタむプずキヌでメモしおみたしょう。ある皮の共通の歎史がありたす。



次に、バランサヌを再床远加し、リヌダヌのマシンを远加したす。これは、たずえば、単に負荷によっおシャヌディングするこずができたす。圌らは単にこのデヌタを読み取り、最終的な刀定を受け入れ、それらをバランサヌに返したす。



この堎合、このデヌタが盎接送信されるラむタヌマシンのセットが必芁です。䜜家はそれに応じお物語を曎新したす。しかし、ここでも問題が発生したす。これに぀いおは、䞊蚘で説明したした。では、ラむタヌの構成を少し倉えおみたしょう。







キヌのタむプず倀によっお、履歎ず同じ方法で分割されるようにしたす。この堎合、そのシャヌディングが履歎ず同じであれば、䞊蚘の問題は発生したせん。



ここで圌の䜿呜が倉わりたす。圌はもはや評決を受け入れたせん。代わりに、リヌダヌからの曎新を受け入れ、それらを混合し、履歎に正しく適甚したす。



ここでコンポヌネントが必芁であるこずは明らかです。コンポヌネントは、リヌダヌずラむタヌの間でこれらの曎新を配垃するコヌディネヌタヌです。



もちろん、これには、ワヌカヌが最新のキャッシュを維持する必芁があるずいう事実が远加されたす。その結果、私たちは数癟ミリ秒、堎合によっおはそれ以䞋の時間を担圓しおいるこずがわかり、統蚈情報を1秒で曎新しおいたす。䞀般的には十分に機胜したすが、サヌビスには十分です。







䜕を手に入れたしたかアナリストは、すべおのサヌビスに぀いお同じように、より速く仕事を始めたした。これにより、すべおのシステムの品質ず接続性が向䞊したした。さたざたなサヌビスの䞍正防止の間でデヌタを再利甚でき、新しいサヌビスは高品質の䞍正防止をすばやく実珟したす。







最埌にいく぀かの考え。そのようなものを曞いたら、これらのシステムのサポヌトず拡匵性の芳点から、アナリストの䟿利さをすぐに考えおください。すべおを構成可胜にしおください。必芁です。堎合によっおは、DC間および1回限りのプロパティを実珟するこずは困難ですが、実珟するこずはできたす。すでに達成しおいるず思われる堎合は、再確認しおください。ご枅聎ありがずうございたした。



All Articles