(原) 02- 搭建 springboot cloud 体系架构项目 - Eureka服务治理 - >注册中心(服务端+消费端)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31653405/article/details/88720526

一、理解及原理

 模拟使命【以求更好的理解】:

        服务治理包含三个核心的角色:服务注册中心、服务提供者和服务消费者,他们相对独立,新的服务要向服务注册中心注册,新的消费者会向服务注册中心索引服务列表。

 二、Eureka 注册中心搭建步骤

分别创建不同的服务端 、消费端的N个独立的项目【注】3.1 和 3.2 均是两个独立的项目,不能放在同一个项目下

部分截图:

1..首先配置pom.xml,如【解决方案】

2..配置启动类

2.1..服务端 - 服务提供者

2.2..客户端 - 服务消费者

3..配置文件

3.1..服务端 - 服务提供者

server.port=8100
server.tomcat.uri-encoding=UTF-8

##Eureka配置========================================

#应用名,服务名,如果不指定就是unkown
spring.application.name=eureka-server
#实例的主机名:这个就是服务的访问方式,不可以自定义形式换成其他(我经过这种测试),只写localhost绝对没问题
eureka.instance.hostname=localhost
# 关闭自我保护模式(默认为打开)
eureka.server.enable-self-preservation=false   
 # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
eureka.server.eviction-interval-timer-in-ms=5000 

#是否需要去检索寻找服务,默认是true
eureka.client.fetch-registry=false
#设置是否向注册中心注册,默认是true
eureka.client.register-with-eureka=false

3.2..客户端 - 服务消费者

server.port=9100
server.tomcat.uri-encoding=UTF-8

##Eureka配置========================================
#应用名,服务名 
spring.application.name=eureka-client
#指定注册中心:localhost - >代表上面(3.1处)备注的地方
eureka.client.service-url.defaultZone=http://localhost:8100/eureka/
#开启健康检查(依赖spring-boot-starter-actuator)
eureka.client.service-url.healthcheck.enabled=true

三、启动时,报错,原因在于pom.xml的配置问题

java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava

解决方案(最新的pom.xml配置):

用【dependencyManagement】 依托于【dependencies】

3.1..服务端 - 服务提供端

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>SpringBootCloud</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringBootCloud</name>
	<description>SpringBootCloud project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

<!--问题的解决直接方案  和 配置的结构 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

3.2..客户端 - 服务消费端

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>SpringBootCloud2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringBootCloud2</name>
	<description>SpringBootCloud2 project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- Eureka 客户端的设置健康状态信息 -->
		<dependency>
	          <groupId>org.springframework.boot</groupId>
	          <artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

四、启动效果展示:

4.1.. 提供端启动效果

翻译后:

4.2..消费端启动效果

启动后,在服务端的控制台显示如下端口的注册服务 

猜你喜欢

转载自blog.csdn.net/qq_31653405/article/details/88720526