序文
APIゲートウェイのために、業界は以下の分類/シーン、その下に分かれているようです。
- 指向のWebアプリケーション
- モバイルアプリの場合
- 指向パートナーOpenAPIを
- 指向パートナーExternalAPI
- その他。。。
.NETのコアを持つ名誉2.1は、外部サービス・ゲートウェイプロジェクトを再構築8月、18年間で、このプロジェクトのデータ容量の役割は、実際に企業内困窮企業を許可する、パブリックを提供することができます。
このプロジェクトの分類によると、ために分類されるべきであるOpenAPIのパートナーに直面しています。
このプロジェクトは、使用を開始ナンシーそれが本当に外部に提供するためにリリースした後、コードの能力を高めることである、時間外の新しい機能を提供するために、その時に書いたが、何かが、比較的、小規模な責任の両方を提供することでした同僚は、人々をフラッシュする必要があるので、それはまだ許容です。
7月、毎回外部を提供し、コードを変更するには、より多くの能力の18年間で、私が提案した再建に立つことはできません。
このプロジェクトは、のCentOSの6 4c4g上に展開する仮想マシンの上に(実際には、多くのマシンは、各マシンは、基本的には約20%と、CPUのメモリの10%であることを使用して、コールは約15万ドルの日に有効な量についてです)、Jexusでホスティングします。グランドエントランスはnginxのであるので、最終的に流れは以下のとおりです。
要求 - > nginxの - > Jexus - > DOTNET
ここに関与このゲートウェイのために言うべきことがいくつかあります。
統一認証
この1による認証は、ユーザー名とパスワードがに対処するための方法であると、これは検査工程の徴候として理解することができ、まだ非常に古代の習慣です。
ここでは、送信を暗号化パラメータがあり、一つのパラメータが明確に伝達され、二つの形式をサポートしています。
実際には、いくつかの企業は、私はパスの暗号化、復号化の後に123〜123のプレーンテキストであなたに直接渡すことができないと感じ、その後、あなたが取引を行ってみましょう。
サービスを制限
機能を制限すること、あまりにも頻繁に呼び出すための発信者を制限することで、この制限は、ビジネスシナリオに基づい秒、日、月3つのレベルに分かれています。
別の発信者、異なるデータ・サービスは、さまざまな制約があり、これはRedisのに基づいて行われます。
ルートの転送
HttpClientFactoryを使用して転送をルーティング。
開始時または使用steeltoeをサービス登録と発見を処理するために、しかし、調査結果は、使用することは容易ではないし、その後、多くのサービスもあるユーレカにアクセスしないので、最終的にはそこには処理サービスの登録と発見がありませんが、ドメイン名を直接使用することが要求されています。
リストラパラメータ
ユーザーのリクエストパラメータは、基本的には、もちろん、我々はいくつかの特別なニーズを排除することはできません、下流のサービスを経由して渡されます。
ここで説明する簡単な例があり、発信者がちょうど広州の天気をチェックするように、深センは彼が天気予報をチェックしたくなかった、とサービスは、チェックインすることができ、これらの二つの都市の下流にあるので、下流伝えるために、いくつかの特別なパラメータが存在しなければなりませんサービス。
この時間は、我々は再編成を行うために上院にユーザーを必要とする、再構築に対処するためにjオブジェクトを使用して、下流のサービスのための固定パラメータ形式の特殊な状況に相当するだろう、JSONパラメータは、下流のサービスを投げました。
リンクトレース
時々チェーンは非常に複雑で呼び出すので、呼び出しチェーンを完了するために、発信者の要求を記録するために、ここでのゲートウェイは、時間のルーティングおよび転送が一緒に、過去に発行される、リクエストヘッダにTRACEIDを生成します。
ログからのすべてのログが、このシステムTRACEIDを通じて見つけることができるようにロギングが、また一緒に統一され、このTRACEIDを記録します別のサービス。
ヒューズダウングレード
ダウンストリームサービスは、必ずしも、時にはデータベース処理のタイムアウトので、ネットワーク要求がタイムアウトし、一定の期間で、その結果、通常の状態に応答しない、通常のサービスの7 * 24時間を保証するものではありません。
ゲートウェイは、すべて実際のサービス要求に行かなければならないはず、といくつかの時間のために切断する。この時間は、障害は、呼び出し元に直接戻ります。
この1はの組み合わせですHttpClientFactoryとポリー達成するために、多くの問題を保存します。
合計タイムサービス
合計時間は、あなたがお金を作りたいので、呼び出し側にお金を払う必要があり、このゲートウェイの大きなコアであると言うことができます。アウトカウントごとのお金は基本です。
実装は似ている、前にブログを書きました。
ビジネス指標のモニタリング
最後の時間に一定の範囲を知っている必要があり、別の呼び出し側の状況を呼び出し、異なるデータサービス(など効果的に成功、失敗、合計数、)
ここでプロメテウス、プロメテウス、インデックスデータを書き込み、その後、このデータを引き出す組み合わせていく責任があるGrafanaを別の看板を示すことにします。
ロギング
ロギングは1ログを呼び出すことで、一つはログで、2つのカテゴリに分類されます。
ログが現在拡大しているNLogを、カフカ投げたデータは、その後、Elasticsearchに運用・保守データをポンプがあるでしょう。
それはカフカに失敗した場合にデータが失われるので、ログファイルに注文を配置します、カフカの換気を避けるため、その後、Filebeatによって収集するには、その後、Elasticsearchを投げました。
graylogの形で最後のショー、のようなもの
コールログには、基地の一つで、呼び出し元の集落であるので、この重要性はまだ高価なことができます。
現在使用して非同期は、フォールトトレランスを追加書き込み。最終的に落ちるデータベースのログのアーカイブを呼び出します。
反復更新
プログラムを更新することは避けられないので、困難の一部を減らすことができ、良好なリリースプロセスがあります。再建後が、プロジェクトはまた、3回更新します。
ここで公開し、植物に試験前からのパイプラインを動作させるために、次に送信するために移動しますCDです。
概要
このプロジェクトは非常に小さいが、と記述することもできますが、「小さいながらも完全に形成さ。」
最後に、最近ギャング弟行う募集人、頼みますか?どれでも、あなたはヘクタール私に連絡することができます。