1.认识微服务
1.单体架构
1.适合小项目
2.优点:1.整个项目只有一个工程,结构简单开发周期短
2.部署简单
缺点:扩展困难,维护成本高
2.微服务框架
1.适合做中大项目
2.按照模块划分成若干 小单体的项目
3.要执行一个业务流程是若干微服务协作完成的
优点
1.单一职责原则
2.模块之间的耦合性小
缺点:开发成本高维护成本也高
3. 分布式架构
核心思想:
将单体系统的功能模块拆分为独立部署的子模块(服务),通过网络通信协作完成业务。
关键特性:
- 通信机制:常用 REST API、RPC(gRPC/Dubbo)、消息队列(Kafka/RabbitMQ)
- 数据一致性:需处理 CAP 定理(一致性、可用性、分区容错性)的平衡
- 典型模式:客户端-服务器、主从复制、对等网络、微服务(见下文)
优点补充:
- 技术异构性:不同模块可采用最适合的技术栈(如Java/Python/Go混用)
- 资源优化:按模块负载动态分配计算资源(如Kubernetes弹性伸缩)
缺点补充:
- 分布式事务:跨服务操作需通过 Saga、TCC 等模式补偿
- 调试复杂度:需全链路追踪工具(如Zipkin/Jaeger)定位问题
- 运维成本:需监控多个服务状态(如Prometheus+Granfana)
4. 微服务架构
核心思想:
以业务能力为边界拆分服务,追求高内聚低耦合,是分布式架构的细粒度实践。
关键特性:
- 服务拆分原则:单一职责(如用户服务、订单服务、支付服务)
- 通信轻量化:优先 HTTP/REST 或 gRPC,避免 ESB 等重型中间件
- 基础设施:需配套服务发现(Eureka/Consul)、配置中心(Apollo/Nacos)
优缺点对比分布式架构:
- 优势:更清晰的业务边界,支持独立团队自治开发
- 劣势:服务数量激增导致运维复杂度指数级上升(需自动化工具链支撑)
典型挑战:
- 服务雪崩:需熔断降级(Hystrix/Sentinel)
- 版本管理:需API网关(Kong/Spring Cloud Gateway)兼容多版本
- 数据孤岛:需事件驱动架构(EDA)或CQRS模式解耦
5. 云原生
核心思想:
基于云计算特性(弹性、Serverless、按需付费),构建自动化、可观测、抗脆弱的系统。
关键技术栈:
- 容器化:Docker + Kubernetes(Pod/Deployment/Service)
- 持续交付:CI/CD流水线(Jenkins/GitLab CI/Argo CD)
- 可观测性:日志(ELK/Loki)、监控(Prometheus)、链路追踪(Jaeger)
- 服务网格:Istio/Linkerd(实现零信任网络、金丝雀发布)
云原生实践原则:
- 声明式配置:通过YAML定义期望状态(如K8s Deployment)
- 不可变基础设施:镜像一旦构建不再修改,通过重建实例更新
- 弹性设计:基于云负载均衡(ALB)+ 自动扩缩容策略
- Serverless融合:将非核心服务(如图片处理)托管给Lambda/Function Compute
6.拆分单体项目成微服务项目
-
1、单体项目【电商】
-
搭建环境
-
运行
-
明确业务
-
登录 --> 搜索商品 --> 加入到购物车 --> 结算下单 --> 支付
-
登录跟支付的密码都是 123
-
-
源码分析
-
-
2、项目拆分
-
Fork URL
-
IDEA克隆
-
调整JDK11
-
Maven
-
字符集等
-
-
新增 pom.xml ---> 变成Maven项目 ---> 复制 hm-common 模块到项目根目录下 ---> 父工程聚合
-
7,服务注册与发现
-
4、服务注册与发现
-
1、Nginx实现负载均衡
-
2、服务注册
-
Nacos注册中心
-
实现
-
导入依赖
-
配置文件
-
启动
-
观察Nacos注册中心
-
-
-
-
3、服务发现
-
Nacos + OpenFeign实现服务发现、远程调用、负载均衡
-
导入依赖
-
Nacos、OpenFeign、LoadBalancer
-
-
配置文件
-
代码
-
编写Feign客户端
-
引导类开启Feign发现
-
注入Feign客户端,调用方法实现远程调用
-
-
-
-
-
5、远程调用
-

被折叠的 条评论
为什么被折叠?



