搭建eureka服务
一、搭建EurekaServer
(1)创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
(2)编写启动类,添加@EnableEurekaServer注解
(3)添加application.yml文件,编写下面的配置:eureka自己也是一个微服务【服务注册】
server: port: 10086 #服务端口 spring: application: #eureka的服务名称 name: eurekaserver eureka: client: service-url: #eureka的地址信息 defaultZone: http://localhost:10086/eureka
启动项目访问,可以看到eureka自己的注册信息
二、将user-service、order-service都注册到Eureka
(1)在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
<!--引入eureka客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)在user下的application.yml文件,编写下面的配置:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_user?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
application: # user服务的服务名称
name: userservice
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://localhost:10086/eureka
order-service的注册同上。
启动项目
此外,可以将user-service多次启动, 模拟多实例部署,但为了避免端口冲突,需要修改端口设置:
启动新user-service实例
服务注册:引入eureka-client依赖 在application.yml中配置eureka地址。
无论是消费者还是提供者,引入eureka-client依赖、知道eureka地址后,都可以完成服务注册
三、在order-service中完成服务拉取,然后通过负载均衡挑选一个服务,实现远程调用
服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡
1、修改OrderService的代码,修改访问的url路径,用服务名代替ip、端口:
2、在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解:@Balanced
搭建EurekaServer:
1、引入eureka-server依赖
2、添加@EnableEurekaServer注解
3、在application.yml中配置eureka地址
服务注册
1、引入eureka-client依赖
2、在application.yml中配置eureka地址
服务发现
1、引入eureka-client依赖
2、在application.yml中配置eureka地址
3、给RestTemplate添加@LoadBalanced注解
4、用服务提供者的服务名称进行远程调用