マイクロサービスの概要
単体アプリケーションを複数の小さなサービスに分割し、それぞれ独立してデプロイするアーキテクチャです。
使用ポート
- 黒馬モール: 18080
- Nacos: 8848
- Seata: 7099
- Sentinel: 8090
- RabbitMQ: 15672
- Elasticsearch: 9200
- Kibana: 5601
MyBatisPlusの導入
MyBatisPlusは、MyBatisの機能を拡張し、単純なCRUD操作を簡素化します。
基本的な設定
- 依存関係の追加
- Mapperインターフェースの定義
主な注釈
- @TableName: エンティティクラスに対応するテーブル名を指定
- @TableId: エンティティクラスの主キーを指定
- @TableField: エンティティクラスの通常のフィールドを指定
条件構築器
- QueryWrapper: select, delete, updateのwhere条件を構築
- UpdateWrapper: 特殊なset文を使用する場合
- LambdaQueryWrapper: ラムダ式で柔軟な条件構築
Serviceインターフェース
IServiceインターフェースは、一般的なCRUD操作を提供します。
Dockerの導入と使用
Dockerは、コンテナ化技術であり、アプリケーションの開発とデプロイを効率化します。
インストール
適切なソースからDockerをインストールします。
基本コマンド
- イメージの読み込み: docker load -i yolov5-v6.2.tar
データボリューム
データボリュームは、ホストマシンとコンテナ間のデータ共有を可能にします。
マイクロサービスの実装
Spring Cloudは、マイクロサービスの開発とデプロイを支援するフレームワークです。
OpenFeign
OpenFeignは、リモートサービス呼び出しを簡素化します。
@FeignClient("user-service")
public interface UserClient {
@PutMapping("/users/money/deduct")
void deductMoney(@RequestParam("pw") String pw, @RequestParam("amount") Integer amount);
}
APIゲートウェイ
Spring Cloud Gatewayは、APIゲートウェイを実装するためのツールです。
認証と認可
ゲートウェイは、リクエストの認証と認可を行うことができます。
サービス保護と分散トランザクション
Sentinelは、サービス保護を提供するフレームワークです。
降格ロジック
@Slf4j
public class PayClientFallback implements FallbackFactory<PayClient> {
@Override
public PayClient create(Throwable cause) {
return new PayClient() {
@Override
public PayOrderDTO queryPayOrderByBizOrderNo(Long id) {
return null;
}
};
}
}
Seata
Seataは、分散トランザクションを管理するフレームワークです。
メッセージキュー(MQ)
RabbitMQは、メッセージングシステムとして広く使用されています。
Spring AMQP
Spring AMQPは、RabbitMQとの統合を簡素化します。
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue1"),
exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
key = {"red", "blue"}
))
public void listenDirectQueue1(String msg) {
System.out.println("Consumer 1 received message from direct.queue1: " + msg);
}
Elasticsearch
Elasticsearchは、全文検索エンジンであり、大量のデータを高速に検索できます。
IK分詞器
IK分詞器は、中国語の文章を効果的に解析します。
Redis
Redisは、高性能なインメモリデータベースです。
レプリケーション
Master-Slave構成により、高可用性を確保します。
センチネル
センチネルは、クラスタの監視と故障復旧を行います。
データ構造
Redisは、String, Hash, List, Set, SortedSetなどのデータ構造をサポートします。
メモリ管理
過期キーの削除や、LRU/LFUアルゴリズムによるメモリ管理が行われます。
マイクロサービスのインタビュー対策
分散トランザクション、サービス登録、リモート呼び出し、サービス保護に関する知識が必要です。