Heim Java javaLernprogramm Erstellen Sie ein verteiltes und sicheres Spring Cloud-Microservice-Flugsystem

Erstellen Sie ein verteiltes und sicheres Spring Cloud-Microservice-Flugsystem

Jun 22, 2023 am 08:06 AM
spring cloud 安全 分布式

Mit der Entwicklung des Cloud Computing und der kontinuierlichen Ausweitung des Unternehmensgeschäfts hat sich die Microservice-Architektur zu einer sehr beliebten Systemarchitektur entwickelt. Unter ihnen sind Spring Boot und Spring Cloud derzeit die am häufigsten verwendeten Microservice-Frameworks. Spring Cloud bietet eine Fülle von Komponenten zur Unterstützung der Entwicklung und Verwaltung von Microservices, einschließlich Serviceregistrierung und -erkennung, Routing, Lastausgleich, Konfigurationsmanagement, Leistungsschalter usw.

In diesem Artikel werden wir als Beispiel ein verteiltes und sicheres Spring Cloud-Mikroservice-Flugsystem erstellen, um die leistungsstarken Funktionen von Spring Cloud zu demonstrieren.

  1. Dienstregistrierung und -erkennung

Zuerst müssen wir Dienste registrieren und entdecken. Spring Cloud stellt Eureka bereit, um uns bei der Registrierung und Erkennung von Diensten zu unterstützen. Wir werden die Registrierung und Entdeckung von Diensten über Eureka Server abschließen.

Eureka Server-Anwendung erstellen:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
Nach dem Login kopieren

In application.properties konfigurieren:

server.port=8761

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
Nach dem Login kopieren

In den Dienstanbieter- und Dienstkonsumentenanwendungen müssen wir sie bei Eureka Server registrieren.

Konfiguriert in den application.properties des Dienstanbieters:

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

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Nach dem Login kopieren

Konfiguriert in den application.properties des Dienstkonsumenten:

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

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Nach dem Login kopieren
  1. Kommunikation zwischen Diensten

Der Dienstanbieter erstellt eine RESTful-Schnittstelle über Spring MVC:

@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);
    }
}
Nach dem Login kopieren

Der Dienst Der Verbraucher ruft den Dienst über Spring RestTemplate auf:

@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);
    }
}
Nach dem Login kopieren

Unter anderem ist service.provider.url in den application.properties der Anwendung konfiguriert.

  1. Lastausgleich

In tatsächlichen Anwendungen werden Dienstanbieter wahrscheinlich auf mehreren Instanzen bereitgestellt. Zu diesem Zeitpunkt müssen wir einen Lastausgleich durchführen, um die Leistung und Verfügbarkeit des Systems zu verbessern. Spring Cloud stellt Ribbon zur Unterstützung des Lastausgleichs bereit.

Konfigurieren Sie in den application.properties des Service-Consumers:

service.provider.url=http://flight-service-provider/
spring.cloud.loadbalancer.ribbon.enabled=true
Nach dem Login kopieren

Verwenden Sie das lastverteilte RestTemplate in FlightService:

@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);
    }
}
Nach dem Login kopieren

Unter anderem wird service.provider.name in den application.properties der Anwendung konfiguriert.

  1. Konfigurationsmanagement

Spring Cloud bietet Config zur einfachen Verwaltung der Anwendungskonfiguration. Wir können die Anwendungskonfiguration in einem Git-Repository speichern und über Config Server verteilen.

Config Server-Anwendung erstellen:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
Nach dem Login kopieren

In application.properties konfigurieren:

server.port=8888

spring.cloud.config.server.git.uri=https://github.com/xxx/xxx.git
spring.cloud.config.server.git.search-paths=config-repo
Nach dem Login kopieren

Bei Dienstanbietern und Dienstkonsumenten können wir die Anwendungskonfiguration über Config Server erhalten.

Konfigurieren Sie in der application.yml des Dienstanbieters:

spring:
  application:
    name: flight-service-provider
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
Nach dem Login kopieren

Konfigurieren Sie in der application.yml des Dienstkonsumenten:

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
Nach dem Login kopieren
  1. Leistungsschalter

In einer Microservice-Architektur ist die Beziehung aufgrund der Abhängigkeiten zwischen Diensten sehr komplex und Einige Dienstausfälle oder Probleme können zum Zusammenbruch des gesamten Systems führen. Um mit dieser Situation umzugehen, können wir Leistungsschalter einsetzen, um Serviceeinbußen zu bewältigen.

Spring Cloud stellt Hystrix zur Unterstützung der Leistungsschalterfunktion bereit.

Konfigurieren Sie in application.yml des Dienstkonsumenten:

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
Nach dem Login kopieren

Fügen Sie die Annotation @HystrixCommand in FlightController hinzu:

@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);
    }
}
Nach dem Login kopieren

Unter diesen ist defaultGetFlight die Downgrade-Funktion.

  1. Sicherheit

In verteilten Systemen sind Sicherheitsfragen sehr wichtig. Spring Cloud bietet Sicherheit zur Unterstützung des Sicherheitsmanagements.

Fügen Sie in der pom.xml der Service-Provider- und Service-Consumer-Anwendungen hinzu:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-security</artifactId>
</dependency>
Nach dem Login kopieren

Konfigurieren Sie in der application.yml der Service-Provider- und Service-Consumer-Anwendungen:

security:
  basic:
    enabled: true

spring:
  security:
    user:
      name: user
      password: password
Nach dem Login kopieren

wobei Name und Passwort jeweils Benutzername und Passwort sind. Es ist zu beachten, dass in tatsächlichen Anwendungen sicherere Methoden zur Benutzerauthentifizierung und Berechtigungsverwaltung verwendet werden müssen.

Fügen Sie die Annotation @PreAuthorize auf der Klassenebene von FlightController hinzu:

@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);
        }
    }
}
Nach dem Login kopieren

Unter anderem wird die Annotation @PreAuthorize verwendet, um eine Sicherheitsüberprüfung auf FlightController durchzuführen. In tatsächlichen Anwendungen können für jede Methode unterschiedliche Sicherheitsüberprüfungen durchgeführt werden.

Auf diese Weise haben wir den Aufbau eines verteilten und sicheren Spring Cloud-Microservice-Flugsystems abgeschlossen. Anhand der Fälle in diesem Artikel können wir sehen, dass Spring Cloud eine Fülle von Komponenten bereitstellt, die uns beim Aufbau von Microservices unterstützen. Gleichzeitig müssen wir auch auf einige Herausforderungen achten, die die Microservice-Architektur mit sich bringt, wie z. B. Dienstregistrierung und -erkennung, Kommunikation zwischen Diensten, Lastausgleich, Konfigurationsmanagement, Leistungsschalter, Sicherheit und andere Probleme. In tatsächlichen Anwendungen müssen wir die Technologieauswahl und -konfiguration auf der Grundlage spezifischer Szenarien treffen.

Das obige ist der detaillierte Inhalt vonErstellen Sie ein verteiltes und sicheres Spring Cloud-Microservice-Flugsystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ausführliche Erklärung zum Deaktivieren des Windows 11-Sicherheitscenters Ausführliche Erklärung zum Deaktivieren des Windows 11-Sicherheitscenters Mar 27, 2024 pm 03:27 PM

Im Betriebssystem Windows 11 ist das Sicherheitscenter eine wichtige Funktion, die Benutzern hilft, den Sicherheitsstatus des Systems zu überwachen, sich gegen Malware zu verteidigen und die Privatsphäre zu schützen. Manchmal müssen Benutzer das Sicherheitscenter jedoch möglicherweise vorübergehend deaktivieren, beispielsweise wenn sie bestimmte Software installieren oder eine Systemoptimierung durchführen. In diesem Artikel erfahren Sie im Detail, wie Sie das Windows 11-Sicherheitscenter deaktivieren, damit Sie das System korrekt und sicher bedienen können. 1. So schalten Sie das Sicherheitscenter von Windows 11 aus Unter Windows 11 funktioniert das Ausschalten des Sicherheitscenters nicht

Tipps zum Deaktivieren des Echtzeitschutzes im Windows-Sicherheitscenter Tipps zum Deaktivieren des Echtzeitschutzes im Windows-Sicherheitscenter Mar 27, 2024 pm 10:09 PM

In der heutigen digitalen Gesellschaft sind Computer zu einem unverzichtbaren Bestandteil unseres Lebens geworden. Als eines der beliebtesten Betriebssysteme ist Windows weltweit weit verbreitet. Da die Angriffsmethoden im Netzwerk jedoch immer weiter zunehmen, ist der Schutz der Sicherheit persönlicher Computer besonders wichtig geworden. Das Windows-Betriebssystem stellt eine Reihe von Sicherheitsfunktionen bereit, von denen das „Windows Security Center“ eine seiner wichtigen Komponenten ist. Bei Windows-Systemen kann uns das „Windows Security Center“ weiterhelfen

Wie sollte das Design der Sicherheitsarchitektur des Java-Frameworks mit den Geschäftsanforderungen in Einklang gebracht werden? Wie sollte das Design der Sicherheitsarchitektur des Java-Frameworks mit den Geschäftsanforderungen in Einklang gebracht werden? Jun 04, 2024 pm 02:53 PM

Das Java-Framework-Design ermöglicht Sicherheit, indem es Sicherheitsanforderungen mit Geschäftsanforderungen in Einklang bringt: Identifizierung wichtiger Geschäftsanforderungen und Priorisierung relevanter Sicherheitsanforderungen. Entwickeln Sie flexible Sicherheitsstrategien, reagieren Sie schichtweise auf Bedrohungen und nehmen Sie regelmäßige Anpassungen vor. Berücksichtigen Sie architektonische Flexibilität, unterstützen Sie die Geschäftsentwicklung und abstrakte Sicherheitsfunktionen. Priorisieren Sie Effizienz und Verfügbarkeit, optimieren Sie Sicherheitsmaßnahmen und erhöhen Sie die Sichtbarkeit.

Sicherheitskonfiguration und Härtung des Struts 2-Frameworks Sicherheitskonfiguration und Härtung des Struts 2-Frameworks May 31, 2024 pm 10:53 PM

Um Ihre Struts2-Anwendung zu schützen, können Sie die folgenden Sicherheitskonfigurationen verwenden: Nicht verwendete Funktionen deaktivieren. Inhaltstypprüfung aktivieren. Eingaben validieren. Sicherheitstokens aktivieren. CSRF-Angriffe verhindern. Verwenden Sie RBAC, um den rollenbasierten Zugriff einzuschränken

PHP-Mikroframework: Sicherheitsdiskussion von Slim und Phalcon PHP-Mikroframework: Sicherheitsdiskussion von Slim und Phalcon Jun 04, 2024 am 09:28 AM

Im Sicherheitsvergleich zwischen Slim und Phalcon im PHP-Mikroframework verfügt Phalcon über integrierte Sicherheitsfunktionen wie CSRF- und XSS-Schutz, Formularvalidierung usw., während Slim keine sofort einsatzbereiten Sicherheitsfunktionen aufweist und eine manuelle Implementierung erfordert Sicherheitsmaßnahmen. Für sicherheitskritische Anwendungen bietet Phalcon einen umfassenderen Schutz und ist die bessere Wahl.

Die neuen Weltherausforderungen der KI: Was ist mit Sicherheit und Datenschutz passiert? Die neuen Weltherausforderungen der KI: Was ist mit Sicherheit und Datenschutz passiert? Mar 31, 2024 pm 06:46 PM

Die rasante Entwicklung der generativen KI hat zu beispiellosen Herausforderungen in Bezug auf Datenschutz und Sicherheit geführt und dringende Forderungen nach regulatorischen Eingriffen ausgelöst. Letzte Woche hatte ich die Gelegenheit, mit einigen Kongressabgeordneten und ihren Mitarbeitern in Washington, D.C. über die sicherheitsrelevanten Auswirkungen von KI zu diskutieren. Die heutige generative KI erinnert mich an das Internet der späten 1980er Jahre, mit Grundlagenforschung, latentem Potenzial und akademischen Anwendungen, aber sie ist noch nicht reif für die Öffentlichkeit. Dieses Mal treibt der uneingeschränkte Ehrgeiz der Anbieter, angetrieben durch Risikokapital der unteren Liga und inspiriert durch Twitter-Echokammern, die „schöne neue Welt“ der KI rasant voran. Das „öffentliche“ Basismodell ist fehlerhaft und für den privaten und kommerziellen Gebrauch ungeeignet. Falls vorhanden, sind Sicherheitsstrukturen aufgrund der Angriffsfläche wichtig

Implementierung von Algorithmen für maschinelles Lernen in C++: Sicherheitsüberlegungen und Best Practices Implementierung von Algorithmen für maschinelles Lernen in C++: Sicherheitsüberlegungen und Best Practices Jun 01, 2024 am 09:26 AM

Bei der Implementierung von Algorithmen für maschinelles Lernen in C++ sind Sicherheitsaspekte von entscheidender Bedeutung, einschließlich Datenschutz, Modellmanipulation und Eingabevalidierung. Zu den Best Practices gehören die Einführung sicherer Bibliotheken, die Minimierung von Berechtigungen, die Verwendung von Sandboxing und die kontinuierliche Überwachung. Der praktische Fall demonstriert die Verwendung der Botan-Bibliothek zum Ver- und Entschlüsseln des CNN-Modells, um sicheres Training und Vorhersage zu gewährleisten.

Welche Wallet ist sicherer für SHIB-Coins? (Muss für Neulinge gelesen werden) Welche Wallet ist sicherer für SHIB-Coins? (Muss für Neulinge gelesen werden) Jun 05, 2024 pm 01:30 PM

SHIB-Coin ist für Anleger kein Unbekannter mehr. Es handelt sich um einen konzeptionellen Token vom gleichen Typ wie Dogecoin. Mit der Entwicklung des Marktes ist SHIB auf Platz 12 gestiegen. Es ist ersichtlich, dass der SHIB-Markt heiß ist und unzählige Investitionen anzieht . Investoren beteiligen sich an der Investition. In der Vergangenheit kam es auf dem Markt häufig zu Transaktionen und Sicherheitsvorfällen bei Wallets. Viele Anleger waren besorgt über das Speicherproblem von SHIB. Sie fragen sich, welches Wallet derzeit sicherer für die Aufbewahrung von SHIB-Coins ist. Laut Marktdatenanalyse handelt es sich bei den relativ sicheren Wallets hauptsächlich um OKXWeb3Wallet-, imToken- und MetaMask-Wallets, die relativ sicher sein werden. Als Nächstes wird der Herausgeber ausführlich auf sie eingehen. Welche Wallet ist sicherer für SHIB-Coins? Derzeit werden SHIB-Münzen auf OKXWe platziert

See all articles