20250901-微服务
20250901-微服务
1 基础知识
1.1 Iaas、Paas、Saas
序号 平台 说明 层级 举例
1 Iaas:基础设施 即服务 主机层面,虚拟机
不在关注机房、服务器、设备等。 低
2 Paas:平台 即服务 中间件,数据库、runtime环境等。
不在搭环境,关注应用开发。 中
3 Saas:软件 即服务 软件
应用也不开发了,直接用厂商的。 高
1.2 openStack
1.2.1 是:
- 定义1:官网:OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.
是云操作系统,提供大量资源池,包含计算、存储、网络。 - 定义2:OpenStack是一个自由、开源的云计算平台。它主要作为基础设施即服务(IaaS)部署在公用云和私有云中,提供虚拟服务器和其他资源给用户使用。该软件平台由相互关联的组件组成,控制着整个数据中心内不同的厂商的计算、存储和网络资源的硬件池。
- 定义3_华为铂金会员:OpenStack是一个云平台管理的项目,它不是一个软件,它是由几个主要的组件组合起来,为公有云、私有云和混合云的建设与管理提供软件的开源项目。简化云的部署过程并为其带来良好的可扩展性。
1.2.2 How
1.2.3 Where
1.2.3.1 基于OpenStack进行二次开发的商业系统
1.2.3.1.1 TECS CloudFoundation
中兴通讯精准云底座TECS CloudFoundation是一个面向ICT的融合云平台,基于业界两大开源平台OpenStack和Kubernetes,并将两者进行深度融合。它广泛兼容各种标准化、增强型及定制化的硬件设备,对外提供统一的算力(包括虚机、容器和裸金属)、安全和运维管理服务,构建面向全行业应用的通用云基础设施平台。同时,针对碎片化行业需求,通过微服务平台和通用的技术中间件服务,云底座提供敏捷业务开发的能力平台,助力行业应用的快速开发和部署。
TECS CloudFoundation在部署和运行形态上,可以按需,按交付场景进行选择,通过资源配置,安装组件及相关特性的适配,可以灵活的提供基础云服务,可以通过界面进行能力的扩缩容,支持场景的横向扩展及灵活切换。不管是电信云、行业云、还是IT云,TECS CloudFoundation 都能提供统一一致的基础架构、服务及运维,保证业务使用的连续性和灵活性。同时TECS CloudFoundation也支持提供技术服务和云原生技术栈,可运行在第三方的云设施之上。
技术特点:
1.资源精准配置:OpenStack+Kubernetes双核驱动,虚机、容器和裸金属等多种资源按需匹配
2.服务精简部署:PaaS组件按需裁剪,系统精简部署,减少冗余,节约成本
3.业务敏捷定制:完善的微服务平台+DevOps敏捷流程,灵活匹配企业新需求,快速开发新业务
客户价值:
1.提升效益 :提供全场景差异化部署方案,软硬件按需匹配,实现资源效益最大化。
2.降低成本:支持超轻量级边缘云部署,单节点起步,实现低成本创新和试错
3.共享成果:同源异构技术栈,支持共享复用,实现一处创新,全网复制
1.2.3.1.2 华为FusionSphere
华为FusionSphere虚拟化套件是业界领先的虚拟化解决方案,能够帮助客户带来如下的价值:
- 帮助客户提升数据中心基础设施的资源利用率。
- 帮助客户成倍缩短业务上线周期。
- 帮助客户成倍降低数据中心能耗。
- 利用虚拟化基础设施的高可用和强恢复能力,实现业务快速自动化故障恢复,降低数据中心成本和增加系统应用的正常运行时间。
FusionSphere虚拟化套件通过在服务器上部署虚拟化软件,使一台物理服务器可以承担多台服务器的工作。通过整合现有的工作负载并利用剩余的服务器以部署新的应用程序和解决方案,实现较高的整合率。
应用场景介绍
- 单虚拟化场景:
单虚拟化场景适用于企业只采用FusionCompute作为统一的操作维护管理平台对整个系统进行操作与维护的应用场景。包含资源监控、资源管理、系统管理等。
FusionCompute主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性。
- 多虚拟化场景:
多虚拟化场景适用于企业有多套虚拟化环境需要进行统一管理。多虚拟化场景提供如下主要功能:
统一管理和维护:支持同时接入FusionCompute和VMware虚拟化环境,对多虚拟化环境的资源和业务进行统一的管理和维护。
统一监控告警:支持对多个虚拟化环境、多种物理设备的告警进行统一接入、监控和管理。 - 私有云场景:
私有云场景适用于企业各部门需要各自管理虚拟资源及业务。发放业务时由管理员和租户分别完成不同的任务,共同完成业务的发放。管理资源时,管理员可以对系统所有资源进行管理;租户只能管理所属VDC的资源。
根据实际使用需求的不同,私有云场景又可分为多租户共享VPC场景和多租户私有VPC场景。
多租户共享VPC场景
该场景中,发放业务时管理员通过VDC将虚拟资源分给租户。租户在租户视图,创建虚拟机时可使用管理员在共享VPC中创建的网络。若在创建VDC时,将管理员加入了VDC中,则管理员一人在不同视图中,可完成所有任务。该场景适用于如下情况:
企业各部门需要各自管理除网络之外的虚拟资源(包含虚拟机、磁盘等)及业务。
企业中的网络由管理员统一规划和维护,企业各部门均使用管理员创建的网络。
多租户私有VPC场景
该场景中,发放业务时管理员通过VDC将虚拟资源分给租户。租户在租户视图,自行创建VPC、网络、虚拟机。当同时有共享网络需求时,可以由管理员创建共享VPC供所有租户使用。若在创建VDC时,将管理员加入了VDC中,则管理员一人在不同视图中,可完成所有任务。该场景适用于如下情况:
企业各部门需要各自管理虚拟资源(包含网络、虚拟机、磁盘等)及业务。
企业各部门的网络相互隔离,各自规划、创建和维护。
1.2.3.1.3 腾讯云、阿里云都有借鉴或二次开发
1.2.4 总结
可以自己部署的阿里云。
是开源的云平台,基于私有硬件,提供计算、存储、网络、容器等基础服务。
提高资源利用率、提高上线效率、提供高可用。
1.2.5 参考
OpenStack这一篇就够了! S, 结构完整、讲解全面、知识较新
1.3 组件基础
1.3.1 Feign:
声明式、http客户端。在微服务系统中,大大简化了http调用的代码。
用户只需要添加注解,Feign会自动生成实现类,完成请求发送、响应解析和负载均衡。
减少50%以上的HTTP请求代码量。
1.3.2 Eureka
服务注册、发现组件。
同Nacos。
1.4 API网关
1.4.1 是:
位于客户端与后台服务中间的组件,提供统一入口、路由、屏蔽后端服务复杂度。
同时,提供认证、限流、日志等附加功能。
1.4.2 为什么
单体应用拆分为多个服务后,对外需要统一入口。
相对之前的客户端直接调用后端服务:
不能动态扩展:增加新的服务,客户端或者负载均衡需要修改;
公共功能需要重复实现:如限流、安全控制等,需要各后端服务自己实现,浪费。
Ps:增加中间层,统一入口、屏蔽后端复杂、实现公共功能。
好处:
- 服务动态扩容;
- 故障自动熔断;
- 可以实现灰度发布;
- 集中了公共功能,简化后端服务的负担。
1.4.3 如何
1.4.3.1.1 部署方式
单节点网关:只1个网关,各种前端使用这1个网关。
多类型网关:多个网关,不同前端使用不同网关,如浏览器、APP区分网关。
1.4.3.1.2 实现原理
网关的核心逻辑就是路由转发,执行过滤器链。
基本配置:
spring:
application:
name: gateway # 服务名称
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos地址
gateway:
routes: # 网关路由配置
- id: order# 路由id, 自定义,唯一即可
uri: 127.0.0.1:/order # - 路由目的地,支持lb和http两种
uri: lb://orderService # 路由的目的地,lb是负载均衡,后面跟服务名称
predicates: # 路由断言,也就是判断是否符合路由规则的条件
- Path=/order-service/** # path 按照路径进行匹配,只要以/order-service/开头就符合规则
filters: # 过滤器,对请求和响应进行处理 - StripPrefix=1 # 过滤器,去除请求的前缀路径,StripPrefix=1 表示去除请求路径的第一个路径片段
- 客户端向 Spring Cloud Gateway 发出请求。
- 然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,
- 将其发送到 Gateway Web Handler。
- Handler 再通过指 定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。
Filter在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。
1.4.3.1.3 网关配置
1.4.3.1.3.1 路由断言工厂: Predicate Factory
路由判断条件,除了path,还有十几个。
时间断言:After、Before、Between。可用于版本切换(例如旧版API在某个时间后不再使用,新版API上线。例如,Before断言在2024-01-01之前路由到旧服务,之后切换到新服务)、灰度发布(例如,使用After断言在测试开始时间后逐步增加新版本流量)。
1.4.3.1.3.2 网关过滤器:GatewayFilter
可以对进入网关的请求和微服务返回的响应做处理。
1.4.4 使用常见报错
1.4.4.1 QueryRoutePredicateFactory.java 空指针错误
没有对应的路由。
如:路由注册是:- Path=/baidu/** ,前端请求是:http://localhost:8888/baidu2,就会报错。
1.4.4.2 注意:Path都要以/开始
- Path=producer-service2/** ##错误示范。
- Path=/producer-service2/** ##错误示范。
1.4.5 参考
从零开始的Spring Cloud Gateway指南:构建强大微服务架构 S,结构完整,阐述明白
1.5 Nacos
1.5.1 是
- Dynamic Naming and Configure Service:动态命名和配置服务。
- 动态服务发现、配置管理和服务管理平台。
1.5.1.1 核心功能包括:
1) 服务注册与发现:微服务实例启动时,向Nacos注册自身信息(如IP、端口),消费者通过Nacos查询可用服务列表。
2) 动态配置管理:支持微服务动态更新、灰度发布、版本控制。
3) 服务健康检查:通过心跳检测实例健康度,自动提出故障节点。
4) 流量管理:支持权重路由、负载均衡和简单DNS解析。
5) 服务及元数据管理:包括管理的服务描述、生命周期、静态依赖分析、健康状态、服务的流量、统计数据等。
6) MCP服务管理和转换:将存量的微服务API,通过简单的声明方式,快速实现0代码改动转化成MCP服务。
服务注册、服务发现、服务调用:
1.5.2 Why
在微服务架构中,服务实例动态扩缩容、容器化部署导致IP和端口频繁变化,传统硬编码或静态配置无法满足需求。Nacos资源注册解决了以下问题:
- 动态地址管理:实例信息实时更新,消费者无需重启即可感知变化。
- 弹性伸缩支持:与Kubernetes等容器编排工具集成,自动处理实例上下线。
- 高可用性:通过健康检查和故障剔除,确保调用方只访问健康实例。
- 集中化管理:统一配置和服务治理,降低运维复杂度。
1.5.3 How
1.5.3.1 拓扑结构
对外暴露端口2个:只需要暴露主端口(默认8848)和gRPC端口(默认9848),
其他端口为服务端之间的通信端口,请勿暴露其他端口。
1.5.3.2 部署模式
功能组件
1 Nacos Client 集成在用户应用里,向Nacos Server请求服务,具体是?
2 Nacos Server
3 固化存储 数据库或其他。
3种部署模式
1 单机模式 开发或实验环境。
2 集群模式 生产环境,确保高可用。
3 多集群模式 适用多数据中心场景。
curl -X POST ‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’
1.5.4 Where
1.6 Sentinel-服务保护
1.7 Seata-分布式事务
分布式事务管理软件。
解决服务拆分后,跨应用、跨数据库的数据一致性问题(之前的事务管理,都是在1个应用、1个数据库连接中,1个注解就可实现),微服务需要新的中间件。
1.7.1 Why
在微服务架构中,单个服务的本地事务无法保证跨服务的数据一致性。例如:
订单服务创建订单后,需调用库存服务扣减库存,若库存服务失败,订单需回滚。
1.7.1.1 Seata解决的核心问题:
- 避免数据不一致:防止因部分成功导致的数据混乱(如订单成功但库存未扣减)。
- 降低开发复杂度:自动处理事务补偿,开发者无需编写额外代码。
- 支持高并发:通过异步提交和锁优化,减少性能损耗。
1.7.2 How
核心组件
1 TC
Transaction Coordinator
事务协调器 维护全局和分支事务的状态,驱动全局事务提交或回滚。 1、实体:事务状态,含全局和分支事务。
2 TM
Transaction Manager
事务管理器 开始全局事务、提交或回滚全局事务。 2、动作:事务的开始、提交、回滚。
3 RM
Resource Manager资源管理器 1. 管理分支事务处理的资源, - 与TC交谈以注册分支事务和报告分支事务的状态,
- 并驱动分支事务提交或回滚。 3、实体:分支事务管理的资源;
4、动作:注册分支事务、报告分支事务状态。
5、动作:分支事务提交或回滚。
1.7.3 参考
1 官网
2 尚硅谷B站课程
3
2 实验
2.1 20250827—多模块工程、springcloud gateway
参考:
3 参考
序号 标题 评价 地址
1 一张图完整说明微服务基本概念和核心思想