1 在 父工程下创建 order_service 模块,作为服务消费者,同时也作为服务提供者
2 修改application.yml 中的端口
#服务端口号
server:
port: 8001
###服务名称 --注册到注册中心的服务名称
spring:
application:
name: order-service
###eureka基本配置信息
eureka:
client:
service-url:
####当前服务的注册中心地址
defaultZone: http://localhost:8100/eureka
###需要将服务注册到eureka上
register-with-eureka: true
#####需要去检索服务信息
fetch-registry: true
3 编写OrderController,并调用会员服务中的方法
@RestController
public class OrderController {
//restTemplate 由SpringBoot的web组件提供,并且默认整合了ribbon负载均衡器
// rest调用方式 底层由httpclient实现
@Autowired
private RestTemplate restTemplate;
//订单服务调用会员服务
@RequestMapping("/getOrder")
public String getOrder(){
//有两种调用方式,1-采用服务 别名方式调用 2-直接调用
String result= this.restTemplate.getForObject("http://127.0.0.1/getMember",String.class);
return result;
}
}
4 编写启动类 OrderApplication
@SpringBootApplication
@EnableEurekaServer
public class OrderApplication
{
public static void main( String[] args )
{
SpringApplication.run(OrderApplication.class, args);
}
//把restTemplate注册到SpringBoot容器中
@Bean
@LoadBalanced //如果使用 rest 以服务别名方式进行调用,要依赖ribbon负载均衡器,则一定要加此注解
//LoadBalanced 能让这个restTemplate在请求时拥有客服端负载均衡的能力
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
说明 用restTemplate 方式调用成功 了
会员服务实现本地负载均衡
订单服务调用会员服务,相对来说这里的订单服务就是客户端,所以实现了客户端的负载均衡
将会员服务的端口修改为 8100 再次启动,原来的不要关闭,相当于启动了两个 member-service 实例
在浏览器中输入 127.0.0.1:8001/getOrder,不断刷新,端口号回来回变化