Spring Cloud 实战微服务(超级详细)

本文介绍了Spring Cloud的基础知识和实战应用,包括服务提供者与服务消费者的构建。讨论了硬编码的问题及其对微服务架构的影响,并引入Spring Boot Actuator以增强服务监控。
摘要由CSDN通过智能技术生成
  1. Sring Cloud 实现前提以及技术储备
    1.Spring Cloud不一定适合所有人。
    2.Spring Cloud是基于Java语言的工具套件,所以学习它需要一定的Java基础。
    3.Spring Cloud是基于Spring Boot基础上进行构建的,因此延续了Spring Boot的契约模式以及开发方式。
  2. 工具以及版本
    1.JDK1.8
    2.Spring boot 1.5.9.RELEASE
    3.Spring cloud Edgware RELEASE
    5.IDEA
    6.Maven 3.3.9
  3. 服务提供者与服务消费者
    使用微服务构建是分布式系统,微服务之间通过网络进行通信。
    名词定义
    服务提供者服务的被调用方(即: 为其他服务提供服务的服务)
    服务消费者服务的调用方(即: 依赖其他服务的服务)




     

  4. 创建项目,编写服务提供者
    编写一个服务提供方(用户微服务),该服务可通过主键查询用户信息。为方便测试,使用mybatis作为持久层框架,使用Mysql作为数据库,项目地址

  5. 创建项目,编写服务消费者
    编写一个服务消费者(电影微服务)。它使用RestTemplate调用用户微服务的API,从而查询置顶ID的用户信息。项目地址

  6. 从以上两个项目中发现,硬编码有哪些问题?

        @GetMapping("/user/{id}")
        public User findById(@PathVariable Long id){
            return this.restTemplate.getForObject("http://localhost:8000/"+id, User.class);
        }

    从这个代码可以看出,我们是采用的硬编码,当然,我们也可以将其提取到配置文件中,例如:

    user:
      userServiceUrl: http://localhost:8000/

    然后将代码更改为:
     

        @Value("${user.userServiceUrl}")
        private String userServiceUrl;
        
        @GetMapping("/user/{id}")
        public User findById(@PathVariable Long id){
            return this.restTemplate.getForObject(userServiceUrl+id, User.class);
        }

    在传统的应用程序中,一般都是这么做,然而,这种方式有很多问题,如下所示:
    1.适用场景有局限: 如果服务提供者的网络地址(IP和端口)发生变化,会影响服务消费者。
    2.无法动态伸缩: 在生产环境中,每个微服务一般都会部署多个实例,从而实现容灾和负载均衡,在微服务架构的系统中,还需要系统具备自动伸缩的能力,例如动态增减节点等,硬编码无法适应这种需求。

  7. 为项目整合Spring Boot Actuator
    Actuator提供了很多监控端点,可以使用http://{ip}:{port}/{endpoint}的形式访问这些端点,从而了解应用程序的运行状况

    常用端点及描述
    端点描述HTTP方法是否敏感
    autoconfig显示自动配置的信息GET
    beans显示应用程序上下文所有的spring beanGET 
    configprops显示所有@ConfigurationPropertes的配置属性列表GET
    dump显示线程活动的快照GET
    env显示应用的环境变量GET
    health显示应用程序的健康指标GET
    info显示应用的信息,可使用info.*属性自定义info端点公开数据GET
    mappings显示所有@RequestMapping的路径列表GET
    metrics显示应用的度量标准信息GET
    shutdown关闭应用(默认情况下不开启,如需开启,需设置end-points.shutdown.enabled=true)POST
    trace显示跟踪信息(默认情况下为最近100个HTTP请求)GET


                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆_小茗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值