eureka配置和使用
用途:用于管理各个微服务模块
使用
1.在父工程下建立eureka子工程
2.在eurake子工程的pom文件中添加eureka-server服务依赖
<!-- eureka服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
由于在父工程的依赖中已经规定了版本,所以在这里就不用写版本信息了
3. 在子工程下建立启动类
package cn.itcast.erueka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
//引入eureka服务
@EnableEurekaServer
@SpringBootApplication
public class EruekaApplication {
public static void main(String[] args) {
SpringApplication.run(EruekaApplication.class,args);
}
}
在eureka子工程中添加配置文件
server: #指定端口
port: 10086
spring:
application: #项目名称
name: eurekaserver
eureka:
client:
service-url: #地址信息
defaultZone: http://127.0.0.1:10086/eureka
在启动类中启动项目
3.在服务中点击端口即可跳转到eureka的管理页面
4.将子工程注册进eureka中
- 在子项目pom文件中添加依赖
<!-- 在eureka中注册 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 在子项目配置文件中添加eureka配置
在spring标签中放入
- 重启子项目就可以看到子项目全部注册进eureka中了
5.使用RestTemplate发送http请求调用微服务
- 在需要调用微服务的子工程的启动类中注入RestTemplare
//创建restTemplate对象
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
- 在service类中使用RestTemplare发送请求得到所需数据
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
//2.利用RestTemplate发送http请求,获取user信息
//url路径写服务名称
String url="http://userservice/user/"+order.getUserId();
//发送http请求,实现远程调用
User user = restTemplate.getForObject(url, User.class);
//order中加入用户信息
order.setUser(user);
// 4.返回
return order;
}
}
这里需要注意的是:我们要调用其他子工程上的微服务,而其他子工程可能是部署在其他服务器上的,我们不一定知道地址,而且后期维护比较麻烦,所以这里的url不能直接写服务器地址,而是要写在eurrka中注册的服务名称即可,eureka会通过负载均衡调用服务
负载均衡
通俗来讲就是把同一件事情分发给不同的服务器去做,有效地减小了单台服务器的负载
配置
由于我们这里只有一台服务器,所以只能用idea中的服务复制来模拟
步骤:
- 在idea的service面板中选中一个service,然后按ctrl+D,会出现下列页面
- 由于端口和被辅助的那个service是冲突的。所以要修改端口,找到
VM options
这个输入框,输入-Dserver.port=指定端口
即可 - 在子工程的启动类注入restTemplate的方法上写上
@LoadBalanced
即可开启负载均衡 - 启动service即可
此时eureka就会根据service当前的状态自动分配任务,以达到减小负载的目的