您当前的位置:首页>课程>分布式软件体系架构

分布式软件体系架构

浏览:2414
分享

Bruce zhang Read more

百林哲咨询(北京)有限公司专家团队成员

深圳大眼科技有限公司的首席架构师,联合创始人。先后就职于中兴通讯、惠普GDCC、中软国际、ThoughtWorks等大型中外企业,精通包括C#、Java、Ruby、Scala、Python、JavaScript等多种语言。

简介

随着互联网的发展,大型分布式系统也越来越多、越来越复杂、越来越重要。如何有效地保证大型分布式系统7×24小时全天候持续稳定地运行也就成为了一个重要课题。

课程时长

2天(12H)

分享提纲

主题内容
第一部分:分布式体系架构基础

1.什么是分布式系统

分布式系统是一种计算系统,系统中多个组件通过网络通信的方式互联。本部分内容将详细介绍分布式系统的历史演进以及主要的架构特点。

2.典型分布式系统的演进

引入分布式系统,其目的是满足高并发与高性能需求。例如引入缓存、代理等手段改进性能,又例如在架构层面上对系统进行物理便捷分割,然后通过引入消息队列或微服务实现系统的分布式设计。

案例分析:订单业务模块的分布式架构演进

3.分布式系统的优势与劣势

Martin Fowler提出,分布式系统的第一原则就是不要分布式。之所以提出这个原则,就是告诫设计者要充分认识到分布式系统刚在带来优势的同时,自身的劣势可能会给系统带来障碍。

第二部分:基于消息的分布式架构

1.常见的消息模式

介绍在企业分布式应用开发中常见的消息模式,如消息通道模式、发布者-订阅者模式、消息路由模式等。

2.主流的消息队列中间件

介绍主流的消息队列中间件,包括RabbitMQ、ActiveMQ、ZeroMQ、AKKA与目前最为流行的Kafka。分析它们各自的特性,对比这些中间件,给出合适的运用场景,并介绍技术决策的方法。

案例分析:医疗卫生知识库系统。通过引入消息队列改善系统架构的质量。

3.消息队列的设计原理

深入探讨消息队列中间件的核心原理与设计思想,包括消息队列的架构、队列实现的基本功能与高级特性。

4.KAFKA分布式消息系统

介绍目前最为流行的分布式消息系统Kafka,包括Kafka的设计架构、组成元素和应用场景。同事,还将介绍Kafka与大数据流式处理的结合。

案例分析:某手机场上的实时数据监控告警系统

第三部分:REST架构风格

REST描述了Web作为一个分布式超媒体的应用,相互链接的资源通过交换代表资源状态的表述来进行通信。它是WEB系统架构运用最为广泛的架构风格。

1.理解REST的五个关键字

要深入理解REST,需要理解REST的五个关键词,包括:资源(Resource)、资源的表述(Representation)、状态转移(State Transfer)、统一接口(Uniform Interface)、超文本驱动(Hypertext Driven)。

2.REST的主要特征

REST风格的架构所具有的6个主要特征,包括:面向资源(Resource Oriented)、可寻址(Addressability)、连通性(Connectedness)、无状态(Statelessness)、统一接口(Uniform Interface)、超文本驱动(Hypertext Driven)。

3.REST的API设计

采用Restful风格的架构设计,在API设计上,需要遵循REST的设计原则,它与传统的Web Service APIs设计以及组件的APIs设计并不相同,而是面向资源的角度考虑API的定义与设计。

案例分析:某BI产品的REST API设计
第四部分:微服务架构风格

1.面向服务的软件架构

面向服务体系架构(SOA)的风格在过去10年中已经成为设计大型分布式系统的主流模式。SOA背后的核心思想是设计一个作为交互服务网络的系统。服务通过定义良好的接口提供清晰具体的功能。

案例分析:瑞士信贷的SOA架构

2.微服务架构的核心概念与特征

微服务设计是一个考量各方因素下的一个决策的过程,它提倡建立细粒度的独立服务,且服务支持物理上的单独部署,以便于更好地重用服务、满足服务水平伸缩与独立运维的需求。

案例分析:某BI产品的微服务架构

3.如何分解服务

在设计层面,该如何界定微服务的边界,并确定服务与服务之间的通信方式。这牵涉到许多架构设计因素,包括可重用行,可扩展性,数据一致性以及部署等诸多方面。本部分将通过对Data Schema、DDD中的Bounded Context、、六边形架构模型等内容综合分析微服务的分解与设计。

4.CQRS与Event Sourcing

CQRS不仅限于微服务架构,但在微服务架构中,会被频繁地与Event Sourcing结合,并以事件驱动架构(EDA)思想来解决一些高并发和数据一致性问题。

5.微服务架构的数据一致性

分析传统的本地事务与分布式事务如何保证数据的一致性,然后讲解在微服务架构中,如何结合CAP原则实现数据一致性。

6.从单体架构到微服务架构

多数情况下,微服务架构都不是一蹴而就的,即使是一个新项目,保守起见,也建议从一开始设计为单体架构,只要在合适的情况下,才需要将架构演进到微服务架构。本部分将会介绍在这个演进过程中我们需要关注的问题,以及具体的实施路径。

7.微服务的监控与告警

在微服务架构中,每个服务都是一个可以独立运行的业务单元,同时每个服务都运行在独立的节点上。因此,我们需要为每个服务建立独立的监控以及告警机制,以监控服务的健康状况,并保证在异常发生时,随时恢复。本部分将介绍如何利用Nagios对微服务进行监控,以及Nagios的工作原理。

案例分析:某金融系统的微服务演进

第五部分 MMN:面向企业的架构设计过程

MMN架构设计过程是指对系统架构从宏观、微观与纳米层面的整体设计过程。这是一个迭代和演进的设计过程,通过自顶向下结合自下而上的方式,对整个软件系统进行分析与设计,保证整个软件系统满足功能需求与质量属性。在整个架构设计过程中,会运用UML、OOAD、UDD和DDD等方法论,遵循MMN(宏观-微观-纳米)的层次对整个系统进行架构梳理和设计。

1.宏观视图的架构因素与设计过程

a.定义架构概图

包括调查架构资源,明确架构的目标,根据架构目标作出重要的设计决策,并分析主要的用例场景,以建立一个粗略的架构概图。

案例分析:企业应用套件的架构概图

b.架构全局分析

识别架构风险,并确定风险优先级。然后根据识别出来的风险编写架构因素表,制定具体的架构策略。同时确定整个系统的关键场景。

案例分析:远程访问的架构策略

c.构建概念模型

确定技术框架与技术选型,识别并分析软件产品的设计约束,从而确定架构风格,并根据具体场景运用架构模式。最后,建立系统的逻辑视图和物理视图。

案例分析:CIMS架构概念模型

2.微观视图的架构因素与设计过程

a.细化逻辑视图

进行领域分析,确定系统的应用逻辑架构与业务逻辑架构,并设计整个系统的模块视图。

案例分析:燃气集团解决方案

b.纳米视图的架构因素与设计过程

构建设计模型:讲解职责驱动设计,通过角色、职责与协作完成对象的职责分配,并通过识别变化点,利用抽象对变化进行封装,以及合理运用设计模式。

c.代码视图:包括确定部署组件、配置管理、持续集成等与代码级别有关的内容。

案例分析:数据分析器;商业智能SaaS平台引擎设计;商业智能SaaS平台的代码视图

第六部分:架构关注点专题讨论

专题一:高性能系统的设计

高性能是软件系统设计无法绕过的话题,无论是企业架构还是互联网架构,设计时都需要考虑如何满足高性能的要求,尤其是在数据量越来越大,并发访问越来越多的前提下,高性能会成为架构师必须要解决的问题。

本专题讨论会给出高性能设计的常见问题、解决方案与最佳实践。

案例分析:Twitter的高性能分布式日志,满足了系统的可靠性、高吞吐量、低延迟、可扩展性等质量属性。

专题二:分布式事务

当今的大型软件系统都是分布式系统,随着硬件成本的逐渐降低,网络宽带的逐步增加,我们已经告别单机时代。分布式系统可以更大限度地利用硬件的水平扩展,也能够保证异构、异步系统的集成,但是带来的问题也很显著,除了运维方面的挑战外,如何保证业务服务的事务,成了棘手的问题。

本专题会介绍分布式事务ACID约束的问题,并讲解BASE原则以及CAD原理。

案例分析:通过对支付宝扣款到余额宝的案例分析分布式事务的解决方案。

专题三:大数据处理

大数据处理成为这几年最热门的话题,也是大多数软件企业需要解决的问题:即如何在海量数据中寻找到业务价值。本专题会从技术角度剖析大数据技术生态圈,并主要介绍Hadoop、Spark等大数据主流技术与平台框架。

案例分析:Airbnb数据基础设施的主要架构


我要参加

可同时提交您的需求,我们会及时与您联系

预约内训

将课程带入到您的团队,为您的团队进行一对一辅导。

相关课程