38、springboot——分布式之SpringCloud
2021-02-15 13:18
标签:turn span over conf gis app consumer stat 实例 我这为了方便测试,只是创建了一个空的项目,然后再分别创建3个模块
创建注册中心模块
使用spring的初始化向导 由于要做注册中心,所以我们选择Eureka Server模块 接下下来再创建服务提供者和服务消费者模块 创建模块步骤都是一样,唯独服务提供者和服务消费者创建时选择的模块是Eureka Discovery Client,而不是Eureka Server,另外加一个Web模块 创建后的三个模块 注册中心默认的服务地址 启动服务之后控制台有打印 之后我们访问http://localhost:8761/ 说明注册中心配置成功 TicketService代码 TicketController代码 服务的地址要和我们创建的注册中心的地址想对应 注意:我们的注册中心必须是一直启动着,这样才能注册进去 启动着注册中心(eureka-server模块),然后启动服务提供者(provide-ticket模块)后; 可以在注册中心页面中看到我们注册成功的服务 通过RestTemplate进行访问远程服务 @LoadBalanced:使用负载均衡机制稍后再说明 restTemplate.getForObject("http://PROVIDE-TICKET/ticket", String.class) 服务地址(服务模块里的controller): 第二个参数:返回值类型 注意注册中心服务和服务提供者需要是开启状态才能调用成功 启动服务,链接访问 远程调用服务成功 即注册中心有两个或多个相同的服务时,比如这里有两个PROVIDER-TICKET服务注册了;启动了负载均衡机制时,那么服务消费者远程调用这个PROVIDER-TICKET服务时, 是轮回着调用的;以达到负载均衡。 38、springboot——分布式之SpringCloud 标签:turn span over conf gis app consumer stat 实例 原文地址:https://www.cnblogs.com/lyh233/p/12716128.html一、Spring Cloud简介
二、测试springcloud
一、创建3个项目分别作为注册中心,服务提供者,服务消费者
1、新建空项目
2、分别创建三个模块
二、在注册中心(eureka-server模块)中配置eureka信息
1、我这里用的是application.yml进行配置的
server:
port: 8761
eureka:
instance:
hostname: eureka-server #eureka实例主机名
client:
register-with-eureka: false #不把自己注册到eureka
fetch-registry: false #不从eureka上来获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/ #自己指定注册中心服务的地址
2、在启动器类中加@EnableEurekaServer注解启动Eureka注册中心的功能
/**
* 注册中心
* 1、配置Euraka信息
* 2、@EnableEurekaServer
*/
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
三、启动注册中心(eureka-server模块)服务查看效果
三、服务提供者(provide-ticket模块)提供服务
1、创建service和controller
import org.springframework.stereotype.Service;
@Service
public class TicketService {
public String getTicket(){
return "《我和我的祖国》";
}
}
@RestController
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/ticket")
public String getTicket(){
return ticketService.getTicket();
}
}
2、在application.yml中配置注册信息
server:
port: 8001
spring:
application:
name: provide-ticket
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的ip地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #指定注册中心服务的地址
3、启动项目,项目服务将会注册到注册中心里
四、服务消费者(consumer-user模块)调用服务
1、consumer-user的application.yml中进行相关配置
spring:
application:
name: consumer-user
server:
port: 8200
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的ip地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #指定注册中心服务的地址
2、在启动器类中把RestTemplate注入容器并开启发现服务的注解
@EnableDiscoveryClient //开启发现服务功能
@SpringBootApplication
public class ConsumerUserApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerUserApplication.class, args);
}
@LoadBalanced //使用负载均衡机制
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3、编写一个controller进行调用远程服务
@RestController
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
String s = restTemplate.getForObject("http://PROVIDE-TICKET/ticket", String.class);
return name+"购买了"+s;
}
}
第一个参数是http://服务名/服务地址4、测试
五、说明之前的负载均衡机制@LoadBalanced
文章标题:38、springboot——分布式之SpringCloud
文章链接:http://soscw.com/index.php/essay/55664.html