ホームページ Java &#&チュートリアル 分散型で安全な Spring Cloud マイクロサービス フライト システムを構築する

分散型で安全な Spring Cloud マイクロサービス フライト システムを構築する

Jun 22, 2023 am 08:06 AM
spring cloud 安全性 配布された

クラウド コンピューティングの発展とエンタープライズ ビジネスの継続的な拡大に伴い、マイクロサービス アーキテクチャは非常に人気のあるシステム アーキテクチャになりました。その中で、現在最もよく使用されているマイクロサービス フレームワークは Spring Boot と Spring Cloud です。 Spring Cloud は、サービスの登録と検出、ルーティング、負荷分散、構成管理、サーキット ブレーカーなど、マイクロサービスの開発と管理をサポートする豊富なコンポーネントを提供します。

この記事では、Spring Cloud の強力な機能を実証するケースとして、分散型で安全な Spring Cloud マイクロサービス フライング システムを構築します。

  1. サービスの登録と検出

まず、サービスを登録して検出する必要があります。 Spring Cloud は、サービスの登録と検出を実現するのに役立つ Eureka を提供します。 Eureka Server を通じてサービスの登録と検出を完了します。

Eureka Server アプリケーションの作成:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
ログイン後にコピー

application.properties での設定:

server.port=8761

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
ログイン後にコピー

サービス プロバイダー アプリケーションとサービス コンシューマー アプリケーションでは、それを Eureka Server に登録する必要があります。

サービス プロバイダーの application.properties で構成:

spring.application.name=flight-service-provider
server.port=8080

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
ログイン後にコピー

サービス コンシューマーの application.properties で構成:

spring.application.name=flight-service-consumer
server.port=8081

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
ログイン後にコピー
  1. サービス間通信

サービスプロバイダーは Spring MVC を通じて RESTful インターフェースを作成します:

@RestController
@RequestMapping("/flights")
public class FlightController {

    @GetMapping("/{flightId}")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = new Flight(flightId, "Shanghai", "Beijing", new Date());
        return new ResponseEntity<>(flight, HttpStatus.OK);
    }
}
ログイン後にコピー

サービスコンシューマーは Spring RestTemplate を通じてサービスを呼び出します:

@Service
public class FlightService {

    @Autowired
    private RestTemplate restTemplate;

    @Value("${service.provider.url}")
    private String serviceProviderUrl;

    public Flight getFlight(Integer flightId) {
        return restTemplate.getForObject(serviceProviderUrl + "/flights/{flightId}", Flight.class, flightId);
    }
}
ログイン後にコピー

その中には、service.provider があります。 URL はアプリケーション内にあります。プログラムの application.properties で設定します。

  1. 負荷分散

実際のアプリケーションでは、サービス プロバイダーが複数のインスタンスにデプロイされる可能性が高く、このとき、システムのパフォーマンスを向上させるために負荷分散を実行する必要があります。 . パフォーマンスと可用性。 Spring Cloud は、負荷分散をサポートするためのリボンを提供します。

サービスコンシューマの application.properties で設定します:

service.provider.url=http://flight-service-provider/
spring.cloud.loadbalancer.ribbon.enabled=true
ログイン後にコピー

FlightService で負荷分散された RestTemplate を使用します:

@Service
public class FlightService {

    @Autowired
    @LoadBalanced
    private RestTemplate restTemplate;

    @Value("${service.provider.name}")
    private String serviceProviderName;

    public Flight getFlight(Integer flightId) {
        return restTemplate.getForObject("http://" + serviceProviderName + "/flights/{flightId}", Flight.class, flightId);
    }
}
ログイン後にコピー

その中に、service.provider.name があります。アプリケーションはプログラムの application.properties で設定します。

  1. 構成管理

Spring Cloud は、アプリケーション構成を簡単に管理するための Config を提供します。アプリケーション構成を Git リポジトリに保存し、Config Server を通じて配布できます。

Create Config Server application:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
ログイン後にコピー

Configure in application.properties:

server.port=8888

spring.cloud.config.server.git.uri=https://github.com/xxx/xxx.git
spring.cloud.config.server.git.search-paths=config-repo
ログイン後にコピー

サービス プロバイダーとサービス コンシューマーでは、Config Server アプリケーションの構成を通じて取得できます。

サービス プロバイダーの application.yml で構成します:

spring:
  application:
    name: flight-service-provider
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
ログイン後にコピー

サービス コンシューマーの application.yml で構成します:

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
ログイン後にコピー
  1. サーキット ブレーカー

マイクロサービス アーキテクチャでは、サービス間の依存関係が非常に複雑であるため、一部のサービスでのダウンタイムや問題がシステム全体の崩壊を引き起こす可能性があります。この状況に対処するには、サーキット ブレーカーを使用してサービスの低下に対処できます。

Spring Cloud は、サーキット ブレーカー機能をサポートする Hystrix を提供します。

サービスコンシューマのapplication.ymlに設定:

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
  loadbalancer:
    ribbon:
      enabled: true
  circuitbreaker:
    enabled: true
    resilience4j:
      enabled: false
      circuitBreaker:
        backend: flight-service-provider
        failureRateThreshold: 50
ログイン後にコピー

FlightControllerに@HystrixCommandアノテーションを追加:

@RestController
@RequestMapping("/flights")
public class FlightController {

    @Autowired
    private FlightService flightService;

    @GetMapping("/{flightId}")
    @HystrixCommand(fallbackMethod = "defaultGetFlight")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = flightService.getFlight(flightId);
        if (flight != null) {
            return new ResponseEntity<>(flight, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    public ResponseEntity<Flight> defaultGetFlight(Integer flightId) {
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
ログイン後にコピー

このうち、defaultGetFlightはダウングレード関数です。

    #セキュリティ
分散システムでは、セキュリティの問題は非常に重要です。 Spring Cloud はセキュリティ管理をサポートするセキュリティを提供します。

サービス プロバイダーおよびサービス コンシューマ アプリケーションの pom.xml を追加します:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-security</artifactId>
</dependency>
ログイン後にコピー

サービス プロバイダーおよびサービス コンシューマ アプリケーションの application.yml で構成します:

security:
  basic:
    enabled: true

spring:
  security:
    user:
      name: user
      password: password
ログイン後にコピー

このうち、nameとpasswordはそれぞれユーザー名とパスワードです。実際のアプリケーションでは、ユーザーの認証と認可の管理には、より安全な方法を使用する必要があることに注意してください。

FlightController のクラス レベルで @PreAuthorize アノテーションを追加します:

@RestController
@RequestMapping("/flights")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public class FlightController {

    @Autowired
    private FlightService flightService;

    @GetMapping("/{flightId}")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = flightService.getFlight(flightId);
        if (flight != null) {
            return new ResponseEntity<>(flight, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }
}
ログイン後にコピー
このうち、@PreAuthorize アノテーションは、FlightController でセキュリティ検証を実行するために使用されます。実際のアプリケーションでは、メソッドごとに異なるセキュリティ検証を実行できます。

このようにして、分散型で安全な Spring Cloud マイクロサービス フライト システムの構築が完了しました。この記事のケースを通じて、Spring Cloud がマイクロサービスの構築に役立つ豊富なコンポーネントを提供していることがわかります。同時に、サービスの登録と検出、サービス間通信、負荷分散、構成管理、サーキット ブレーカー、セキュリティ、その他の問題など、マイクロサービス アーキテクチャによってもたらされるいくつかの課題にも注意を払う必要があります。実際のアプリケーションでは、特定のシナリオに基づいてテクノロジーの選択と構成を行う必要があります。

以上が分散型で安全な Spring Cloud マイクロサービス フライト システムを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows11セキュリティセンターをオフにする方法を詳しく解説 Windows11セキュリティセンターをオフにする方法を詳しく解説 Mar 27, 2024 pm 03:27 PM

Windows 11 オペレーティング システムでは、セキュリティ センターは、ユーザーがシステムのセキュリティ状態を監視し、マルウェアから防御し、個人のプライバシーを保護するのに役立つ重要な機能です。ただし、特定のソフトウェアをインストールするときやシステム チューニングを実行するときなど、ユーザーがセキュリティ センターを一時的にオフにする必要がある場合があります。この記事では、システムを正しく安全に運用するために、Windows 11 セキュリティ センターをオフにする方法を詳しく紹介します。 1. Windows 11 セキュリティ センターをオフにする方法 Windows 11 では、セキュリティ センターをオフにしても、

Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Mar 27, 2024 pm 02:30 PM

Windows オペレーティング システムは、世界で最も多くのユーザーを抱えるオペレーティング システムの 1 つとして、常にユーザーに支持されています。ただし、Windows システムを使用する場合、ユーザーはウイルス攻撃、マルウェア、その他の脅威など、多くのセキュリティ リスクに遭遇する可能性があります。システム セキュリティを強化するために、Windows システムには多くのセキュリティ保護メカニズムが組み込まれています。その 1 つが Windows セキュリティ センターのリアルタイム保護機能です。今回はWindowsセキュリティセンターのリアルタイム保護をオフにする方法を詳しく紹介します。まず、しましょう

AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? Mar 31, 2024 pm 06:46 PM

生成 AI の急速な発展により、プライバシーとセキュリティに関して前例のない課題が生じ、規制介入が緊急に求められています。先週、私はワシントン D.C. で一部の議員およびそのスタッフと AI のセキュリティ関連の影響について話し合う機会がありました。今日の生成 AI は、基礎研究、潜在的な可能性、学術的用途を備えた 1980 年代後半のインターネットを思い出させますが、まだ一般向けの準備は整っていません。今回は、マイナーリーグのベンチャーキャピタルによって刺激され、Twitter のエコーチェンバーに触発された、野放しのベンダーの野心が、AI の「すばらしい新世界」を急速に前進させています。 「パブリック」基本モデルには欠陥があり、消費者および商用利用には適さない; プライバシー抽象化が存在する場合、ふるいのように漏洩する; 攻撃対象領域のためセキュリティ構造は重要である

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワーク設計では、セキュリティ ニーズとビジネス ニーズのバランスをとることでセキュリティを実現し、主要なビジネス ニーズを特定し、関連するセキュリティ要件に優先順位を付けます。柔軟なセキュリティ戦略を策定し、脅威に階層的に対応し、定期的に調整します。アーキテクチャの柔軟性を考慮し、ビジネスの進化をサポートし、抽象的なセキュリティ機能を考慮します。効率と可用性を優先し、セキュリティ対策を最適化し、可視性を向上させます。

PHP セキュリティのベスト プラクティスを実装する方法 PHP セキュリティのベスト プラクティスを実装する方法 May 05, 2024 am 10:51 AM

PHP セキュリティのベスト プラクティスを実装する方法 PHP は、動的でインタラクティブな Web サイトの作成に使用される最も人気のあるバックエンド Web プログラミング言語の 1 つです。ただし、PHP コードはさまざまなセキュリティ脆弱性に対して脆弱になる可能性があります。 Web アプリケーションをこれらの脅威から保護するには、セキュリティのベスト プラクティスを実装することが重要です。入力検証 入力検証は、ユーザー入力を検証し、SQL インジェクションなどの悪意のある入力を防止するための重要な最初のステップです。 PHP は、filter_var() や preg_match() などのさまざまな入力検証関数を提供します。例: $username=filter_var($_POST['username'],FILTER_SANIT

Struts 2 フレームワークのセキュリティ構成と強化 Struts 2 フレームワークのセキュリティ構成と強化 May 31, 2024 pm 10:53 PM

Struts2 アプリケーションを保護するには、次のセキュリティ構成を使用できます。 未使用の機能を無効にする コンテンツ タイプ チェックを有効にする 入力を検証する セキュリティ トークンを有効にする CSRF 攻撃を防ぐ RBAC を使用してロールベースのアクセスを制限する

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス Jun 01, 2024 am 09:26 AM

C++ で機械学習アルゴリズムを実装する場合、データ プライバシー、モデルの改ざん、入力検証などのセキュリティを考慮することが重要です。ベスト プラクティスには、安全なライブラリの採用、権限の最小化、サンドボックスの使用、継続的な監視が含まれます。実際のケースでは、Botan ライブラリを使用して CNN モデルを暗号化および復号化し、安全なトレーニングと予測を確保する方法を示します。

SHIBコインにとってより安全なウォレットはどれですか? (初心者の方は必ずお読みください) SHIBコインにとってより安全なウォレットはどれですか? (初心者の方は必ずお読みください) Jun 05, 2024 pm 01:30 PM

SHIBコインは、投資家にとってもはや馴染みのないものではありませんが、市場の発展に伴い、SHIBの現在の市場価値は12位にランクされており、数え切れないほどの投資を集めていることがわかります。 . 投資家が投資に参加します。過去に、市場では頻繁に取引やウォレットのセキュリティに関するインシデントが発生しており、多くの投資家は、現時点でどのウォレットがSHIBコインを保管するのが安全なのか疑問に思っています。市場データの分析によると、比較的安全なウォレットは主に OKXWeb3Wallet、imToken、MetaMask ウォレットです。次に、これらについて編集者が詳しく説明します。 SHIBコインにとってより安全なウォレットはどれですか?現在、SHIBコインはOKXWeに置かれています

See all articles