微服务架构与云原生部署
Mac Fan 查看讲师
百林哲咨询(北京)有限公司专家团队成员
现任某信息有限公司高级系统架构师,资深技术专家。从事软件研发工作近二十年,并且现在一直坚守在大型软件架构设计一线工作,尤其熟悉互联网架构与分析的特点,长期关注软件代码质量。
浏览:786次
详情 DETAILS

课程简介

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

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

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

课程收益

1. 了解微服务的技术架构选型

2. 掌握微服务架构的6种设计模式

3. 熟悉服务网关在微服务架构中的作用 

受众人群

中高级工程师、企业架构师、软件设计师、技术决策/解决方案人员等。

课程周期

212小时)

 课程大纲

主题

模块

授课内容

第一部分 微服务的设计开发

第一单元

微服务架构

原理篇

什么是微服务架构

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中进行故障分析与运行监控


企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1