マイクロサービスの学習と実装

マイクロサービスの概要

単体アプリケーションを複数の小さなサービスに分割し、それぞれ独立してデプロイするアーキテクチャです。

使用ポート

  • 黒馬モール: 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アルゴリズムによるメモリ管理が行われます。

マイクロサービスのインタビュー対策

分散トランザクション、サービス登録、リモート呼び出し、サービス保護に関する知識が必要です。

タグ: マイクロサービス MyBatisPlus Docker Spring Cloud OpenFeign

5月18日 10:02 投稿