title: SpringCloud学习总结一
date: 2020-06-09
categories:
- Eureka注册中心
tags: - SringCloud
- Eureka注册中心
Eureka注册中心(一)
注册中心在微服务架构中是必不可少的一部分,主要用来实现服务治理功能。
注册中心带来的好处是你不需要知道有多少提供方,你只需要关注注册中心有多少服务即可。
1.Eureka
Spring Cloud Eureka是Spring Cloud Netflix微服务套件的一部分,主要实现服务治理功能。
2.使用Eureka编写注册中心服务
创建一个maven项目eureka,需要这些依赖:spring boot,eureka,spring cloud,代码如下:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</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>
在启动类上加上@EnableEurekaServer,开启Eureka Server
接着在application.properties属性文件增加以下配置:
# 设置spring应用命名,可以自定义,非必要
spring.application.name=eureka-server
# 设置Eureka Server WEB控制台端口,自定义
server.port=8761
eureka.instance.hostname=localhost
#是否将自己注册到Eureka-Server中,默认的为true
eureka.client.registerWithEureka=false
#是否从Eureka-Server中获取服务注册信息,默认为true
eureka.client.fetchRegistry=false
eureka.client.service-url.defaultZone=http://ctzeng:123456@localhost:8761/eureka/
#快速移除已经失效的服务信息
#关闭自我保护模式
eureka.server.enable-self-preservation=false
#默认60000毫秒
eureka.server.eviction-interval-timer-in-ms=5000
#开启认证
spring.security.basic.enable=true
#用户名
spring.security.user.name=ctzeng
#密码
spring.security.user.password=123456
3.编写服务提供者
3.1 创建项目注册到Eureka
注册中心建好并启动后,接下来将一个服务提供者service-provider注册到Eureka中,并提供一个接口给其他服务调用。
还是创建maven项目,写上相关依赖:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.netflix.ribbon/ribbon -->
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon</artifactId>
<version>2.7.18</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</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>
在启动类上加入@EnableDiscoveryClient,表示当前服务是一个Eureka的客户端。
接下来创建一个application.properties文件(创建springboot项目时直接包含的,接下来不在说创建,直接用),添加配置:
spring.application.name=service-provider
server.port=8081
#注册到注册中心去
eureka.client.service-url.defaul-zone=http://localhost:8761/eureka
启动服务,打开Eureka的Web控制台,就可以看到新注册的服务信息了。
3.2 编写提供接口
创建一个Controller,提供一个接口给其他服务查询:
@RestController
@RequestMapping("/provider")
public class ProviderController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
这时通过访问localhost:8081/provider/hello,如果能看到返回的hello字符串,证明接口提供成功了。
注意点
- SpingCloud是依赖于SpringBoot,注意maven依赖版本问题,建议使用idea快捷创建SpringCloud项目