第12章デザインサマリ
マイクロサービスの開発は、C#、Javaや囲碁プログラミングを学ぶことではない - しかし、弾性伸縮環境の利点を適応し、取るためにアプリケーションを開発する方法を学ぶために、彼らは、ホスト環境のための好みを持っていない、と瞬時に起動・停止することができます
言い換えれば、我々は、クラウドネイティブアプリケーションを開発する方法を学ぶ必要があります
アンチパターンの特定と解決
今、私たちは、すべてのサンプルコードを学んできたことを、あなたはただ、開発を実行し、それらを改善するために着手することができます
この時点で、私は意思決定プロセスのためのより良い情報を提供するために、アイデアや哲学のいくつかを振り返ってみたいと思います
モニターサービスへのクリーンアップチームの例
この例では、単純なサービス管理チームとチームメンバーからスタート
後の位置を追跡するためのバックエンドサービスに付加サービスの定義は、拡張
次に、第6章、ソリューションの開発で
まず、モバイルアプリケーションによって提出されるGPSは、サービスの場所を提出チームメンバーへの座標情報を
この情報は、システムを通って流れ、最終的に生産し、ユーザインタフェースに近いイベントに関する通知を送信するには、いくつかのと直接接触しています
問題は、イベントハンドラとサービスが実際に同じデータストレージを使用しているという事実
一般的な副作用として、データベース統合層があること:最終的に正しく動作するには、一般的なデータベース構造やプログラムに依存して2つの以上のサービスが存在します
この私たちは、基になるデータストアの変更から独立していること、およびこれらのサービスのリズムを公開しないことを意味しますが、最終的にお互いに結ばれますが、独立して所望の方法で解放することはできません
この問題を解決するために、我々は、アーキテクチャを再設計することができます
新しいデザイン、イベントハンドラ、およびサービスは、同じデータストレージを使用していないという事実には
イベントハンドラは、サービスが、それは仕事の現在の位置を書き終えているという事実を呼び出します
新体制での唯一の所有権、サービスがキャッシュデータを持っているという事実その事実
別の最適化はまだ外部キャッシュを維持しながら、事実サービスは、独自のプライベートデータを保持し得ることです
減少サービスの組み合わせを議論し続けます
組み合わせたサービスは、サービス機能を完了するために、別のサービスコールに依存しています
このような呼び出しは通常、1つまたは複数のネストされた呼び出しが完了するまでブロックするために、元の発信者のニーズである、同期されています
第8章、クライアントの要求製品の詳細、特定の在庫アイテムのステータスを取得するために、インベントリサービスへの同期呼び出し中に開始したディレクトリサービスでは、唯一のを待つことができます
企業全体の広範な使用で、このアプローチは、顧客サービス側のタイムアウトと不可解なエラー報告を持つようになったとき
スタック上の場所に、ネストされた同期呼び出しが失敗を発生したため、これは、下のスタック効果の失敗は、最終的に生産するためにクライアントに戻ります
リスク軽減ブレーカーの使用
处理嵌套式同步调用的一种潜在方案是寻求一种后备机制,一种当调用链上任何位置出现失败时的统一处理方法
当后端服务出现失败时,为防止请求崩溃或者无限期等待而提供一种后备处理的做法通常称为实现了“断路器”模式
消除同步的组合模式
关于断路器和组合式服务最重要的决定并非是如何实现它们,而在于是否确实需要它们
就像我们并非永远都处在于一片乐土之中,我们也不可能总能得到理想中的微服务架构
不过,只要稍微花点时间,对问题和潜在的解决方案加以分析,找到排除常见障碍的思路,就可能避免服务组合
接下来,还要做什么
首先,也是最重要的一点就是“质疑一切”
本书的每一条建议和每一行代码都需要经过验证
本书只是一个起点,希望它能为你提供灵感,为你基于 C# 和 .NET Core 开发强大的、具有弹性伸缩能力和跨平台的微服务提供足够的技术支撑
.NET Core 需要更多的宣传和监督,以及更多人士在生产环境运用它,为完善和巩固它出谋划策,让它成为开发云原生微服务更具优势的平台
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 ([email protected]) 。