spring cloud笔记--微服务基础

微服务基础

单体系统初期可以非常方便的开发和使用,但随着系统的发展,维护成本会变得越来越大,且难以控制。

微服务主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作,被拆分成的每个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并每个服务都维护着自身的数据存储,业务开发,自动化测试案例及独立部署机制。

springCloud

SpringCloud是一个基于SpringBoot实现的微服务架构开发工具,为微服务架构中涉及的配合管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,决策竞选,分布式会话和集群状态管理等操作提供了一种简单的开发方式。

包含的子项目:

  • Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端配置信息刷新,加密/解密配置内容等
  • Spring Cloud Netflix:核心组件,对多个Netflix OSS开源进行整合
    • Eureka:服务治理组件。包含服务注册中心、服务注册与发现机制的实现
    • Hystrix:容错管理组件。实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力
    • Ribbom:客户端负载均衡的服务调用组件 。
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件。
    • Zuul:网关组件,提供智能路由,访问过滤等功能
    • Archaius:外部化配置组件
  • Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或事件,以触发后续的处理,比如用来动态刷新配置等
  • Spring Cloud Cluster:针对zookeeper,redis,Hazelcast,Consul的选举算法和通用状态模式的实现
  • Spring Cloud CloudFoundry:
  • SpringCloud Consul:服务发现与配置管理工具
  • Spring Cloud Stream:通过redis、rabbit或kafka实现的消费微服务,可以通过简单的声明式模型来发送和接收消息
  • Spring Cloud AWS:用于简化整合Amazon Web Service 组件
  • Spring Cloud Security:安全工具包,提供在zuul代理中对OAuth2客户端请求的中继器
  • Spring Cloud Sleuth:Spring Cloud 应用的分布式跟踪实现,可以完美整合Zipkin
  • Spring Cloud Zookeeper:基于Zookeeper的服务发现与配置管理组件
  • Spring Cloud Starters:Spring Cloud 的基础组件,是基于Springboot风格项目的基础依赖模块
  • Spring Cloud CLI:用于在Groovy中快速创建Spring Cloud 应用的Spring Boot CLI插件

微服务构建:SpringBoot

springboot:用于构建微服务的基础框架

启动springboot方法:

  • main函数启动
  • 执行mvn spring-boot:run
  • mvn install 将应用打包成jar包,再通过java -jar xxx.jar

注解:

  • @RunWith(SpringJUnit4ClassRunner.class):引入Spring对JUnit4的支持
  • @SpringApplicationConfiguration(classes = HelloApplication.class):指定Spring Boot的启动类
  • @WebAppConfiguration:开启Web应用的配置,用于模拟ServletContext。

多环境配置:通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

启动:

java -jar xxx.jar --spring.profiles.active = test

actuator

spring boot应用增加的spring-boot-starter-actuator模块功能

pom.xml

复制代码
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

spring-boot-starter-actuator模块根据应用依赖和配置自动创建出来的监控和管理端点。通过这些端点可以实时获取应用的各项监控指标,

原生端点
  • 应用配置类:获取应用程序中加载的应用配置,环境变量,自动化配置报告等与spring boot应用密切相关的配置类信息
    • /autoconfig:用来获取应用的自动化配置报告。方便找到一些自动化配置为什么没有生效的具体原因
      • positiveMatches:返回条件匹配成功的自动化配置。
      • negativeMatches:返回条件匹配不成功的自动化配置。
    • /beans:用来获取应用上下文中创建的所有Bean
      • 包含信息:bean:名称、scope:作用域、type:java类型、resource:class文件具体路径、dependencies:依赖的bean的名称
    • /configprops:用来获取应用中配置的属性信息报告
      • prefix:代表属性配置前缀
      • properties:代表各个属性的名称和值
    • /env:用来获取应用所有可用的环境属性报告
      • 包括环境变量,jvm属性,应用的配置属性,命令行参数
    • /mappings:用来返回所有spring mvc的控制器映射关系报告。
    • /info:用来返回一些应用自定义的信息,默认返回一个空的json内容
  • 度量指标类:获取应用程序运行过程中用于监控的度量指标,eg:内存信息,线程池信息,http请求统计等
    • /metrics:用来返回当前应用的各类重要度量指标,比如内存信息,线程信息,垃圾回收信息等
    • /gauge.*:http请求的性能指标之一,主要用来反映一个绝对数值
    • counter.*":http请求的性能指标之一,主要用来作为计数器使用,记录增加量和减少量
    • 可以通过注入CounterService和GaugeService来实现自定义的统计的指标信息
    • /health:用来获取应用的各类健康指标信息。一些自带实现的常用资源的健康指标检测器都通过HealthIndicator接口实现,并会依据依赖关系的引入实现自动化装配
    • 自定义实现检测器
      • 实现HealthIndicator接口,重写health()函数可实现健检查。
      • 返回的Health对象中,包含两项内容
        • 状态信息,UP,DOWN,UNKNOWN,OUT_OF_SERVICE
        • 详细信息,Map方式存储
    • /dunp:用来暴露程序运行中的线程信息
    • /trace:返回基本的http跟踪信息
  • 操作控制类:提供了对应用的关闭等操作类功能。
    • 关闭应用的端点/shutdown
相关推荐
weixin_BYSJ19874 小时前
【计算机毕设】基于SpringBoot与Vue的文物保护档案管理系统08621
vue.js·spring boot·spring cloud·微服务·架构·django·课程设计
老当益壮梁奶奶4 小时前
51单片机DS18B20温度传感器详解:单总线时序与C51驱动实现
笔记·stm32·单片机·嵌入式硬件·51单片机
小叶肥辉5 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
从零开始的嵌入式之旅7 小时前
day44
arm开发·经验分享·笔记·嵌入式硬件
商业白皮书9 小时前
杭州企业做 GEO 怎么选服务商?B2B 制造、外贸出海与品牌连锁选型指南
笔记
商业白皮书10 小时前
密不透风的瑕疵防线:东集SEV400视觉传感器,定义“轻量化”精准检测
笔记
右耳朵猫AI12 小时前
Go周刊2026W37 | Ebitengine 纯 Go 化、simd 重写 TurboPFor、json/v2 落地
后端·微服务·go
谢白羽13 小时前
MiniMax-H3 : 4卡 H20-3e一套权重部署实践/8卡H200部署优化实测
笔记·llm·论文·大模型部署·sglang
志尊宝13 小时前
Vue3 零基础每日笔记(024):组件的创建与使用——从 import 到自动导入
前端·vue.js·笔记·前端框架·html5
@PHARAOH13 小时前
WHAT - 从前端组件化思维到后端架构设计入门
前端·微服务·架构