1時、予想外の致命的な事故、破壊への労働マルチスレッディング!

読者が私に尋ねた:あなたは、プログラマが、唯一の強力なプログラマであるにカウントすることができる能力の種類を持っていると思いますか?

私は答えた:プログラマが問題を解決する能力を持っています。

答えは少し抽象的だが、それは問題であなたがゆっくりと理解し、以下の記事を参照していません。

問題を解決するためにまず、能力

何年も前、私は少し新人だったとき、私は多くの場合、問題を解決するために、時間を私のリーダーシップを伝え、技術そのもの、そして私の例を与えるの画像に限定されません。

2人のプログラマが通常の2つのサーバー間のネットワーク接続かどうかを確認する方法について議論された後、長い時間のために口論。言って次のテスト、Pingがまだ知りませんか?そこで、彼らはこの問題を解決するためのPingのJavaコードを実現しました。

私が知っているが、数年後、この問題を解決するために、よりエレガントな方法がありますが、私はまだテスターの前に非常にスマートだと思います。私たちは小さな会社、プロダクトマネージャー+テストの本当に強い、機能的同等物に彼女の能力、一年後に継続的なお取引を戦いました。

私たちは説明する必要がある:問題解決のスキルと技術的能力が生産上の問題は依然として問題を解決する方法がわからないとき、私は、多くのプログラマソースはスリップをプレイ見てきた、能力の2つの間隔です。

生産上の問題が発生した場合、最高レベルのプログラマのテストで、冷静に考えて分析し、問題を解決するため、プログラマのこのレベルを達成することができ、高強度、高圧力、無変形アクション、の顔に、これは古代に礼拝することができます一般的に。

私はすぐに問題を解決するために、プログラマが非常に好きだった、私は様々な生産の問題は、最初の時間は、分析するために勉強するときにも満足しています。不親切な言葉を言って、良いプログラマは特に目立つことができ、本番環境での問題の場合には、実践を通して問題を解決するには、プログラマです。

第二に、技術は深夜の物語を共有します

01.オールド・プラットフォームと新しいプラットフォーム

同社は、古いシステム、新システムを持っています。

長年使用旧システムは、すでに1か200万日に推定1日の取引量は、現在、実際に40億を使い果たしている、システムのラインで、2013年に初めて、それがサポートできる上限を超えていました取引量。

分割システム、再建、2013年から2017年の年からは、技術チームは、最大の取引量、別の読み込みをサポートし、ほとんどのハードウェアうちに、様々なサブライブラリーサブテーブル+を書くために、Oracleデータベースを使用して古いシステムを多くの努力をしました何度も最適化された、まだ会社の成長の取引量を満たすことができません。

真実を伝えるために、チーム全体がこのように古いシステムすることができますが、また、本当に難しいです。オリジナルの建築デザインは無理がある、大きな問題を解決することはできません結局修復。同社の開発になるために新しいR&Dプラットフォームは、日々の取引量の数十億に設計された新しいプラットフォームをサポートすることができます一つのことを、しなければならない、最も重要なことは、後半に一日延長十億をサポートすることです。

ハードフェン駅、ライン上の最後に新しいプラットフォームの兄弟の後。新しいプラットフォームは、より少ないデータ移行の成功の半分よりも背ほとんどの事の焦点であるライン上にあります。
伝統的な縦型アーキテクチャを使用して、数年前から古いシステムを実行します(アーキテクチャの進化は、この記事を参照することができます?春クラウドアーキテクチャの進化の観点から話を行っている)、ビジネス、政策、さまざまな活動を、風のコントロールを一緒にこすりされています。

新しいプラットフォームは、マイクロ光サービスは何百、データベースのMySQL HAに従事し、マイクロサービスアーキテクチャを使用しています。世代間建築設計では、両方のシステムでは、旧システムの機能の一部と互換性を持つように設計された、だけでなく、いくつかの冗長性を作ったが、いずれにせよ、これら2つのシステムは時代の産物ではありません。

移行要件は、新しいプラットフォームへの古いプラットフォームからの移行は、我々は通常のトレーディング業務に影響を与えることができないということです。アナロジーは、あなたは、プロセスの動きに車輪を交換する、高速道路の走行で運転しており、このプロセスは、車はあなたが何かを感じることができないようにする必要があります、と等価です。

だから我々は、移行システムを開発し、もともとバッチに移行バッチを計画し、取引量で1または20億をカットするための新しいプラットフォーム、および(ゆっくり結果を見てリズムに応じて行くが、突然方針を来ました活動は)リズムを破壊しました。

02.新しいポリシーの変更は、によってもたらさ

関係するサードパーティ決済会社のために、多くの場合、市場環境として、いくつかの新しいポリシー(アクティビティ)を導入、いくつかの政策は比較的簡単ですが、ほとんどの政策は複雑で、多くの場合、開発を大量に必要としています。

新しいプラットフォームは、しばらくの間、切り替えられたその時、私たちはゆっくりと、それが新しいプラットフォームでは、この新しい方針で決まった、新しいプラットフォームでの一定の自信を持っています。これは、プラットフォーム上の残りの事業これには、新しいプラットフォームへのすべての古いを移行するには、夜のポリシーを実装する予定です。

起工プログラムの後、部門がその職務を遂行するために始めた、外国オペレーションセンターは、通知を発行し、我々は一度に大きな元旦のアクションを持っている必要があり、変更の種類があるかもしれない;バッチトレーニングの代理店に連絡する責任マーケティングセンター、ビジネス部門は、支店によって発行された、同社の公式文書を開始しました。

実施日の始まりを発表し、公共の数字は、同社の公式ウェブサイト、アプリケーション、メール外交は、ポリシーの変更を知らせる;我々は前進させ、顧客サービス業務は、事前に計画を立て直面するかもしれないものの問題、よく通信するポリシー床用製品センターはコーミング必要、R&Dセンター新しいポリシーは、プログラムを設立しました。

これまでで最も重要なことは、新年の夜は、新しいプラットフォームへの残りの数百万の加盟店、使い捨てのスムーズな移行を置くことができるようにすることです。

深夜03.移行

移行プログラムが何度も行ったので、私たちは、この比較的確実、まだ移行の主な原因であり、同僚が何度も確認する前に、開発環境はUAT環境は、移行テスト一週間前に終了する必要があり、事前に二週間が完了しテストしなければなりません開発およびデュアル検証をテストします。

3日間の移動距離までは、私は、プログラマは、進行状況を理解しシミュレーションテストが生産されていないことを聞いて、移行の特別費用を発見しました。問題がないことを確認した後、フィードバックの担当主要人物の時間に応じて三〇から四時間以上移動することができ見積もるため、午前1時開始、4時00:00-5:あなたは、フィニッシュ00の間を移行することができます。

実際には、移行日実行する前に、彼らは、我々が発生する可能性のある様々な状況を議論する通信を行うために、すべての部門を取って、人事部門が一緒に滞在する必要があります。最後に会った後、私はかなり良い、夜は静かな、などと感じこれは戦争です!

その夜滞在と2ダースの開発テストだけでなく、他の部門の同僚の一部、約2ダースの人12:00誰もが笑う前に、午前1時00移行時にゲームやその他の静かな瞬間を果たし、ちょうど元旦ので、オフィスは、お祝いの気持ち。

時間は、窓の外、北京、小さな星、緊張のオフィスで午前1時を飛びます。

サイド周りダースの同僚は、(ハハ、私は、圧力があるでしょうこの種のものを入れて、誰が誰であるかを推測)、プログラマが明確にこの大きな圧力を感じることができ、これらのプログラマーの移行の主な原因です。しかし、彼は前の試験に合わせて何度でも熟練した後に、データを検証するために何度も、ボタンの移行をクリックします。

データが正しい場合はまず、本番環境での移行エージェントは、検証データを開始するために関係者の実施した後、確認してください。運用・保守要員の監査ログには、開発者はデータベースエンジニアがデータを移行確認し、該当するノードが正常であることを確認した。テスターは、オペレーティング・プラットフォームのクエリデータを検証し、テスト順位スワイプテストを、すべてが正常です!

試した二つの薬剤は、以下ではすべての準備ができて何の問題は、企業の何百万人を残して、薬の何千ものシャトルアップを計画していません。プログラマは、移行のために責任がある、すべてのエージェントが、番号がプログラムを実行するように構成され、実行ボタン、小さな生産追跡ログをクリックします、すべてが正常です。

移行が完了した後のデータ、緩い上の他人、およびその他のフォローアップの作業を監視し、いくつかの人々を残します。私はまだ比較的滑らかな今夜を考えて、タバコに火をつけ、駅に戻りました。

04.事件

夜の比較的眠く早い時間私は第三タバコに火をつけたとき、プログラマの移行のための責任がある、私に来て急いで走りました。

「強い弟は、疑問が生じます!」

ハーツタバコパフ、驚いて、急いで尋ねためにタバコをスタブアウト:「?どのような問題が発生します」

移行プログラムの実行後に元のプログラマの後、我々は古いプラットフォームは、すべての数日実行した後に、この速度に応じて、10万件の事業を移行するために半時間かけた、数百万の企業の合計を、マイグレーションの進行状況を追跡してきました。

この事はとても大きいです!

あなたが午前8時前にこの事を取得しない場合、それは完全に大事故です。

私は会社が政策の実施が遅れた場合、事業者の何百万人にどのように時間のような短い期間では、断片化されたプラットフォームであり、どのように古いものと新しいデータに対処する通知情報を話す薬の何千も、不可能ワークロードではありません。

起きる状況のどのような次の日には、顧客サービス400電話が鳴りました想像し、運用スタッフは、原因物質の行為に対する補償の損失につながる可能性が会社の方針の遅れ実装に、血を吐くと通信するために...

我々は時間以内にこの問題を解決しない場合は、すぐに会社の次長を報告する必要があり、その後、夜、すべての会社の経営を推定し、同社は、フォローアップ治療プログラムを議論するために満たす必要があります。

脳の移行が失敗の重大な結果が、すべてのアイデアを圧迫するための即時の必要性を点滅ものの、最初の問題、ダウングレード、または全く救済の種類があり、最終的に分析します。

理由の分析:

クエリログした後、使用が行われ、中小機関をテストすることです生産テストでは、開発者の原因を特定するための基本的なデータを確認、しかし、異なるサイズの代行会社、最大の中核機関との間に大きな違いを無視しますデータのプロバイダは、5%-6%の全取引量のプラットフォームのために考慮することができます。

だから、中小代理店の評価の時間に応じて、確かに正確ではない、物事は私が誰を話すしませんなりました。重要な問題は、我々はすべてのソリューションに来てほしい、すぐに次を解決する方法で、対策が少し速く移動させることができるもの。

対策:

例えば、コアデータを同期するために、他のコンテンツ、その後、次の日貿易を保護するために再加工し、人工ガイドテーブルの使用に対処するためのすべてができるように、データベースエンジニアは、このプログラムを聞くことはほとんど気絶叫んだとき、以上の千を様々な他のプログラム..;テーブルは、関係が複雑で、

誰もが唯一の移行プロセスの主要な流れを見つけるために、最適化プログラムを議論する突入すると移行するために複数のスレッドを使用しません。

移行プログラムインターフェイスを提供した後、開発者がページ番号の機関を埋めるために移行する必要がある場合、各移行は、舞台裏のパスは、移行サイクルの開始、パラメータページを受け取りました。
庁内の企業は、マルチスレッドの移行が、移行エージェントのメインエントランスを使用しますが、マルチスレッドを使用していないので、我々は、これはまた、多回線速度での移行をスピードアップするための機関であるかしらながら。

ゲームのセーブ05.マルチスレッド人工

議論の後、私は移行エージェントへのマルチスレッディングは今良いプログラムでなければならないと感じていますが、シーンに書き込む場合、リスクが比較的大きい、生産実行に直接テストされていません。

そして、何がこのプログラムは、同時エージェントのマイグレーション効果を達成することができ変わりませんか?確かに!

我々は、すべての各要求は、フロントデスクの後端に応答を処理するサーブレットが割り当てられます、我々は通常、Webアプリケーションを開発することを知って、サーブレットは、実際には別のスレッドです。移行要求を行うマルチスレッドの移行剤の効果を達成することではありませんしながら、それぞれが、数ページ以上を開きますか?

プログラムは、移行前に停止した後、彼は、先に行き、ダース・エージェント、マルチスレッドマイグレーション試験を選択し、開いている4つのページながら、それぞれが異なる機関を入力して、マイグレーション試験を開始し、テスト後にすべてのものを見つけノーマル。

別のページの入力にエージェントの数十を使用して、テストの量を増加し始め、移行プログラムをクリックしている、第二同時移行の過程で急に多少の誤差が随時に報告されますました。

原因を探し始める、移行プログラムを停止し、与えられた理由に基づいてデータを共有することが判明しました。

私たちは、マルチスレッドのアクセスがあった場合、サーブレットはスレッドセーフではありません知っている、そしてグローバル共有変数スレッド安全性の問題があるだろう場合。

簡単にこの問題は、変数のスレッドを使用して、各独立変数のコピーを提供THREADLOCAL、ライン上で変更するにThreadLocalを使用して、解決するため、各スレッドは独立してコピーを対応する他のスレッドに影響を与えることなく、そのコピーを変更することができます。

この問題が解決された後に開いた複数のページを実行し続けることが、各スレッドは、ビジネス業務を処理するために、別のスレッドプールから再び呼び出されるので、半年以上の並列スレッドをTomcatは、マシンの負荷が高くなりますとき移行ロジックメンバー。

だから我々はすぐに10台のサーバーをプライマリスケジューラの移行に配備されている運用環境で10台のサーバを、見つけるために、運用、保守要員が配置されています。開発者の震えの問題を防ぐために、私が操作を行うと、メンテナンスは私に許可を与えました。

だから、自分のコンピュータ上で(私は複数の画面を使用)、それぞれ、10台のサーバー上でグループを入力するために、各15個のパケットに基づいてすべてのエージェントを移行する必要があり、その都度ページを移行プログラムのページを開きますエージェントは、移行、およびので、各サーバー上で移行エージェントを起動するためにします。

私は6回のサイクルを実行すると、データベースエンジニアはスピードアップし大幅に高速にデータを移行検出し、その移行を実施した私は、すべてのエージェントのページに2時間を過ごしました。

おそらく時間4:00、そして基本的に私の仕事は行われない、残りはゆっくりとプログラム実行してみましょう。唯一の2台のサーバーがまだ残して、ほとんどの業務データが移行された五時を、 6時00分に、移行プログラムはすべて10台のサーバを終了するとき、実行し続けます。

すべての関連データのために配置した後、我々はシュウの一口を長い間、一つ一つをチェックしました。

7時、誰もが、言ってほとんど最後の夜は生活が困難に感じていた時に、朝食を食べるために一緒にダウンしています。彼は2場合、朝の3時、私たちの上司が電話を与える、上司が感じのように見えることを冗談を言いました。

私はこのような大きな事故を考えたその時、私たちはすべてのささいなことを発射した上司は、どのように我々が最も懸念しているものを終了します。彼の仕事はどのような場合には、我々はこれらの人々がプロセスを解決するために必要なすべてのものを見つけることができます失いました。

午前9時のトランザクションを開いた後、別の後にそこにいくつかのマイナーな問題となって、彼らは小さなエリアですが、問題は、トランザクションには影響しない、人の制御グループの全体的な範囲は、夜間に移行するために、ほぼすべての午後にはあまり存在しないと主張問題と我々はスリープ状態に戻って行かなければなりません。

ときに振り返ってみると、誰も生き残っ感。

第三に、イベントレビュー

その後、我々は見落としがある多くのポイントをまとめたリカバリディスクを開きますが、これらは、この記事の焦点では​​ありません。背中資料の冒頭に私たちは、強力なプログラマは何ですか?

私たちは、この問題は特に複雑ではないことがわかります、加工技術を必要とすることは比較的簡単ですが、最も重要で最も差し迫った問題を解決するための時間です。技術はそれらの間にギャップが、また、いない技術的な自信のファンに、さまざまな問題を解決するために技術を学ぶの本質ではないので、それはそれができる最善の方法です。

圧力が駆動力であるため、技術的な人々は、圧力を楽しむことを学ぶために、圧力はあなたが成長できるようにすることです、早く早く成長遭遇。それは非常に単純なアクションかもしれ場合でも、高強度、高圧力環境の人々は、より大きな二次事故につながる可能性がある、変形することになります。

、高強度、高圧力環境で安定した心穏やかな分析を維持するだけで、あなたが本当に発見し、問題を解決落ち着か。多くの技術的な人々は、あなたは彼が忙しく見たときに問題が発生し、実際には、そのブラインド操作で考えていません。

、チェーン全体を慎重に分析を落ち着いて、場所が問題であるかもしれないものを想像して、クエリログまたは関連するコマンド、検証問題の根本はだけは本当に問題の原因を発見し、それができる、あなたはそれに対処調査にステップバイステップ自信。

移行プログラマ残したその日の夕方には、プログラマーの中核グループですが、誰が能力を持っている人に低下させる能力を持って、夕方には、キー、金のような良いプログラマを見つけるのは簡単です時間は、それが光を放射します。

多くの人々が自然に問題が発生します一部の人々はちょうど先に充電するような問題を持って、戻って辞任しました。あなたは通常、ソースコードは関係なく、よくあなたのPPTを書かれ、どのようにはるかにNiubiではありません勉強するかどうか、企業が必要とする問題が発生する時間です、上の問題を解決することができました。

誰が管理職に非常に簡単に基本的に戻って、重要な時期プログラマーでトップアップすることができます。人々は、実行中の信頼を構築するために続けているという事実は、指導者の選択に従業員を促進し、主要な考慮事項は、我々はあなたに物事を得るために保証することはできないということです。

我々は通常の手法を学ぶので、ソースコード、デザインパターンは、これらの事を勉強する必要があり、道に迷って行きませんが、知識の実用的なタイプのいくつかの研究、そしてより多くの焦点を適用する方法を検討すべきで、これらの事はあなたの重要な瞬間を保存することができます生活(職場)。

第四に、どのように有能なプログラマであります

プログラマように、どのように自分の問題を解決する能力を養うには?実践!実践!実践!練習していない場合は通常だけで強力な学習技術の入力、これらの機能はすぐに失われます。

どのように実際にはそれが、この技術よりも少ないと、プロジェクト会社は、あなたが何かをデバッグするために独自のコードを書くために空き時間を所有することができた場合、プロジェクトを行う;とき、会社の問題、他の回の問題を解決するためのマルチ同僚の問題があります、問題を解決するためのイニシアチブ、様々な問題を解決するためには、能力を高めるための最速の方法です。

練習終了後、だけでなく、ためにいくつかの最高の概要を再設定し、ログ、またはブログなどサマリレコードの内容。記録されたコンテンツは、そう常に問題を解決するために彼らの経験を豊かに、それを解決することができる検索するときに同様の問題を経験した後、あなたの知識ベースの1になります。

最後に、あなたが技術的な取得本当のビッグになりたいです!

おすすめ

転載: www.cnblogs.com/ityouknow/p/11301036.html