1、SpringCloud与Eureka
SpringCloud是Spring家族的一个微服务框架,他基于SpringBoot,为微服务体系中的架构问题,提供了解决方法——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
Eureka则是注册中心,SpringCloud将他作为服务发现功能,他是基于Rest进行操作的
2、创建基于SpringBoot的SpringCloud项目
2.1、创建一个SpringBoot项目,引入Eureka依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.2、使用applicaton.yml对Eureka程序进行配置
# 配置端口号
server:
port: 8761
# 配置注册中心名称
eureka:
instance:
namespace: eureka-server
client:
register-with-eureka: false #不注册自己
fetch-registry: false #不从注册中心获取信息
service-url:
defaultZone: http://localhost:8761/erueka/
2.3、在主程序main上添加@EnableEurekaServer注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
2.4、输入http://localhost:8761查看程序是否正常运行
3、编写provider程序
3.1、创建SpringBoot的module,添加EurekaDiscovery依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3.2、使用application.yml对程序进行配置
server:
port: 8002
spring:
application:
name: provider-ticket
eureka:
instance:
prefer-ip-address: true # 注册服务的时候使用服务的ip地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #注册中西南的url
3.3、编写售票的service类
@Service
public class TicketService {
public String getTicket(){
return "《厉害了,我的国!》";
}
}
3.4、编写售票的controller类
@RestController //返回json格式的数据
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/ticket")
public String ticket(){
return ticketService.getTicket();
}
}
3.5、访问页面,检查是否正确
- 注册中心Eureka中也出现了provider-ticket
4、编写consumer消费者程序
4.1、引入EurekaDiscovery依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
4.2、在容器中加入RestTemplate
- SpringCloud之间的Http通讯通过RestTemplate操作
@Bean
@LoadBalanced //开启负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
4.3、编写controller类
@RestController
public class TicketController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
return name + "购买了" + s + "电影票";
}
}
- 注册中心Eureka出现了provider-ticket和user-consumer