微服务注册与发现

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(实现零信任网络、金丝雀发布)

云原生实践原则

  1. 声明式配置:通过YAML定义期望状态(如K8s Deployment)
  2. 不可变基础设施:镜像一旦构建不再修改,通过重建实例更新
  3. 弹性设计:基于云负载均衡(ALB)+ 自动扩缩容策略
  4. 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、远程调用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值