- Sring Cloud 实现前提以及技术储备
1.Spring Cloud不一定适合所有人。
2.Spring Cloud是基于Java语言的工具套件,所以学习它需要一定的Java基础。
3.Spring Cloud是基于Spring Boot基础上进行构建的,因此延续了Spring Boot的契约模式以及开发方式。 - 工具以及版本
1.JDK1.8
2.Spring boot 1.5.9.RELEASE
3.Spring cloud Edgware RELEASE
5.IDEA
6.Maven 3.3.9 - 服务提供者与服务消费者
使用微服务构建是分布式系统,微服务之间通过网络进行通信。名词 定义 服务提供者 服务的被调用方(即: 为其他服务提供服务的服务) 服务消费者 服务的调用方(即: 依赖其他服务的服务)
-
创建项目,编写服务提供者
编写一个服务提供方(用户微服务),该服务可通过主键查询用户信息。为方便测试,使用mybatis作为持久层框架,使用Mysql作为数据库,项目地址 -
创建项目,编写服务消费者
编写一个服务消费者(电影微服务)。它使用RestTemplate调用用户微服务的API,从而查询置顶ID的用户信息。项目地址 -
从以上两个项目中发现,硬编码有哪些问题?
@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.无法动态伸缩: 在生产环境中,每个微服务一般都会部署多个实例,从而实现容灾和负载均衡,在微服务架构的系统中,还需要系统具备自动伸缩的能力,例如动态增减节点等,硬编码无法适应这种需求。 -
为项目整合Spring Boot Actuator
Actuator提供了很多监控端点,可以使用http://{ip}:{port}/{endpoint}的形式访问这些端点,从而了解应用程序的运行状况常用端点及描述 端点 描述 HTTP方法 是否敏感 autoconfig 显示自动配置的信息 GET 是 beans 显示应用程序上下文所有的spring bean GET 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 是
Spring Cloud 实战微服务(超级详细)
最新推荐文章于 2024-06-19 08:53:57 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)