资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,微服务架构,起源、简介及设计,独立架构师 唐伟佳,目录,微服务架构起源,1,微服务与关联理论,2,微服务架构介绍,3,微服务应用及平台设计,4,微服务相关技术,5,企业架构,企业架构,是指对企业信息管理系统中具有体系的、普遍性的问题而提供的,通用解决方案,,是基于业务导向和驱动的架构来理解、分析、设计、构建、集成、扩展、运行和管理信息系统。企业架构如同,战略规划,,可以辅助企业完成业务及,IT,战略规划。,业务架构,:是把企业的业务战略转化为日常运作的渠道,业务战略决定业务架构,它包括业务的运营模式、流程体系、组织结构、地域分布等内容,IT,架构,:指导,IT,投资和设计决策的,IT,框架,是建立企业信息系统的综合蓝图,包括数据架构、应用架构和技术架构三部分。,TOGAF,架构,TOGAF,由国际标准权威组织,The Open Group,制定。,1993,年开始应客户要求制定系统架构的标准,在,1995,年发表,(TOGAF),架构框架。,TOGAF,的基础是美国国防部的信息管理技术架构,是基于一个迭代的过程模型,支持最佳实践和一套可重用的现有架构资产。它可设计、评估、并建立组织的正确架构。,企业架构方法有很多,但,TOGAF,是,最主流,的。,TOGAF,产出物,TOGAF,产出物,微服务架构起源,-,企业转型,传统企业的,IT,建设需要转型,需要面向,外部客户,,需要应对外部环境的快速变化、需要快速创新,,IT,架构也需要向互联网企业学习作出相应的改进,来支撑企业的,数字化转型,。,先是,单块架构,,后来为了具备一定的扩展和可靠性,就有了,垂直架构,,也就是加了个负载均衡,接下来是,SOA,,解决应用系统之间如何集成和互通,,微服务架构,则是进一步在探讨一个应用系统该如何设计才能够更好的开发、管理更加灵活高效。,微服务架构起源,-,问题,微服务起源,-,愿景,象更换零件一样更换软件,微服务架构起源,-,技术基础,微服务是在,应用技术栈,范畴,跟其他的应用技术一样都是具有系统分析、建模的能力,并不是一个纯粹的框架或技术,而是一个,综合性的架构模式,。,微服务是,进化,出来的。,“,解释一个概念需要用另外几个概念来解释,但是解释另外几个概念还需要其他概念来解释,”,,所以要,聚焦领域,,每个领域都是深不见底,都有他的知识体系,都有他的技术栈。,微服务架构起源,-,技术基础,技术具体讲就是分析、设计、建模,落地实施方法。包括几个重量级的技术体系:,TOGAF,企业信息架构框架,DDD,领域驱动设计,SOA,面向服务架构,GRASP,通用软件职责设计模式,彩色建模,四色原型模式,GRASP,主要是辅助,职责设计,,四色原型主要是捕捉实体的,事件发生序列,,不会让你丢失关键业务场景。,微服务与,DDD,英文名字:,Domain Driven Design,。,中文名字:领域驱动设计。,概 述:,DDD,是一种以,领域,为核心的设计和开发理念。,DDD,通过维护一个深度反应领域概念的模型,以及提供了可行的经过实践检验的大量,模式,来应对领域的复杂性,偏向代码实现的(领域)对象,微服务与,DDD,领域模型既不是脱离代码实现的纯粹业务对象描述,更不是一一对应代码里的表或者对象。注意以下几点:,1.,领域模型是,精简的业务知识,,所有权是业务代表而不是技术代表,2.,领域模型的目的是构建业务需求和技术实现之间的,桥梁,,和传统的,buttom-up,软件开发模式相比,是一种,up-buttom,自上而下的开发模式,可以避免需求偏离,因为一开始就是从业务需求出发去构建模型,再参照模型去实现。,3.,领域模型是用来,解构业务真实需求,,可以理解成,认识业务的,一种方法论,领域模型的作用是构建一种共同语言,业务代表和技术代表在模型上沟通。,4.,领域模型是不断,迭代,进化的,随需求迭代,业务变更而不断演进。,5.,好的领域模型可以直接反应软件是,做什么用,的。,DDD,是一种软件开发模式,目的是为了,解构复杂,的业务需求,降低不同工种间的沟通障碍,实现结构清晰、可复用、易维护的软件。,微服务与,GRASP,GRASP,是,General Responsibility Assignment Software Patterns,(通用职责分配软件模式)的简称,它的核心思想“职责分配”。,GRASP,的,主要特征,:,对象职责分配的基本原则。,主要应用在分析和建模上。,GRASP,的,核心思想,:,自己干自己的事(职责的分配),自己干自己的能干的事(职责的分配),自己只干自己的事(职责的内聚),如何把现实世界的业务功能抽象成对象,如何决定一个系统有多少对象,每个对象都包括什么职责,,GRASP,模式给出了,最基本的指导原则,。,微服务与,GRASP,基本原则,微服务与,RUP,微服务与彩色建模,Peter Coad,认为,领域模型由以下组成:,粉红:代表“瞬间事件”,(,Moment-,Inteval,),黄色:代表“角色”(,Role,),绿色:代表“人,-,物,-,地点”,(,Party-Place-Thing,),蓝色:代表“描述”(,Description,),微服务与,SOA,SOA,产生的背景,:,IT,建设以部门级为主,业务流程与数据局限于部门内部,竖井应用:不同应用、不同厂商,会形成不同的数据结构、不同的实现,从关注部门需求到关注企业需求,需要部门间数据共享,/,业 务共享,/,客户共享,组织与业务流程频繁变化,SOA,解决的问题,:,信息孤岛,互联互通,业务重用,微服务与,SOA,SOA,是一种,粗粒度、松耦合,服务架构,服务之间通过 简单、精确定义接口进行通讯,不涉及底层编程接口 和通讯模型。,SOA,可以看作是,B/S,模型、,XML/Web Service,技术之后的自然,延伸,。,SOA,将能够帮助软件工程师们站在新的高度理解企业级架构中的各种组件的,开发、部署,形式,SOA,帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。,SOA,能够更加从容地面对业务的急剧,变化,。,微服务与,SOA,SOA,和微服务的,区别,:,微服务不再强调传统,SOA,架构里面比较重的,ESB,企业服务总线,S,OA,的思想进入到单个业务系统内部实现真正的组件化,SOA,和微服务的,共同点,:,服务化,敏捷快速,VS,微服务与,SOA,框架区别,微服务架构定义,微服务架构内涵,微服务架构内涵,微服务架构内涵,微服务架构内涵,微服务架构好处,是每个微服务组件都是,简单灵活,的,能够,独立部署,。应用不需要一个庞大的应用服务器来支撑。,可以由一个,小团队,负责更专注专业,相应的也就更高效可靠。,微服务之间是松耦合的,微服务内部是,高内聚,的,每个微服务很容易按需扩展。,微服务架构与,语言工具无关,,自由选择合适的语言和工具,高效的完成业务目标即可。,微服务架构示例,微服务应用设计原则,微服务应用设计原则,微服务应用设计原则,微服务应用设计原则,微服务应用设计原则,微服务平台,-,企业,IT,基础,DevOps,:负责从需求到计划任务,团队协作,再到质量管理、持续集成和发布。,个人基础环境,:即微服务应用平台,他的目标主要就是要支撑微服务应用的设计开发测试,运行期的业务数据处理和应用的管理监控。,IT,基础设施,:各种运行环境支撑如,IaaS(VM,虚拟化,),和,CaaS(,容器虚拟化,),等实现方式。,微服务应用平台目标,微服务平台的主要目标主要就是要支撑微服务应用的,全生命周期管理,,从需求到设计开发测试,运行期的业务数据处理和应用的管理监控等。,微服务应用平台总体架构,开发集成,:微服务平台需要具备的一些工具和仓库,运行时,:微服务平台的,基础能力和分布式,的,支撑能力,微服务运行容器运行在这个平台之上。,监控治理,:对受管的微服务进行统一的监控、配置等能力。,服务网关,:负责与前端的,WEB,应用 移动,APP,等渠道集成,对前端请求进行认真鉴权,然后路由转发。,微服务应用平台运行架构,微服务带来的问题,关键问题,-,服务注册和路由,服务在启动的时候,会将自己要发布的服务,注册到服务注册中心,,运行时,如果需要调用其他微服务的接口,,本地缓存或到注册中心获取,服务提供者的地址,获得地址后,通过微服务容器内部的,负载均衡,进行路由调用。,关键问题,-,安全认证,安全认证方面,可以基于,Spring Security,结合,Auth2,再加上,JWT,(,Json web token,)做安全令牌,实现统一的安全认证与鉴权,使得微服务之间能够,按需隔离和安全互通,。,认证鉴权一定是个,公共服务,,而不是多个系统各自建设。,关键问题,-,集中配置,配置文件主要有,静态配置和动态配置,两种。静态配置通常是在编译部署包之前设置好。动态配置则是系统运行过程中需要调整的系统变量或者业务参数。,通过制定规范控制,配置与介质分离,,配置不要放在,Jar,包里。,配置的方式要统一,格式、读写方式、变更热更新的模式尽量统一,要采用,统一的配置框架,需要有个,配置中心,来统一管理业务系统中的配置信息。,关键问题,-,分布式事务,微服务架构的系统下,进程成倍增多,分布式事务一致性的问题更加明显。微服务之间是独立的、调用协议也是无状态的,要解决的是一定时间后的数据达到,最终一致,状态,一般采用传统的业务补偿与冲正方式。,可靠事件模式,:即事件的发送和接收保障高可靠性,来实现事务的一致性。,补偿模式,:,Confirm Cancel,,如果确认失败,则全部逆序取消。,TCC,模式,:,Try Confirm Cancel,,补偿模式的一种特殊实现 通常转账类交易会采用这种模式。,关键问题,-,同步调用,微服务架构下,相对于传统部署方式,存在更多的分布式调用,“如何在不确定的环境中交付确定的服务”,可以理解为,我所依赖的服务的可靠性是,无法保证,的情况下,我如何保证自己能够,正常的提供服务,,不被我依赖的其他服务拖垮?,关键问题,-,同步调用,SEDA:staged event-driven architecture,本质上就是采用,分布式事件驱动,的模式,用,异步模拟,来同步,无阻塞等待,再加上资源分配隔离结起来的一个解决方案。,微服务相关技术,-dubbo,Dubbo,(,开源分布式服务框架),阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的,RPC,实现服务的输出和输入功能,,主要核心部件:,Remoting:,网络通信框架,实现了,sync-over-async,和,Logo request-response,消息机制,.,RPC:,一,个远程过程调用的抽象,支持负载均衡、容灾和集群功能,Registry:,服务目录框架用于服务的注册和服务事件发布和订阅,微服务相关技术,-,Spring Cloud,Spring Cloud,是一系列框架的有序集合:,利用,Spring Boot,的开发便利性,简化了分布式系统基础设施的开发。,Spring Cloud Eureka,是,Spring Cloud Netflix,的一部分,它基于,Netflix Eureka,做了二次封装,完成微服务架构中的,服务治理功能,Spring Cloud Netflix,是对,Netflix,分布式服务开发框架,的封装,包括服务发现和注册、负载均衡、断路器、,REST,客户端、请求路由等,Spring Cloud Zookeeper,对,Zookeeper,的封装,使之能配合其它,Spring Cloud,项目使用,一般当作,注册中心,Spring Cloud Bus,分布式消息队列,是对,Kafka MQ,的封装,实现,可靠消息,Spring Cloud Config,将配,置信息中央化保存,Spring Cloud Security,对,Spri
展开阅读全文