:::info

  • 学习目标:

    • 深入到源码级熟悉 SpringCloud 技术栈,可以搭建一整套的微服务技术架构
    • 结合业务场景,给出各种分布式系统的技术方案
    • 结合业务系统,给出一套微服务高可用架构的保障机制
    • 微服务架构的容器化方案
    • 针对微服务的 DevOps + CI/CD 方案
    • 支持微服务运行的基础服务平台 :::

      1. 微服务基础技术架构

  • 服务网关:Zuul

  • 服务注册发现:Eureka
  • 负载均衡:Ribbon
  • 声明式 REST 调用:Feign
  • 限流熔断:Hystrix
  • 认证授权:Spring Security + OAuth2 + JWT
  • 消息中间件:RabbitMQ + Spring Cloud Stream
  • 分布式协调:Spring Cloud ZooKeeper
  • 开发框架:Spring Boot + Spring Web MVC + Spring Core + MyBatis
  • 服务文档:SwaggerUI
  • 消费者驱动式契约:Spring Cloud Contract

2. 分布式系统架构

传统的单块系统,变成微服务分布式系统后,此时会带来新的问题:分布式事务、分布式锁、分布式会话、单点登录、分布式一致性、分布式接口幂等性,等等技术问题。

需要针对这些技术问题,提供解决方案。

3. 微服务高可用架构

基于微服务架构的系统,需要保证系统基本的可用性、可靠性,避免服务雪崩等问题。

4. 容器技术

微服务化了之后,就会导致1个系统由几十个服务组成,每个服务可能由多个实例组成。
如何管理大量的微服务成为新的问题,如使用 docker+k8s 技术。

5. DevOps+CI/CD

jenkins + 自动化测试 + 自动化部署

打包 -> 单元测试 -> 运行静态代码检测
-> 自动部署到集成测试环境 -> 运行自动化的集成测试
-> 自动部署到系统测试环境 -> 运行自动化的系统测试
-> 自动部署到预发布环境 -> 运行自动化的压力测试/可用性测试
手动控制生产部署:
全自动化部署到线上生产环境,部署之后,自动化检查日志、监控项、线上验证测试

6. 支撑微服务的运维平台

  • 日志中心:ELK + Kafka + 自研组件,亿级大规模日志中心架构设计
  • 机器与 Metrics 监控:OpenFalcon
  • 配置中心:Apollo

    7. 微服务治理平台

    需要有一套微服务治理方案,最好能满足以下需求:

  • 服务分层

  • 服务鉴权
  • 自动化故障诊断
  • 容量预估以及扩容告警
  • 可用性监测
  • QPS、请求量、响应时间的监测
  • 性能瓶颈定位
  • 调用链跟踪
  • 接口版本管理
  • 服务上下线审批
  • 流量控制

    8. 线上生产环境部署

  • A/B 测试

  • 蓝绿部署
  • 灰度发布
  • 全链路压测
  • 系统回滚