微服務(wù)架构最佳实践与案例分(fēn)析

微服務(wù)架构最佳实践与案例分(fēn)析
    马上咨询

    刘捷  曾任BEA中國(guó)专业服務(wù)部 高级架构师顾问 

    现任职Oracle架构咨询顾问,帮企业诊断架构性能(néng)问题,曾任职BEA(中國(guó))资深软件架构师,十余年的企业软件架构、开发和管理(lǐ)经验,侧重于企业应用(yòng)软件架构设计.主要负责客户大型项目的架构设计和研发,作為(wèi)技术专家保证项目的成功实施,运行和维护。参加过全國(guó)/全省多(duō)个大型的计算机应用(yòng)项目,擅長(cháng)的领域包括電(diàn)信,金融、税務(wù),大型互联网web2.0应用(yòng)等。此前就职于IBM,任软件架构师。 在此之前曾任日本东京一家软件企业的资深技术顾问。

    為(wèi)什么需要该课程

    微服務(wù)是一种分(fēn)布式系统架构解决方案,推动细粒度服務(wù)的使用(yòng),这些服務(wù)协同工作,且每个服務(wù)都有(yǒu)自己的生命周期。因為(wèi)微服務(wù)主要围绕业務(wù)领域建模,所以避免了由传统的分(fēn)层架构引发的很(hěn)多(duō)问题。微服務(wù)也整合了过去十年来的新(xīn)概念和技术,因此得以避开许多(duō)面向服務(wù)的架构中的陷阱。

    随着 RESTful、云计算、DevOps、持续交付等概念的深入人心,微服務(wù)架构逐渐成為(wèi)系统架构的一个代名词。那么微服務(wù)是否是业界期待已久的企业架构解决方案呢(ne)?在微服務(wù)架构的实施过程中存在着怎样的困难和挑战呢(ne)?在过去几年的时间里,我们一直在探索和实践,将其复杂的业務(wù)支撑系统逐渐演进為(wèi)基于微服務(wù)架构的系统。这期间也经历了从微服務(wù)的理(lǐ)论认识,到小(xiǎo)范围实践、迭代,再到多(duō)个基于微服務(wù)构建的项目已经成功上線(xiàn)的过程。在感受微服務(wù)為(wèi)开发实践、测试策略、部署、运维等带来改变的同时,也切身體(tǐ)会到使用(yòng)微服務(wù)架构,对系统灵活性、可(kě)伸缩性方面的提升,以及对团队应对变化能(néng)力的提升。鉴于此,本课程从实践的角度出发,首先阐述了单块架构存在的弊端以及微服務(wù)的理(lǐ)论基础。接着通过实践部分(fēn),让读者能(néng)够體(tǐ)验从零开始搭建第一个微服務(wù)的过程,包括代码静态检查、基础设施构建、 Docker映像构建及部署、持续交付流水線(xiàn)、服務(wù)的日志(zhì)聚合以及监控和告警。随后,探讨在微服務(wù)的实践过程中所积累的经验,包括基于HAL的通信机制、消费者驱动的测试,并通过一个真实的案例,帮助读者更好地理(lǐ)解微服務(wù)架构所带来的灵活性、易扩展性和独立性。

    微服務(wù)是一个快速发展的主题。尽管它不是一个新(xīn)的想法(虽然这个词本身是),但世界各地的人们所获取的经验以及新(xīn)技术的出现正在对如何使用(yòng)它产生深遠(yuǎn)的影响。因為(wèi)其变化的节奏很(hěn)快,所以本课程更加关注理(lǐ)念,而不是特定技术,因為(wèi)实现细节变化的速度总是比它们背后的理(lǐ)念要快得多(duō)。而且,我完全相信几年后我们会对微服務(wù)适用(yòng)的场景了解更多(duō),也会知道如何更好地使用(yòng)它。

    随着移动互联时代的到来,数据量急剧增加,并发量也变得越来越有(yǒu)挑战,企业在规划和设计分(fēn)布式系统的总體(tǐ)架构,涉及到方方面面的知识点,可(kě)选的方案也很(hěn)多(duō),如何在各种各样,纷繁复杂的技术中构建最适合企业的分(fēn)布式系统架构(Distributed Architecture),变成了一件极具挑战的事情。

    一个好的分(fēn)布式架构可(kě)以以最低的成本、更灵活的方式,满足企业用(yòng)户需求。相反,糟糕的架构,不但花(huā)费了重金,而且架构过于复杂、过于笨重,線(xiàn)上故障不断,架构灵活性差,阻碍业務(wù)的发展。传统的 Monoliths 等架构已无法满足业務(wù)持续快速创新(xīn)的需求, 分(fēn)布式系统架构(DistributedArchitecture)应运而生。相信大家对分(fēn)布式系统架构都有(yǒu)一定的认识,但对分(fēn)布式系统架构如何在项目中落地实践,缺乏一些经验。

    该课程适应于各类技术人员.细粒度的微服務(wù)架构包含了很(hěn)多(duō)方面的内容,所以本课程涉及范围很(hěn)广,适用(yòng)于对系统的设计、开发、部署、测试和运维感兴趣的人们。对于那些已经走上更细粒度架构之路的人,无论是开发新(xīn)应用(yòng),还是拆分(fēn)现有(yǒu)的单块系统,都会因课程里很(hěn)多(duō)的实用(yòng)建议而受益。对于想要了解微服務(wù)方方面面的人,也可(kě)以帮助你确定微服務(wù)是否适合你。

    课程内容安排

    1单元   微服務(wù)架构概述
    内容一:微服務(wù)架构诞生為(wèi)什么出现微服務(wù)架构
    1. 单块架构及其面临的挑战
    2. 分(fēn)层应用(yòng)架构
    3. 单块架构特点
    4. 单块架构面临的挑战
    5. 通过某传统ERP系统為(wèi)案例分(fēn)析上線(xiàn)后问题

    内容二:微服務(wù)架构与SOA架构
    1. SOA的基本概念
    2. SOA方法學(xué)和其他(tā)方法學(xué)的比较
    3. 面向服務(wù)的分(fēn)析和设计概述
    4. SOA概念层次
    5. SOA参考架构
    6. SOA基础架构设施
    7. ESB基础概念和职责
    8. 协议驱动和API驱动的ESB
    9. BPM概念和SOA
    10. 业務(wù)流程建模和基于服務(wù)的BPM
    11. 软件體(tǐ)系结构的演变和面向服務(wù)的设计原则
    12. 通过多(duō)个SOA架构案例分(fēn)析

    内容三:微服務(wù)架构
    1. 為(wèi)什么需要微服務(wù)架构
    2. 如何解决传统应用(yòng)架构的问题
    3. 微服務(wù)架构是什么
    4. 微服務(wù)架构概念
    5. 微服務(wù)架构参考架构模式
    6. 通过分(fēn)析多(duō)个微服務(wù)架构案例,了解微服務(wù)架构的参考模式

    第2单元-微服務(wù)架构—服務(wù)分(fēn)解和集成
    内容一:微服務(wù)分(fēn)解和颗粒度
    1. 微服務(wù)架构构成(服務(wù)拆分(fēn)、服務(wù)拓扑关系图);
    2. 微服務(wù)架构设计原则;
    3. 微服務(wù)架构服務(wù)粒度设计;
    4. 微服務(wù)架构之我们的实践案例;
    5. 通过大量项目案例分(fēn)析,什么是好的服務(wù),服務(wù)的分(fēn)解和服務(wù)颗粒度
    内容二:微服務(wù)集成
    1. 微服務(wù)集成
    2. 微服務(wù)集成技术
    3. 避免破坏性修改
    4. 保证API的技术无关性
    5. 使你的服務(wù)易于消费方使用(yòng)
    6. 隐藏内部实现细节
    7. 微服務(wù)接口-為(wèi)用(yòng)户创建接口
    8. 微服務(wù)同步与异步
    9. 微服務(wù)编排与协同
    10. 微服務(wù)遠(yuǎn)程过程调用(yòng)
    11. 微服務(wù)REST和HTTP
    12. 实现基于事件的异步协作方式
    13. 通过大量项目案例分(fēn)析,服務(wù)的集成
    第3单元-微服務(wù)架构设计开发实现—基于SpringBoot和SpringCloud动手实现一个完整的微服務(wù)
    内容一:微服務(wù)架构开发实现---SpringBoot
    1. Spring Boot概述
    2. 运用(yòng)Spring Boot
    3. Groovy与Spring Boot CLI
    4. 在Spring Boot中使用(yòng)Grails
    5. 深入Actuator
    6. 部署Spring Boot应用(yòng)程序
    7. Spring Boot 的数据访问
    8. Spring Boot 企业级开发
    9. Spring Boot 开发部署与测试
    10.    多(duō)个基于SpringBoot实际项目的架构分(fēn)析(為(wèi)何这样设计/优点/缺点/当初的考虑)

    内容二:微服務(wù)架构与云架构--Spring Cloud平台
    1. 云计算平台架构
    2. 為(wèi)什么选择Spring Cloud
    3. Spring Cloud
    4. 服務(wù)治理(lǐ):Spring Cloud Eureka
    5. 客户端负载均衡:Spring Cloud Ribbon
    6. 服務(wù)容错保护:Spring Cloud Hystrix
    7. 声明式服務(wù)调用(yòng):Spring Cloud Feign
    8. 分(fēn)布式配置中心:Spring Cloud Config
    9.   消息总線(xiàn):Spring Cloud Bus
    10. 多(duō)个基于SpringBoot和SpringCloud云架构,谈微服務(wù)和云架构
    4单元--微服務(wù)架构基础框架和平台
    内容一:微服務(wù)基础\平台
    1. 微服務(wù)架构设计之开发框架选择(Spring Boot);
    2. 微服務(wù)架构设计之容器选择(Docker);
    3. 微服務(wù)架构设计之服務(wù)注册选择(Zookeeper、Etcd、Consul);
    4. 微服務(wù)架构设计之服務(wù)网关选择(Nginx、Node.js、Netflix Zuul);
    5. 微服務(wù)架构设计之自动化部署选择(Jenkins、GitLab CI);
    6. 微服務(wù)架构设计之最佳实践案例;
    第5单元--微服務(wù)注册与发现
    内容一:微服務(wù)注册
    1. 為(wèi)什么要服務(wù)注册
    2. 服務(wù)注册实现方式
    3. 使用(yòng)NetflixEureka/SpringCloud实现服務(wù)注册
    4. 使用(yòng)NetflixRibbon/SpringCloud实现客户端负载均衡

    内容二:微服務(wù)发现
    1. 為(wèi)什么要服務(wù)发现
    2. 服務(wù)发现的实现方式
    第6单元--微服務(wù)建模与领域驱动设计
    内容一:微服務(wù)建模
    1. 如何建模服務(wù)
    2. 什么样的服務(wù)是好服務(wù)
    3. 微服務(wù)的松耦合和高内聚
    4. 微服務(wù)限界上下文(wén)
    5. 微服務(wù)的业務(wù)功能(néng)
    6. 逐步划分(fēn)服務(wù)上下文(wén)
    7. 微服務(wù)与业務(wù)概念
    8. 微服務(wù)技术边界
    9. 通过案例分(fēn)析微服務(wù)建模

    内容二:微服務(wù)与领域驱动设计
    1. 微服務(wù)基础及领域驱动设计
    2. 领域驱动设计基本原理(lǐ)
    3. 领域驱动设计的工件
    4. 业務(wù)事件
    5. 实體(tǐ)Entity及聚合Aggregation识别
    6. 统一语言及限界上下文(wén)
    7. 服務(wù)划分(fēn)及定义
    8. 通过案例分(fēn)析微服務(wù)划分(fēn)和领域驱动设计
    7单元--微服務(wù)交付与测试
    内容一:微服務(wù)测试-持续集成与测试
    1. 微服務(wù)测试
    2. 实现服務(wù)测试
    3. 端到端测试的缺点
    4. 跨功能(néng)的测试
    5. 微服務(wù)测试案例分(fēn)析

    内容二:微服務(wù)发布
    1. 微服務(wù)架构如何代码控制?
    2. 微服務(wù)架构自动化测试?
    3. 微服務(wù)架构如何预先发布验证?
    4. 微服務(wù)架构如何灰度发布?
    5. 微服務(wù)架构如何自动化发布?
    6. 微服務(wù)架构设计软件质量保证最佳实践是什么
    8单元--微服務(wù)架构运维与监控
    内容一:微服務(wù)运维和监控
    1. 微服務(wù)系统设计监控重要性?
    2. 微服務(wù)系统设计监控数据采集方法是什么?
    3. 微服務(wù)系统设计如何监控设计?
    4. 微服務(wù)系统语义监控如何做?
    5. 微服務(wù)系统进程监控如何做?
    6. 微服務(wù)系统错误日志(zhì)监控如何做?
    7. 微服務(wù)系统设计监控的最佳实践是什么?
    8. 最佳实践与案例分(fēn)析
    第9单元--使用(yòng)微服務(wù)架构改造遗留系统
    内容一:使用(yòng)微服務(wù)架构改造遗留系统
    1. 背景与挑战
    2. 改造策略
    3. 逐步替换微服務(wù)
    4. 功能(néng)剥离和封装
    5. 依赖数据解耦和基础数据共享
    6. 通过案例分(fēn)析微服務(wù)架构改造