课程简介
近些年,随着互联网的不断发展,市场变化越来越快,需求变更越来越频繁。为了能够跟上市场变化的脚步,在市场竞争中占得先机,越来越多的研发团队选择敏捷开发、快速迭代。然而,越来越庞大的软件系统,越来越复杂的业务逻辑,使得系统维护变得越来越困难,变更成本越来越大,团队工作效率越来越低。许多用户需求需要拖延数月才能交付,使得软件企业痛失有利商机,在市场竞争中处于不利地位。微服务架构正是解决复杂系统的应对之策。
微服务架构将复杂系统化整为零,拆分成一个一个的微服务。然后,将庞大的开发团队拆分成一个一个的独立功能团队,去维护各自的微服务。采用微服务架构降低了团队沟通的成本,降低了系统维护的复杂度,更降低了系统发布的周期,使得我们可以快速交付、快速应对市场需求。
但是,微服务应当如何架构?它有哪些技术特点与技术难点?本课程将会用许多的真实案例讲解,什么是微服务,如何用微服务架构我们的系统,并用工作坊的形式,实际带领学员去架构微服务,在动手中获得知识。
课程收益
1. 了解微服务的技术架构选型
2. 掌握微服务架构的6种设计模式
3. 熟悉服务网关在微服务架构中的作用
受众人群
中高级工程师、企业架构师、软件设计师、技术决策/解决方案人员等。
课程周期
2天(12小时)
课程大纲
主题 | 模块 | 授课内容 |
第一部分 微服务的设计开发 | 第一单元 微服务架构 原理篇 | 什么是微服务架构 1. 微服务的特点与应用场景 2. 微服务与SOA架构的差别与联系 微服务的挑战 1. 软件规模化带来的挑战 案例:分析淘宝近十年的发展及其面临的挑战 1) 过去单体应用面临的问题 2) 现在微服务的解决思路及其面临的问题 3) 微服务的关键:小而专的微服务设计 4) 微服务实践:去中心化的技术治理 5) 微服务实践:去中心化的数据管理 2. 互联网高可用高并发带来的挑战 剖析:微服务架构在解决诸多互联网问题时的思路 1) 构建高并发、高可用的微服务技术架构 2) 微服务的弹性扩容、熔断、限流、降级等措施 3) 基于云原生的微服务容器化平台部署 |
第二单元 微服务 总体架构篇 | 微服务的技术架构选型 1. 微服务的注册中心选型: Zookeeper, Eureka, Consul, Nacos 2. 微服务的服务网关选型: Nginx, Node.js, Zuul, Springcloud Gateway 3. 微服务的技术开发框架: Springboot, Springcloud, Spring Cloud Alibaba 4. 微服务的容器化部署: Docker, Kubernetes 最简版的微服务架构 1. 注册中心Eureka与配置中心Config 2. 服务网关Spring Cloud Gateway 3. 微服务高可用调用Hystrix 4. 微服务的分布式队列Seata | |
第三单元 微服务架构 实践篇 | 基于Eureka的微服务设计开发演练 1. Spring Cloud Eureka的系统架构 2. Eureka Server的设计 3. Eureka Client的设计 4. 服务发现的设计 Ø 使用ribbon的设计 Ø 使用feign的设计 5. 构建高并发、高可用的微服务系统 Ø 断路器设计模式 Ø 线程池隔离、优雅降级与熔断 Ø Hystrix的断路器设计 练习:使用Eureka构建微服务系统 1. 搭建Eureka注册中心与Config配置中心 2. 用Springcloud开发生产者 3. 用ribbon与feign两种方式开发消费者 4. 用Hystrix实现微服务间的高可用 | |
第四单元 微服务架构 设计篇 | 微服务架构的6种设计模式 1. 聚合模式 案例:电商网站购物功能的设计 Ø 微服务前后端分离的设计 Ø 分布式事务的两阶段提交 Ø TCC方案与阿里Seata 演练:运用Seata实现微服务的分布式事务 Ø 基于消息的最终一致性设计 演练:基于消息实现微服务的分布式事务 案例:电商网站下单服务的设计 单一职责原则与领域驱动设计 Ø 互联网纵向切分在微服务的实现 Ø 纵向切分应当注意的设计问题 Ø 解决跨库关联查询的设计 演练:微服务间解决跨库关联查询的设计 2. 代理模式 案例:电商网站支付功能的设计思路 案例:电商网站多渠道支付的微服务实现 3. 链式模式 4. 分支模式 5. 数据共享模式 案例:大数据与微服务结合的架构设计 6. 异步消息模式 案例:12306的异步化操作 案例:电商网站异步化操作的微服务实现 微服务的拆分原则 1. 能不拆尽量不拆:减少微服务间的调用 2. 该拆分就得拆分 1) 公共模块该拆分就得拆分 2) 越来越复杂的模块该拆分就得拆分 微服务设计的反模式 1. 太多数据迁移 2. 数据共享反模式 3. 频繁交互反模式 探讨:如何解决微服务接口太多的问题 | |
第五单元 微服务架构 网关篇 | 服务网关在微服务架构中的作用 1. 多渠道用户接入 微服务前后端分离的架构设计 2. 微服务的负载均衡 负载均衡的难题:Session管理 3. 路由网关(Spring Cloud Gateway) 蓝绿发布、滚动发布、灰度发布与金丝雀发布 权限验证与安全保障 智能路由与服务迁移 过滤器的设计与配置 4. 流量控制与节流 练习:设计服务网关、路由网关与断路器 | |
第六单元 微服务架构 总结篇 | 1. 微服务架构设计之微服务无状态化设计; 2. 微服务架构设计之负载均衡设计; 3. 微服务架构设计之分级管理; 4. 微服务架构设计之异步调用(状态机等方式); 5. 微服务架构设计之设置合理超时; 6. 微服务架构设计之服务降级; 7. 微服务架构设计之幂等设计; | |
第七单元 微服务开发 实战演练篇 | 用实际项目演练微服务开发的整个过程 1. 演练:从单体应用到微服务的设计转型过程 2. 微服务开发的组织形式:父项目与基础平台 3. 微服务开发的组织形式:多环境配置 4. 前端、聚合层、原子服务层的微服务设计 5. 服务网关的设计:用户权鉴与智能路由 微服务开发高阶: 1. 在分布式环境中高可靠地部署Eureka集群 2. 演练:如何实现跨语言的微服务调用 3. 演练:如何实现高并发下的优雅降级 4. 微服务间调用的监控与调优 微服务的技术中台建设: 1. 微服务技术中台应具备的要素 2. 配置中心Eureka 3. 断路监控Spring Cloud Turbine 4. 链路监控Skywalking 5. 消息中间件kafka, rocketmq 6. 分布式缓存redis 7. 监控平台prometheus+EFK | |
第二部分 微服务的运维部署 | 第八单元 微服务架构 云原生与自动化部署 | 云原生(Cloud Native)的概念 1. 面向互联网分布式系统运维的难点与痛点 2. 云原生=微服务+DevOps+持续交付+容器化bus 3. 云原生架构的核心思想与“12因素(12-Factors)” 4. 云原生的设计实现:Kubernetes、微服务、服务网格 构建分布式持续集成环境 1. 什么是分布式持续集成 2. 大前端+技术中台的组织形式与微服务架构 3. 持续探索、持续集成、持续交付、按需发布的概念 云原生的自动化部署过程 1. 搭建持续集成环境:Jenkins 2. 单元测试、契约测试与代码规范性检查: Junit, Allure, SonarQube, Jacoco 3. 容器化部署:Docker及其镜像仓库 4. 分布式集群化管理框架:Kubernetes |
第九单元 微服务架构 容器篇 | Docker的基本原理 1. 虚拟化技术 vs. 容器技术 2. 容器技术的标准化概念 Docker运维实战 1. Docker容器管理与实操 2. Docker镜像管理与实操 3. 使用Dockerfile构建镜像 演练:微服务如何打包制作Docker镜像 4. Docker仓库管理与实操 演练:如何搭建私有镜像仓库Docker Registry 5. 实战演练 用Docker部署和运维rabbitMQ 用Docker部署和运维mysql 基于容器的微服务自动化运维 1. 微服务运维的难点与痛点 2. 基于Maven的Docker构建过程 3. 使用Jenkins编写定时任务 演练:基于容器的微服务持续集成过程 | |
第十单元 微服务架构 分布式云部署 | 分布式容器管理工具Kubernetes 1. Kubernetes的分布式管理运行原理 2. Kubernetes的基本组件及其应用场景: 无状态应用(Deployment)、有状态应用(StatefulSet)、批处理任务(Job)、后台支撑型(DaemonSet) 3. Kubernetes的虚拟网络原理:Node IP、Pod IP、Cluster IP 4. Kubernetes的安装部署与弹性扩容 基于Kubernetes的运维实操 1. 演练:微服务在Kubernetes上的高可用云端部署 基于yaml文件的微服务部署与弹性扩展过程 Node, Pod, Deployment, Service等基础组件及其实操 Label标签、Selector选择器及其实操 K8s的访问类型ClusterIP、NodePort、LoadBalancer及Ingress 2. 演练:Redis高可用集群在Kubernetes的部署 Kubernetes的三种IP及其在项目中的运用 有状态应用的部署及无头服务的应用 3. 演练:基于K8s搭建三种类型的MySQL集群数据库 K8s的存储类型:存储卷、持久化存储卷与StorageClass 4. 演练:基于K8s搭建Hadoop大数据平台 使用Dockerfile制作镜像并上传镜像仓库 K8s的配置信息管理:ConfigMap、Secret及其应用 5. 演练:集群监控工具Prometheus的部署过程 K8s的权限管理:Account、Role、RoleBinding及其应用 集群调度:亲和性(Affinity)、污点(taints)与容忍(tolerations) 演练:搭建Git+Jenkins+docker+k8s的自动化运维平台 1)从Git服务器上下载代码、编译、测试、打包 2)静态代码规范检查与形成测试报告 3)制作Docker镜像并上传本地私服 4)执行脚本进行灰度发布与K8s分布式云端部署 | |
第十一单元 微服务架构 运维调优篇 | 云平台安全可靠运行的重要意义 1. 网站可用性的评价指标与系统监控 2. 系统监控的具体内容 3. 系统监控与日志采集的原理与系统架构 4. 国内主流系统监控与日志采集软件介绍 SkyWalking性能监控与调优 1. 性能监控APM的重要意义及挑战 2. SkyWalking的特点及性能监控原理 3. 搭建SkyWalking服务器 4. 在各微服务中部署SkyWalking Agent 5. 演练:基于SkyWalking的性能分析与调优 Prometheus系统监控与运维 1. 搭建系统监控组件Prometheus实操 2. 搭建监控数据展现组件Grafana实操 3. 设定rules进行系统监控告警实操 4. 设定pushGateway自定义监控与告警实操 EFK日志采集与故障分析 1. 日志采集与故障分析的重要意义 2. 搭建ElasticSearch+Flunted+Kibana日志采集实操 3. 使用Kibana系统监控组件分析与监控系统 4. 在Kibana中进行故障分析与运行监控 |
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员
Mac Fan
百林哲咨询(北京)有限公司专家团队成员