4006-998-758
3000+课程任你选择
分布式微服务架构
研发学院 微服务架构 开课时间:2022-05-07
范钢

从事软件研发工作近二十年,并且现在一直坚守在大型软件架构设计一线工作。从需求分析、软件开发到项目管理、架构设计都有丰富的从业经验,尤其熟悉互联网架构与分析的特点。先后主持或参与了数十个国内外大型软件项目,涉及领域包括互联网、金融、军工、财务、税务等领域。先后为京东、淘宝网、支付宝等电商网站设计电子发票开票平台,为全国各地各行各业的纳税人设计增值税发票在线开票系统,为各级税务机关提供税务大数据风险监控平台。此外,还是大型遗留系统改造专业户,多次参与大型遗留系统改造、软件系统重构等重大项目,长期关注大型业务系统的品质保证、防止腐化以及技术改造等困扰软件企业的问题,进而提出了许多实用而有效的解决方案,在遗留系统优化与改造方面有丰富的经验。


查看老师详情
课程内容


课程简介


近些年,随着互联网的不断发展,市场变化越来越快,需求变更越来越频繁。为了能够跟上市场变化的脚步,在市场竞争中占得先机,越来越多的研发团队选择敏捷开发、快速迭代。然而,越来越庞大的软件系统,越来越复杂的业务逻辑,使得系统维护变得越来越困难,变更成本越来越大,团队工作效率越来越低。许多用户需求需要拖延数月才能交付,使得软件企业痛失有利商机,在市场竞争中处于不利地位。微服务架构正是解决复杂系统的应对之策。

微服务架构将复杂系统化整为零,拆分成一个一个的微服务。然后,将庞大的开发团队拆分成一个一个的独立功能团队,去维护各自的微服务。采用微服务架构降低了团队沟通的成本,降低了系统维护的复杂度,更降低了系统发布的周期,使得我们可以快速交付、快速应对市场需求。

但是,微服务应当如何架构?它有哪些技术特点与技术难点?本课程将会用许多的真实案例讲解,什么是微服务,如何用微服务架构我们的系统,并用工作坊的形式,实际带领学员去架构微服务,在动手中获得知识。


培训特色


本课程注重实战,并以工作坊的形式提供很多案例,让学员通过练习掌握微服务架构设计的过程,以及从传统架构向微服务改造的过程。同时,通过大量真实的案例,讲解许多公司在开展微服务转型过程中面临的难题、解决的思路,以及最终的设计。


课程大纲



授课内容

第一部分 分布式系统架构

第一单元 分布式系统概述

什么是互联网分布式系统

1.      集中式系统在面对互联网时的弊病

2.      分布式系统的概念及其优势

 

大型互联网分布式架构的演化过程

1)All-in-One集中式架构设计

2)多级集中式架构及其弊病

3)前后端分离与读写分离的架构设计

 

生产型业务系统的分布式设计

1.      数据库的横向纵向切分

2.      分布式缓存的设计

3.      异步化操作与分布式队列

 

生产型业务系统未来的发展趋势

1.      微服务的架构设计

2.      服务网格Service Mesh

3.      NewSQL数据库

第二单元 分布式系统技术专题

分布式缓存

1.      本地缓存vs.分布式缓存

2.      分布式缓存设计原理与高可用设计

3.      Redis分布式缓存的部署演练

4.      Redis分布式缓存设计实践

5.      Redis分布式缓存设计应注意的问题

 

内存数据库

1.      内存数据库运行原理

2.      内存数据库设计选型

3.      Redis内存数据库设计实践

1) 内存数据库+异步化技术方案

2) 京东订单系统的优化过程

 

分布式事务

1.      分布式事务的两阶段提交

2.      TCC方案

1)TCC方案设计原理

2)阿里的Seata与GTS

3)TCC方案的设计实现

3.      基于消息的分布式事务

1) 基于消息的最终一致性

2) 设计实践及其存在的问题

3) 基于半消息的设计实践

4) 基于消息表的设计方案

 

分布式锁

1.      分布式锁的应用场景及其原理

2.      基于数据库的设计方案

3.      基于Redis的设计方案

1) 基于Redis的设计实践

2) 方案存在的问题

4.      基于etcd的设计方案

1) etcd的特点介绍

2) etcd在分布式锁中的设计实现

 

分布式消息队列

1.      异步化操作与分布式消息队列

2.      RabbitMQ, RocketMQ, ActiveMQ与kafka的比较

3.      RabbitMQ的部署演练与设计实践

4.      RocketMQ的部署演练与设计实践

5.      Kafka的部署演练与设计实践

第二部分 微服务架构设计

第三单元 微服务的设计

Nacos注册中心方案

1.      服务发现的设计

Ø  使用ribbon的设计

Ø  使用feign的设计

2.      微服务高可用的设计方案

Ø  断路器设计模式

Ø  线程池隔离、优雅降级、熔断与限流

Ø  Sentinel的断路器设计

 

演练:使用Nacos构建高并发高可用微服务系统

1.      搭建Nacos注册中心与配置中心

2.      用ribbon与feign两种方式开发微服务

3.      用Sentinel实现微服务间的高可用

1) 故障转移、熔断措施、服务降级

2) 限流措施

4.      实现Sentinel配置的持久化存储

第四单元 微服务层的设计

微服务架构的6种设计模式

1.      聚合模式

案例:电商网站购物功能的设计

Ø  微服务前后端分离的设计

Ø  分布式事务的两阶段提交

Ø  TCC方案与阿里Seata

Ø  采用分布式事务解决跨库的事务操作

案例:电商网站下单服务的设计

单一职责原则与领域驱动设计

Ø  互联网纵向切分在微服务的实现

Ø  纵向切分应当注意的设计问题

Ø  避免跨库关联查询的设计

2.      代理模式

案例:电商网站支付功能的设计思路

案例:电商网站多渠道支付的微服务实现

3.      链式模式

4.      分支模式

5.      数据共享模式

案例:大数据与微服务结合的架构设计

6.      异步消息模式

案例:12306的异步化操作

案例:电商网站异步化操作的微服务实现

 

微服务的粒度

1.      微服务的拆分原则

2.      微服务的拆分方式

 

微服务设计的反模式

1.      太多数据迁移

2.      数据共享反模式

3.      频繁交互反模式

探讨:如何解决微服务接口太多的问题

第五单元 服务网关

服务网关在微服务架构中的作用

1.      多渠道用户接入

微服务前后端分离的架构设计

2.      微服务的负载均衡

负载均衡的难题:Session管理

3.      路由网关(Spring Cloud Gateway)

蓝绿发布、滚动发布、灰度发布与金丝雀发布

权限验证与安全保障

智能路由与服务迁移

过滤器的设计与配置

4.      流量控制与节流

练习:设计服务网关、路由网关与断路器

第六单元 微服务开发实战演练

用实际项目演练微服务开发的整个过程

1.      演练:从单体应用到微服务的设计转型过程

2.      微服务开发的组织形式:父项目与基础平台

3.      微服务开发的组织形式:多环境配置

4.      前端、聚合层、原子服务层的微服务设计

5.      服务网关的设计:用户权鉴与智能路由

 

微服务开发高阶:

1.    在分布式环境中高可靠地部署Eureka集群

2.    演练:如何实现跨语言的微服务调用

3.    演练:如何实现高并发下的优雅降级

 

微服务的测试与调优

1.      演练:微服务单元测试脚本与mock框架

2.      演练:针对微服务间相互交互的契约测试

3.      演练:断路器监控Turbine及其应用实践

4.      演练:链路跟踪skywalking与微服务的性能优化

 

微服务的技术中台建设:

1.      微服务技术中台应具备的要素

2.      配置中心Spring Cloud Config

3.      断路监控Spring Cloud Turbine

4.      链路监控Skywalking

5.      监控平台prometheus+EFK

第三部分 分布式云端部署

第七单元 Kubernetes云部署实战

分布式容器管理工具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.      演练:集群监控工具Prometheus的部署过程

K8s的权限管理:Account、Role、RoleBinding及其应用

集群调度:亲和性(Affinity)、污点(taints)与容忍(tolerations)

5.      演练:搭建Git+Jenkins+docker+k8s的自动化运维平台

1)从Git服务器上下载代码、编译、测试、打包

2)静态代码规范检查与形成测试报告

3)制作Docker镜像并上传本地私服

4)执行脚本进行灰度发布与K8s分布式云端部署

第八单元 云平台的系统监控与日志采集

云平台安全可靠运行的重要意义

1.    网站可用性的评价指标与系统监控

2.    系统监控的具体内容

3.    系统监控与日志采集的原理与系统架构

4.    国内主流系统监控与日志采集软件介绍

 

Prometheus系统监控与运维

1.    搭建系统监控组件Prometheus实操

2.    搭建监控数据展现组件Grafana实操

3.    设定rules进行系统监控告警实操

4.    设定pushGateway自定义监控与告警实操

 

EFK日志采集与故障分析

1.    日志采集与故障分析的重要意义

2.    搭建ElasticSearch+Flunted+Kibana日志采集实操

3.    使用Kibana系统监控组件分析与监控系统

4.    在Kibana中进行故障分析与运行监控


返回上一级