Lamp-Cloud マイクロサービス スキャフォールディングの前身は zuihou-admin-cloud で、3.0.0 から Lamp-Cloud という名前に変更されました。Lamp プロジェクトのメンバーです。
Lamp-Cloud マイクロサービス スキャフォールディングは、SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE) に基づく SaaS マイクロサービス スキャフォールディングであり、ユーザー管理、リソース権限管理、ゲートウェイを含む、統合された承認および認証バックグラウンド管理システムを備えています。 API、分散トランザクション、大きなファイル ブレークポイントの断片化再開などの複数のモジュールは、マルチビジネス システムの並行開発をサポートし、バックエンド サービスの開発足場として使用できます。コードは簡潔で構造が明確なので、学習やプロジェクトでの直接使用に適しています。コアテクノロジーは、Nacos、Fegin、Riadfdson、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Redis、RiadfdsitMQ などの主要なフレームワークとミドルウェアを使用します。
ランプ クラウド マイクロサービス スキャフォールディング関数
1. サービスの登録と検出と呼び出し
Nacos に基づくサービスの登録と検出は、Feign を使用してサービス相互変調を実装することで、リモート呼び出しに HTTP リクエストを使用する場合にローカル メソッドを呼び出すのと同じコーディング エクスペリエンスを実現できます。開発者は、これがリモート メソッドであることをまったく認識していません。これは HTTP リクエストであると認識されます。
2. サービス認証:
JWTを利用することでサービス間のスケジューリングの権限検証を強化し、内部サービスのセキュリティを確保します。
3. 負荷分散
サービスによって保持される残りの部分は、一般的に使用される node.js と nginx に加えて、Spring Cloud シリーズの zuul と riadfdson を使用して、通常のゲートウェイ制御と負荷分散を実行できます。このうち、海外プロジェクトからの拡張および参照は、電流を制限する JWT Zuul 電流制限プラグインをベースとしています。
4. 定着機構
サービスの分散により、サービス間の呼び出しの「なだれ」を回避するために、Hystrix はサービス間の呼び出しの「なだれ」を回避するヒューズとして使用されます。
5. モニタリング
Spring Boot Admin を使用して、各独立したサービスの実行ステータスを監視します。タービンを使用して、インターフェイスの実行ステータスと呼び出し頻度をリアルタイムで表示します。Zipkin を使用して、各サービス間の呼び出しチェーンを表示します。
6. リンク通話監視
Zipkin を使用して、マイクロサービスのフルリンク パフォーマンス監視を実現し、全体的なディメンションからローカルなディメンションまでさまざまなインジケーターを表示し、アプリケーション全体にわたるすべてのコール チェーン パフォーマンス情報を一元的に表示します。これにより、全体的なパフォーマンスとローカルなパフォーマンスを簡単に測定し、パフォーマンスのソースを簡単に見つけることができます。これにより、本番環境でのトラブルシューティング時間が大幅に短縮されます。それを使ってできること
リクエスト リンクの追跡と迅速な障害位置特定: ビジネス ログと組み合わせたコール チェーンを通じて、エラー情報を迅速に特定できます。 視覚化: 各ステージには時間がかかり、パフォーマンス分析が実行されます。 依存関係の最適化: 各呼び出しリンクの可用性、サービスの依存関係を整理して最適化します。 データ分析、リンクの最適化: ユーザーの行動経路を取得でき、概要分析は多くのビジネス シナリオに適用されます。
7. データ権限
Mybatis に基づく DataScopeInterceptor インターセプターを使用した単純なデータ権限の実装
8. SaaS (マルチテナント) 非侵入型ソリューション
Mybatis インターセプターを使用してすべての SQL をインターセプトし、デフォルトのスキーマを変更してマルチテナント データ分離を実現します。 プラグ可能性をサポートします。
9. 2次キャッシュ
キャッシュの操作には J2Cache が使用され、1 次キャッシュはメモリ (Caffeine) を使用し、2 次キャッシュは Redis を使用します。 多数のキャッシュ読み取りが発生すると、L2 ネットワークがシステム全体のボトルネックになるため、L1 の目標は、L2 への読み取り数を減らすことです。 このキャッシュ フレームワークは主にクラスター環境で使用されます。また、アプリケーションの再起動によるキャッシュのコールド スタート後のバックエンド ビジネスへの影響を回避するために、単一マシンで使用することもできます。
10. エレガントなBean変換
Dozer コンポーネントを使用して DTO、DO、PO、その他のオブジェクトを最適化および変換する
11. フロントエンドとバックエンドでの統一されたフォーム検証
厳密なフォーム検証では、通常、フロントエンドとバックエンドの検証を同時に行う必要があります。ただし、従来のプロジェクトでは、後でルールを変更した場合、フロントエンドとフロントエンドはそれぞれ 1 回しかテストできません。バックエンドも同時に変更する必要があります。 したがって、zuihou-validator-starter の開始依存関係は hibernate-validator に基づいてカプセル化され、検証する必要があるルールを取得するための共通インターフェイスを提供します。その後、フロントエンドはバックエンドから返されたルールを使用します。将来ルールが変更された場合は、バックエンドのみを変更するだけで済みます。
12. クロスサイトスクリプティング攻撃 (XSS) を防止する
フィルタを使用してすべてのリクエストのフォームパラメータをフィルタリングする
Json デシリアライザーを介してすべてのアプリケーション/json タイプのパラメーターをフィルター処理します。
13. 現在ログインしているユーザー情報のインジェクター
注釈によるユーザー ID の挿入
14. オンラインAPI
ネイティブ swagger-ui の一部の機能は十分にフレンドリーではないため、国産のオープンソース swagger-bootstrap-ui を採用し、springboot ユーザーが使いやすいステーターを作成しました。
15. コードジェネレーター
コード ジェネレーターのセットは、Mybatis-plus-generator に基づいてカスタマイズされており、データベース フィールドのアノテーションを構成することで、列挙クラス、データ ディクショナリ アノテーション、SaveDTO、UpdateDTO、フォーム検証ルール アノテーション、Swagger アノテーションなどが自動的に生成されます。
16. スケジュールされたタスクのスケジューラー
xxl-jobsをベースとした機能強化。 (例: 指定した時間にタスクを送信する、プロジェクトを実行者やスケジューラと結合する、複数のデータ ソース)
17. 大きなファイル/ブレークポイント/断片化された履歴書のアップロード
フロントエンドは webupload.js を使用し、バックエンドは NIO を使用して、大きなファイルのブレークポイントによる断片化アップロードを実装します。Eureka、Zuul、および File サービスを開始した後、テストのために docs/chunkUploadDemo/demo.html を直接開くことができます。 テストの結果、ファイル サービスを開始するためのローカル制限スタック最大メモリは 128M で、4.6G 以上の大きなファイルを 5 分以内に正常にアップロードできました。正式なサービス時間はユーザーの帯域幅とサーバーの帯域幅の影響を受けます。長い時間がかかります。
18. 分散トランザクション
Alibaba の分散トランザクション ミドルウェア (seata) と統合されているため、マイクロサービス シナリオで直面する分散トランザクションの問題を効率的かつ侵襲性のない方法で解決します。
19. クロステーブル、クロスデータベース、クロスサービス関連データ自動インジェクター
これは、クロステーブル、クロスデータベース、クロスサービスページングデータの属性、または単一オブジェクトの属性の関連データをエコーするという問題を解決するために使用され、静的データ属性 (データディクショナリ) と動的主キーの自動挿入をサポートします。データ。
20. グレースケールのリリース
オンラインでの頻繁なサービス更新、ロールバック、迅速なイテレーション、社内での共同開発の問題を解決するために、このプロジェクトでは修正された riadfdson の負荷分散戦略を使用してグレースケール リリースを実現します。
ランプクラウド更新ログ
v3.5.5
リファクタリング
Lamp-cloud: TraceFilter の実行順序を調整して、ゲートウェイ内の他のフィルターがログ情報を記録できるようにします。
ランプクラウド: RouterMeta を最適化し、フロントエンドのカスタム キーをサポートします
Lamp-cloud: リージョン クローリング インターフェイスのクローリング データが文字化けする問題を最適化します。
Lamp-cloud: 地域のクロール インターフェイスを最適化しても、市の下にある郡のデータをクロールできない
Lamp-cloud: ツリー構造の基本エンティティに addChildren メソッドを追加しました
Lamp-cloud: Web ソケット サービスを無視するように Swagger 集約構造を最適化します。
修理
Lamp-util: リクエスト ヘッダー パラメーターに中国語が含まれている場合、非同期の偽呼び出しでエラーが報告される
Lamp-cloud: ツリー構造が正しい接続階層構造を取得できない不具合を修正しました。
Lamp-web-plus: ツリーページの高さの固定によって引き起こされるバグを修正
Lamp-web-plus: TableAction コンポーネントのドロップダウンで、権限が原因で分割線が正しく表示されない問題を解決
Lamp-web-plus: 一覧ページのデータが編集ページに転送され、誤ってデータが変更されてしまう問題を修正しました。