一、SpringCloud常用的的组件
下面是常用的一些组件的一些具体的介绍
1. 服务注册发现——Eureka
微服务之间在互相调用的时候会存在获取提供者和消费者之间地址的问题,消费者也需要知道提供者的健康状态,所以就需要一个注册中心来管理,以便解决这些问题。其中最广为人知的注册中心就是Eureka,它的结构如下:
1.1 搭建eureka-server
首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务
- 创建eureka-server服务
- 引入eureka依赖
<!-- SpringCloud为eureka提供的starter依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
- 编写启动类(注意一定要添加@EnableEurekaServer注解,用来开启eureka的注册中心功能 )
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
- 编写配置文件
server: port: 10086 spring: application: name: eureka-server eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka
- 启动微服务
访问地址是:http://127.0.0.1:10086 - 成功结果
1.2 服务注册
- 引入依赖
<!-- 在提供者的pom文件中,引入eureka-client依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
- 配置文件
修改application.yml文件,添加服务名称、eureka地址:spring: application: name: #提供者名字 eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka
- 启动多个服务者实例
1.3 服务发现
我们将消费者的逻辑修改:向eureka-server拉取提供者的信息,实现服务发现
- 引入依赖
<!--在消费者的pom文件中,引入eureka-client依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
- 配置文件
服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息:
在消费者e中,修改application.yml文件,添加服务名称、eureka地址:spring: application: name: #消费者名字 eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka
- 拉取服务和负载均衡
在消费者的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:修改消费者对提供者访问的url路径,用服务名代替ip、端口即可。
spring会自动帮助我们从eureka-server端,根据提供者这个服务名称,获取实例列表,而后完成负载均衡。