Heim  >  Artikel  >  Java  >  Implementierung einer Microservice-Governance basierend auf dem Spring Cloud-Container

Implementierung einer Microservice-Governance basierend auf dem Spring Cloud-Container

WBOY
WBOYOriginal
2023-06-22 20:43:021339Durchsuche

Mit der Entwicklung des Internets und des Cloud Computing beginnen immer mehr Unternehmen, Microservice-Architekturen zum Aufbau und Einsatz von Softwaresystemen zu übernehmen. In einer Microservices-Architektur ist das System in mehrere kleine, autonome Serviceeinheiten aufgeteilt, jede mit ihrer eigenen Anwendung, Datenspeicherung und Geschäftslogik. Der Vorteil dieses Architekturstils besteht darin, dass er die Elastizität, Skalierbarkeit und Wartbarkeit der Anwendung verbessert. Die Microservice-Architektur bringt jedoch auch einige Herausforderungen mit sich, wie z. B. Serviceerkennung, Lastausgleich, Fehlertoleranz, Visualisierung usw., für deren Lösung leistungsstarke Microservice-Governance-Tools erforderlich sind. Spring Cloud ist ein auf Spring Boot basierendes Microservice-Framework. Es bietet eine Reihe von Microservice-Governance-Technologien, mit denen Entwickler Microservice-Anwendungen bequemer erstellen und verwalten können.

Der Spring Cloud-Container ist eine der Kernkomponenten von Spring Cloud. Er bietet eine Vielzahl von Microservice-Governance-Funktionen, wie z. B. Dienstregistrierung und -erkennung, Konfigurationsmanagement, Leistungsschalter usw. In diesem Artikel stellen wir vor, wie man Microservice-Governance mithilfe von Spring Cloud-Containern implementiert.

1. Dienstregistrierung und -erkennung

In der Microservice-Architektur erfordert der Aufruf zwischen Diensten die Kenntnis der Netzwerkadresse des Dienstes, und die Dienstadresse ändert sich häufig. Dies erfordert einen Dienstregistrierungs- und Erkennungsmechanismus zur Verwaltung von Dienstadressen. Der Spring Cloud-Container bietet Eureka zur Lösung dieses Problems.

Eureka ist die Open-Source-Dienstregistrierungs- und Erkennungskomponente von Netflix. Sie implementiert grundlegende Funktionen der Dienstregistrierung und -erkennung basierend auf der RESTful-API und bietet außerdem erweiterte Funktionen wie Dienstzustandsprüfung, Lastausgleich und Failover. Die Verwendung von Eureka in Spring Cloud ist sehr einfach. Sie müssen lediglich relevante Abhängigkeiten in das Spring Boot-Projekt einführen und application.yml oder application.properties konfigurieren. Das Folgende ist ein einfaches application.yml-Konfigurationsbeispiel:

spring:
  application:
    name: service-provider
  cloud:
    config:
      uri: http://config-server:8888 # 配置中心地址
    consul:
      host: consul-server # 基于Consul模式时Consul服务器地址
  profiles:
    active: dev
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-server:8761/eureka/ # Eureka注册中心地址
  instance:
    preferIpAddress: true
  server:
    enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护

In der obigen Konfigurationsdatei haben wir den Dienstnamen als Dienstanbieter konfiguriert, indem wir das Eureka-Registrierungscenter und das Spring Cloud Config-Konfigurationscenter und die Consul-Diensterkennung verwendet haben Konfigurationselemente können nach Bedarf geändert werden. Es ist sehr praktisch, das Eureka-Registrierungscenter zu verwenden. Sie müssen nur die Annotation @EnableEurekaClient zur Startup-Klasse hinzufügen, um den Dienst beim Eureka-Server zu registrieren.

2. Konfigurationsmanagement

In der Microservice-Architektur ist auch das Service-Konfigurationsmanagement ein sehr wichtiges Thema. Spring Cloud stellt die Config Server-Komponente zur Implementierung des Microservice-Konfigurationsmanagements bereit. Config Server kann Konfigurationsinformationen lokal (Codeverwaltungstools wie Git, Svn) oder Remote-Repositorys (wie GitHub) speichern, und der Client kann die Restful-API verwenden, um die Konfiguration abzurufen Informationen und aktualisiert den Cache automatisch.

Die Verwendung von Config Server in Spring Cloud ist sehr einfach. Sie müssen lediglich relevante Abhängigkeiten in das Spring Boot-Projekt einführen und application.yml oder application.properties konfigurieren. Das Folgende ist ein einfaches Beispiel für eine application.yml-Konfiguration:

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/Alice52/spring-cloud-config-example.git # 配置文件所在的远程仓库
          search-paths: {config} # 配置文件所在的搜索路径
server:
  port: 8888 # 配置Server的端口

In der obigen Konfigurationsdatei haben wir den Namen des Konfigurationsservers als config-server und den Startport als 8888 konfiguriert und Git zum Verwalten der Konfigurationsdatei verwendet ist https://github.com/Alice52/spring-cloud-config-example.git. Für den Client müssen Sie der Startup-Klasse lediglich die Annotationen @EnableAutoConfiguration und @EnableConfigServer hinzufügen, damit der Client Konfigurationsinformationen vom Konfigurationsserver abrufen kann.

3. Serviceaufrufe

In der Microservice-Architektur rufen sich Services gegenseitig über die netzwerkbasierte RESTful-API auf. Für Serviceaufrufe ist jedoch manchmal ein Lastausgleich erforderlich, und es ist auch ein Leistungsschalterschutz erforderlich, um eine Verschlechterung des Dienstes oder Ausfallzeiten zu verhindern .

Spring Cloud stellt die Ribbon-Komponente zur Bereitstellung der Lastausgleichsfunktion sowie die Hystrix-Komponente zur Bereitstellung der Leistungsschalterfunktion bereit. Die Verwendung von Ribbon und Hystrix in Spring Cloud ist ebenfalls sehr einfach. Sie müssen lediglich relevante Abhängigkeiten in das Spring Boot-Projekt einführen und application.yml oder application.properties konfigurieren. Das Folgende ist ein einfaches Beispiel für eine application.yml-Konfiguration:

spring:
  application:
    name: service-consumer
server:
  port: 8080
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    preferIpAddress: true
    instanceId: ${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}
  server:
    enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护

In der obigen Konfigurationsdatei haben wir den Dienstnamen als Service-Consumer konfiguriert, das Eureka-Registrierungscenter verwendet und den Selbstschutzmechanismus des Dienstes aktiviert, um Eureka zu verhindern Server kann den Dienst nicht erkennen. Der Dienst ist fehlgeschlagen und wurde entfernt. Wenn der Client den Dienst aufruft, verwendet er Ribbon für den Lastausgleich und konfiguriert Hystrix außerdem als Leistungsschalter, um die hohe Verfügbarkeit und Stabilität des Dienstes sicherzustellen.

4. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie den Spring Cloud-Container zur Implementierung der Microservice-Governance verwenden, einschließlich Dienstregistrierung und -erkennung, Konfigurationsverwaltung und Dienstaufruf. Durch Komponenten wie Eureka, Config Server, Ribbon und Hystrix, die von Spring Cloud bereitgestellt werden, können Entwickler Microservice-Anwendungen einfacher erstellen und verwalten. Natürlich gibt es noch viele andere Aspekte der Microservice-Architektur, wie z. B. Service-Gateways, verteiltes Tracking und die Verwaltung geheimer Schlüssel. Wir werden diese Inhalte in nachfolgenden Artikeln vorstellen.

Das obige ist der detaillierte Inhalt vonImplementierung einer Microservice-Governance basierend auf dem Spring Cloud-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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