springcloud入门案例

Spring Cloud简介

Spring Cloud是Spring提供的微服务框架。它利用Spring Boot的开发特性简化了微服务开发的复杂性,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,这些工作都可以借助Spring Boot的开发风格做到一键启动和部署。
Spring Cloud的目标是通过一系列组件,帮助开发者迅速构件一个分布式系统,Spring Cloud 是通过包装其它公司产品来实现的,比如Spring Cloud整合了开源的Netflix很多产品。Spring Cloud提供了微服务治理的诸多组件,例如服务注册和发现、配置中心、熔断器、智能路由、微代理、控制总线、全局锁、分布式会话等。

Spring Cloud实现微服务的治理功能产品很多,下面简单介绍下Spring Cloud各个产品的作用,以及采用的原则,如下图所示
在这里插入图片描述

1、创建公共工程

为了降低服务之间的耦合度使用maven创建公共工程,统一管理案例使用的实体类和工具类。

公共工程的Payment类

package entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payment {
    private Integer id;
    private String message;
}

2、创建Eureka Server

2.1添加Eureka Server依赖

在这里插入图片描述

2.2启动器

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}

2.3配置文件

server:
  port: 9004
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url:
      # eureka 服务地址,如果是集群的话;需要指定其它集群eureka地址
      defaultZone: http://127.0.0.1:9004/eureka
    # 不注册自己
    register-with-eureka: false
    # 不拉取服务
    fetch-registry: false

2.4启动并测试

启动应用访问http://localhost:9004/
在这里插入图片描述

接下来模拟一个微服务调用的场景,有两个微服务,一个订单微服务,一个支付微服务,订单微服务通过远程调用支付微服务,完成支付功能。
● 支付微服务工程:服务提供者
● 订单微服务工程:服务使用者。

3、创建服务提供者

3.1添加SpringWeb和Eureka Client依赖

在这里插入图片描述

3.2启动器

@SpringBootApplication
@EnableEurekaClient
public class CloudPaymentApplication {

	public static void main(String[] args) {
		SpringApplication.run(CloudPaymentApplication.class, args);
	}

}

3.4配置文件

server:
  port: 9001
spring:
  application:
    name: cloud-payment-service
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9004/eureka
    fetch-registry: true
    register-with-eureka: true

4、服务消费者

4.1创建项目
如上像服务提供者创建完项目后导入openfeign依赖

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>

4.2编写api接口
CLOUD-PAYMENT-SERVICE为服务提供者的服务名

@FeignClient(value ="CLOUD-PAYMENT-SERVICE")
public interface PaymentService {
    @GetMapping("/payment/{id}")
    public Payment payment(@PathVariable("id") Integer id);
}

4.3编写controller远程调用服务

@RestController
@RequestMapping("/order")
public class OrderController {


    @Autowired
    private PaymentService paymentService;

    @RequestMapping("{id}")
    public ResponseEntity<Payment> getPaymentById(@PathVariable("id")Integer id){
        Payment payment = paymentService.payment(id);
        return ResponseEntity.ok(payment);
    }
}

4.4启动项目并访问http://localhost:9002/order/555 结果如下

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值