微服务设计入门[优质ppt]

合集下载

Spring Cloud微服务PPT课件

Spring Cloud微服务PPT课件

8
是一个解决微服务架构 实施的综合性解决框架
为什么选择Spring Cloud?
整合了诸多被广泛实践和证 明过的框架作为基础部件
大量的兼容性测试,保证 了更好的稳定性
极高的社区活跃度
9
Spring Cloud简介
10
微服务
02
构建 spring boot
11
传统Spring框架:
1、配置web.xml,加载spring 和spring mvc; 2、配置数据库连接、配置 spring事务; 3、配置加载配置文件的读取, 开启注解; 4、配置日志文件; 5、配置完成之后部署tomcat 调试; …
熔断
27
服务容错处理:Spring Cloud Hystrix
缓存
28
工作流程
29
Dashboard
30
Turbine集群监控
31
声明式服
06
务调用 Spring Cloud Feign
32
声明式服务调用:Spring Cloud Feign
快速入门实例
只需创建一个接口并用注解的 方式来配置它,即可完成对服 务提供的接口绑定
360
京东
Netflix
Apache
Spring cloud
Linkedin
Twitter
Eureka Consoul
分布 式配 置管 理
Diamond
Disconf Qconf
Archaius
Config
批量 任务
服务 跟踪
ElasticJob
Hydra
Task Azkaban
Sleuth
Zipkin
微服务构建:Spring Boot

互联网金融微服务架构设计ppt课件

互联网金融微服务架构设计ppt课件
因此 SOA 和 ESB 是相对应的。具备 SOA 的应用程序应当使用 ESB 来调用它 的服务。SOA 和 ESB 不必用 Web 服务实现。然而,经常需要 ESB 来调用服务, 该服务提供自我描述及发现的能力,这由 Web 服务帮助完成。在 SOA 中经常需要 由一种技术实现的调用者,它们用于调用由其它技术实现的服务,这也由 Web 服 务帮助完成。所以 SOA、ESB 和 Web 服务都集中于创建这样的领域:一个应用程 序中的功能在其它应用程序中也是可用的,本质是复用性。
精选ppt
SOA 与 ESB的区别
SOA是一种方式或架构,用于具有自服务功能的应用程序,应用程序随后通过 用户接口(UI)或经过工作流将其聚合成用户需要的功能。服务不仅是可复用代 码的组件,更是运行程序的一部分,客户端可以不必合并它自己的代码直接调用 该程序。服务是与业务相关的一个定义。
ESB是用于调节 SOA 中的调用者及服务提供者的机制。它使得调用者在不知 道提供者或提供者使用的地址的情况下调用该服务。ESB 可在多个提供者、提供 者的负载平衡及停止使用提供者(当失效时)之间进行选择,并且基于调用者的 需求在提供者之间进行选择,这些提供者提供了各种质量级别的服务。ESB 能够 调节同步或异步服务,事实上对于同一服务可以提供同步及异步的访问。
精选ppt
PAAS(平台即服务)
PaaS是Platform-as-a-Service的缩写,意思是平台即服务。 把服务器平台作为一种服务 提供的商业模式。通过网络进行程序提供的服务称之为SaaS(Software as a Service),而云计算 时代相应的服务器平台或者开发环境作为服务进行提供就成为了PaaS(Platform as a Service)。 所谓PaaS实际上是指将软件研发的平台(计世资讯定义为业务基础平台)作为一种服务,以 SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快 SaaS的发展,尤其是加快SaaS应用的开发速度。在2007年国内外SaaS厂商先后推出自己的 PAAS平台。

微服务简介ppt课件

微服务简介ppt课件

5. 什么样的项目适合微服务
微服务可以按照业务功能本身的独立性来划分,如果系统提供的业务是非常底层的,如: 操作系统内核、存储系统、网络系统、数据库系统等等,这类系统都偏底层,功能和功能 之间有着紧密的配合关系,如果强制拆分为较小的服务单元,会让集成工作量急剧上升, 并且这种人为的切割无法带来业务上的真正的隔离,所以无法做到独立部署和运行,也就 不适合做成微服务了。
2. 微服务的目的是有效的拆分应用,实现敏捷开发和部署 。
3. 微服务提倡的理念团队间应该是 INTER-OPERATE, NOT INTEGRATE 。INTER-OPERATE是定 义好系统的边界和接口,在一个团队内全栈,让团队自治,原因就是因为如果团队按 照这样的方式组建,将沟通的成本维持在系统内部,每个子系统就会更加内聚,彼此 的依赖耦合能变弱,跨系统的沟通成本也就能降低
7.3 缺点 运维要求较高 • 对于单体架构来讲,我们只需要维护好这一个项目就可以了,但是对于微服务架构来讲,
由于项目是由多个微服务构成的,每个模块出现问题都会造成整个项目运行出现异常,想 要知道是哪个模块造成的问题往往是不容易的,因为我们无法一步一步通过DEBUG的方式 来跟踪,这就对运维人员提出了很高的要求 分布式的复杂性 • 对于单体架构来讲,我们可以不使用分布式,但是对于微服务架构来说,分布式几乎是必 会用的技术,由于分布式本身的复杂性,导致微服务架构也变得复杂起来 接口调整成本高 • 比如,用户微服务是要被订单微服务和电影微服务所调用的,一旦用户微服务的接口发生 大的变动,那么所有依赖它的微服务都要做相应的调整,由于微服务可能非常多,那么调 整接口所造成的成本将会明显提高 重复劳动 • 对于单体架构来讲,如果某段业务被多个模块所共同使用,我们便可以抽象成一个工具类, 被所有模块直接调用,但是微服务却无法这样做,因为这个微服务的工具类是不能被其它 微服务所直接调用的,从而我们便不得不在每个微服务上都建这么一个工具类,从而导致 代码的重复。

微服务入门ppt课件

微服务入门ppt课件

Netflix Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘 服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网 站后端所有请求的前门。当其它门派来找大哥办事的时候一 定要先经过zuul,看下有没有带刀子什么的给拦截回去,或者 是需要找那个小弟的直接给带过去。
• 作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方 方面面都考虑到了,方便开发开箱即用。
• Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方 案
• 轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台 功能
与Spring Boot的关系
Spring boot 是 Spring 的一套快速配置脚手架,可以基于 spring boot 快速开发单个微服务,Spring Cloud是一个基于 Spring Boot实现的云应用开发工具;Spring boot专注于快速、 方便集成的单个个体,Spring Cloud是关注全局的服务治理框 架;spring boot使用了默认大于配置的理念,很多集成方案已 经帮你选择好了,能不配置就不配置,Spring Cloud很大的一 部分是基于Spring boot来实现
统瘫痪; • 系统不会被长期限制在某个技术栈上。
微服务不足
• “微服务”强调了服务大小 • 业务逻辑。 • 分区数据库 • 测试
三、微服务架构工作流程
微服务架构工作流程
• 设计阶段 将产品功能拆分为若干服务 为每个服务设计API接口
• 开发阶段 实现API接口(包括单元测试) 开发UI原型(页面)
●主要内容
一、服务架构设计的发展 二、微服务简介 三、微服务架构工作流程 四、springCloud介绍

微服务架构原理和设计方法ppt(49张)

微服务架构原理和设计方法ppt(49张)

微 服 务 架 构 原理和 设计方 法(PPT 49页) 微 服 务 架 构 原理和 设计方 法(PPT 49页)
业务架构:是把企业的业务战略转化为日常 运作的渠道,业务战略决定业务架构,它包括 业务的运营模式、流程体系、组织结构、地域 分布等内容
IT架构:指导IT投资和设计决策的IT框架, 是建立企业信息系统的综合蓝图,包括数据架 构、应用架构和技术架构三部分。
企业架构
TOGAF架构
TOGAF 由国际标准权威组织The Open Group制定。1993年开始应客户要求制定系统 架构的标准,在1995年发表 (TOGAF) 架构框 架。TOGAF的基础是美国国防部的信息管理技 术架构,是基于一个迭代的过程模型,支持最 佳实践和一套可重用的现有架构资产。它可设 计、评估、并建立组织的正确架构。
微 服 务 架 构 原理和 设计方 法(PPT 49页)
微服务与DDD
英文名字:Domain Driven Design。
中文名字:领域驱动设计。
Байду номын сангаас概 述:DDD是一种以领域为核心 的设计和开发理念。DDD通过维护一 个深度反应领域概念的模型,以及提 供了可行的经过实践检验的大量模式 来应对领域的复杂性,偏向代码实现 的(领域)对象
微 服 务 架 构 原理和 设计方 法(PPT 49页)
微 服 务 架 构 原理和 设计方 法(PPT 49页) 微 服 务 架 构 原理和 设计方 法(PPT 49页)
信息专家 创建者 高内聚 低耦合 控制者 多态 纯虚构 间接性
变化预防
微服务与GRASP基本原则
• 给对象分配职责的基本原则是什么? • 假设系统中存在一个类A,那么在这个系统中,谁应该负责创建类A的新实例? • 怎样保持对象是有重点的、可理解的、可管理的,并且能够支持低耦合? • 怎样降低依赖性,减少变化带来的影响,提高重用性? • 在UI层之上首先接收和协调(控制)系统操作的第一个对象是什么? • 如何处理基于类型的选择?如何创建可插拔的软件构件? • 当你并不想违背高内聚和低耦合或其他目标,但是基于专家模式所提供的方案又不合适时,哪些对象应该承担这一职责? • 为了避免两个或多个事务之间直接耦合,应该如何分配职责?如何使对象解耦合,以支持低耦合并提高复用性潜力? • 如何设计对象、子系统和系统,使其内部的变化或不稳定性不会对其他元素产生不良影响?

微服务架构 ppt课件

微服务架构 ppt课件
微服务架构
主讲人:xxx 组员:xxx
微服务的诞生 1
2
Monolith
CONTENTS
微服务的定义 3
微服务架构模式 4
微服务架构的优点与缺点 5 具体应用 6
微服务的诞生
微服务架构(Microservice Architect)是 一种架构模式,它提倡将单块架构的应用 划分成一组小的服务,服务之间互相协调、 互相配合,为用户提供最终价值。每个服 务运行在其独立的进程中,服务与服务间 采用轻量级的通信机制互相沟通。每个服 务都围绕着具体业务进行构建,并且能够 被独立的部署到生产环境、类生产环境等。
可以说,所有的不便都是由于Monolith服务中一个 WAR包包含了该服务的所有功能所导致的。而解 决该问题的方法就是Microservice架构模式。
微服务的定义
实际上,从业界的讨论来看,微服务本身 并没有一个严格的定义。不过, ThoughtWorks的首席科学家,马丁 -福 勒先生对微服务的这段描述,似乎更加具 体、贴切,通俗易懂:
但是这种扩展方式极 大地浪费了资源。就 以上图所展示的情况 为例:在一个服务中, 某个组成的负载已经 达到了90%,也就是 到了不得不对服务能 力进行扩容的时候了。 而同一服务的其它三 个组成的负载还没有 到其处理能力的20%。
由于Monolith服务中 的各个组成是打包在 同一个WAR包中的, 因此通过添加一个额 外的服务实例虽然可 以将需要扩容的组成 的负载降低到了45%, 但是也使得其它各组 成的利用率更为低下。
微服务架构
微服务架构是一种架构模式,它提倡将单一应用程序 划分成一组小的服务,服务之间互相协调、互相配合, 为用户提供最终价值。每个服务运行在其独立的进程 中,服务与服务间采用轻量级的通信机制互相沟通 (通常是基于HTTP协议的RESTful API)。每个服务 都围绕着具体业务进行构建,并且能够被独立的部署 到生产环境、类生产环境等。另外,应当尽量避免统 一的、集中式的服务管理机制,对具体的一个服务而 言,应根据业务上下文,选择合适的语言、工具对其 进行构建。

《微服务入门》课件

《微服务入门》课件
优势
Docker容器化技术可以快速部署应用程序,并且 每个容器都是独立的、可移植的、易于管理的。
适用场景
适用于快速部署和运行微服务,以及需要快速迭 代和部署的应用程序。
Kubernetes与容器编排
概述
Kubernetes是一种容器编排系统 ,可以自动化容器的部署、扩展 、管理和升级等操作。
功能
Kubernetes提供了自动容器的部 署、自动容器的伸缩、自动容器 的故障恢复等功能。
核心组件
02
包括服务发现(Eureka)、配置管理(Spring Cloud Config
)、断路器(Hystrix)、路由(Zuul)等。
适用场景
03
适用于构建复杂的分布式系统,尤其适用于快速迭代和快速部
署的需求。
Docker与容器化
概述
Docker是一种容器化技术,通过容器化可以快速 部署和运行应用程序。
《微服务入门》 ppt课件
contents
目录
• 微服务概述 • 微服务架构设计 • 微服务开发技术 • 微服务部署与运维 • 微服务案例与实践 • 总结与展望
01
CATALOGUE
微服务概述
微服务的定义
微服务是一种软件架构风格,它将应 用程序拆分成一系列小的、独立的服 务,每个服务都运行在独立的进程中 ,并使用轻量级通信协议进行通信。
04
CATALOGUE
微服务部署与运维
持续集成与部署
持续集成
通过自动化工具定期构建、测试和合并代码,确保代码质量。
持续部署
自动化部署微服务到生产环境,减少手动干预和错误。
容器化技术
使用Docker等容器技术,实现微服务的快速部署和管理。

SpringCloud微服务精品PPT课件

SpringCloud微服务精品PPT课件
为什么选择Spring Cloud?
整合了诸多被广泛实践和证 明过的框架作为基础部件
大量的兼容性测试,保证 了更好的稳定性
极高的社区活跃度
Spring Cloud简介
微服务
02
构建 spring boot
传统Spring框架:
1、配置web.xml,加载spring 和spring mvc; 2、配置数据库连接、配置 spring事务; 3、配置加载配置文件的读取, 开启注解; 4、配置日志文件; 5、配置完成之后部署tomcat 调试; …
服务治理:Spring Cloud Eureka
快速入门实例
客户端负
04
载均衡 Spring Cloud Ribbon
客户端负载均衡:Spring Cloud Ribbon
服务端 负载均衡
负载 均衡
硬件负载 均衡(F5)
可用的服 务端清单
软件负载 均衡(Nigix)
可用的服 务端清单
客户端 负载均衡
微服务构建:Spring Boot
快速入门实例
服务
03
治理 Spring Cloud Eureka
服务治理机制
服务注册中心
失效剔除 默认每隔一段时间 (默认60秒)将当 前清单中超时(默 认为90秒)没有续 约的服务剔除出去
自我保护
心跳失败的比例在 15分钟之内低于 85%时,Eureka Server会将当前的 实例注册信息保护 起来,让这些实例 不会过期。
服务容错处理:Spring Cloud Hystrix
资源隔离
服务容错处理:Spring Cloud Hystrix
降级机制
服务容错处理:Spring Cloud Hystrix

微服务技术交流ppt课件

微服务技术交流ppt课件

Container Engine
Container Microservices
Container Functions
Container Diagnostics
Fully managed container service based on Kubernetes running
on Oracle Cloud Infrastructure Bare
Broker
Copyright © 2017 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted
3
客户端的调用
浏览器 UI
产品 服务
Copyright © 2017 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted
1
微服务应用 vs. 单体应用 – 微服务应用
浏览器 UI
产品 服务
产品
订单 服务
订单
库存 服务
库存
用户 服务
用户
…… 服务
……
DB
DB
DB
DB
DB
微服务特性
✓ 拆分应用,实现敏捷开发和部署 ✓ 组件化到多服务 ✓ 围绕业务功能组织团队 ✓ 做产品而不是做项目 ✓ 智能端点与傻瓜管道
✓ 去中心化的治理技术 ✓ 去中心化的管理数据 ✓ 基础设施自动化 ✓ 容错设计 ✓ 演进式设计

微服务的设计思考ppt课件

微服务的设计思考ppt课件

零售
4.业态来源
电器
...
超市
12.线上购物
正常 名品特卖
抢购 海外购
闪拍
5.商品分类
实体商品
虚拟商品
服务商品
6.经营模式
自营
第三方
...
7.配送方式
自营配送 商家配送
厂家配送
门店自提
8.支付方式
在线支付
货到付款
融合支付
13.销售方式
正常
套餐
赠品
14.商品特性 15.发票
正常 不打发票
冷链 电子发票
交易服务
– 下单; – 拆单; – 校验; – 支付; –…
– 库存调度
履约服务
– 物流调度
– 售后服务调 度
– ...
– 按用户查询;
10
PA微RT服ON务E的设计: 服务拆分举例
• 业务驱动力:
• 单体应用性能差,越来越难以通过硬件扩展来提升服务水平 • 难以快速开发、全量回归测试困难、难以快速部署上线,影响公司业务发展; • 希望大幅提升订单的开发效率,易于快速开发、快速测试,降低复杂度;
• 业务需求:
• 接单:近200种场景的接单; • 审核与资源处理:处理会员权益、促销资格、价格、优惠、库存等; • 交易处理:支付相关操作; • 查询:按多维度; • 分发:同步必要的订单信息;
下 文”,把不一致概念的分开。
是 否是优先的功能提取?
7
PART ONE
关键问题(三):服务拆到什么程度
微服务的拆解粒度:how small is“small”? •最佳实践:
• 先粗后细:开始拆解时,很难一次性给出合适的粒度,可以先划分的粗些。 • 不断调整:当对服务有了更多认识后,会不断调整粒度,进行服务的进一步拆分、合并。

Dubbo微服务框架实战课件PPT模板

Dubbo微服务框架实战课件PPT模板

ห้องสมุดไป่ตู้0 4
2-4dubbo配置 dubbo配置
0 5
2-5zookeeper 宕机场景 zookeeper宕 机场景
0 6
2-6dubbo负载 均衡算法 dubbo负载均 衡算法
第2章dubbo核心 技术
2-7dubbo负载均衡dubbo负载 均衡
2-8dubbo服务降级dubbo服务 降级 2-8Dubbo服务降级Dubbo服 务降级
感谢聆听
05
1-11消费者程序消费 者程序
1-8dubbo使用协议 dubbo使用协议
02 03
04
1-9配置离 线约束配 置离线约 束
1-10生产者程序生产 者程序
02
第2章dubbo核心技术
第2章 dubbo核 心技术
0 1
2-1dubbo复习 dubbo复习
0 2
2-2生成者生成 者
0 3
2-3消费者消费 者
dubbo微服务框架实战
• 202x-11-11
演讲人
目录
01. 第1章dubbo基础使用 02. 第2章dubbo核心技术
01
第1章dubbo基础使用
第1章dubbo基础使用
1-2dubbo发展历史dubbo发 展历史
1-4zookeeper注册中心 zookeeper注册中心
1-6注册中心管理界面注册中心 管理界面
1-1dubbo框架简介dubbo框 架简介
1-3dubbo系统架构(面试 题)dubbo系统架构(面试题)
1-5安装zookeeper注册中心安 装zookeeper注册中心
第1章 dubbo基 础使用
1-7dubbo本地jar包部 署与安装dubbo本地 jar包部署与安装

互联网金融微服务架构设计(PPT73页)

互联网金融微服务架构设计(PPT73页)
对企业来说,SaaS的优点: ⒈ 从技术方面来看:SaaS是简单的部署,不需要购买任何硬件,刚开始只需要简单注册即可
。企业无需再配备IT方面的专业技术人员,同时又能得到最新的技术应用,满足企业对信息管理 的需求。
⒉ 从投资方面来看:企业只以相对低廉的“月费”方式投资,不用一次性投资到位,不占用 过多的营运资金,从而缓解企业资金不足的压力;不用考虑成本折旧问题,并能及时获得最新硬 件平台及最佳解决方案。
ESB(企业服务总线)
ESB全称为Enterprise Service Bus, 即企业服务总线。它是传统中间件技术与 XML、Web服务等技术结合的产物。ESB 提供了网络中最基本的连接中枢,是构筑 企业神经系统的必要元素。
大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来 越复杂、繁琐的企业级信息系统平台。面向服务体系架构(SOA)是能够将应用程 序的不同功能单元通过服务之间定义良好的接口和契约联系起来。SOA使用户可以 不受限制地重复使用软件、把各种资源互连起来,只要IT人员选用标准接口包装旧 的应用程序、把新的应用程序构建成服务,那么其他应用系统就可以很方便的使用 这些功能服务。
1.安全性:企业,尤其是大型企业,很不情愿使用SaaS正是因为安全问题,他们要保护他们的 核心数据,不希望这些核心数据由第三方来负责。
2.标准化:SaaS解决方案缺乏标准化。这个行业刚刚起步,没有明确的解决办法,一家公司可 以设计建立一个解决方案。鉴于复杂和高度可定制的ERP产品,这是一个冒险的建议。
对于一个SOA解决方案来说就需要能够满足这些场景的业务需求,能够解决其中 的各种技术问题。需要解决的基本问题包括:
服务的描述问题,描述服务提供哪些功能,适用服务有哪些要求 服务的注册和查找问题,定义好的服务信息在哪发布,如何发布,到哪查找, 如何查找 服务通讯方式,包括具体如何向服务发送请求,并获取应答,支持什么样的交 互方式。 服务流程问题,对服务流程的灵活定制,执行监控等提供管理 服务的管理问题,服务的提供,撤销,改变这些情况如何进行管理 服务质量问题,如何保障安全性,通讯的可靠性,以及事务完整性如何保证 整个系统的效率问题,包括查找效率,通讯效率,服务运行处理效率等 系统能够提供什么样的开发工具,支持什么样的开发模式,系统运行情况是否 可以及时了解,是否可以及时获取故障信息,是否可以提供运行状态信息,以利于 系统的优化。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 无法做到无状态,水平扩展困难
• 无法实现线性水平扩展 • 难以做容量规划
微服务架构能带来的好处——解决集中式 服务管理机制的问题
• 常见集中式服务管理机制
• 企业服务总线(ESB) • Dubbo的服务注册中心 • 配置中心
• 集中式服务管理机制的问题
• 可伸缩性差,容易成为性能瓶颈 • 有可能出现单点故障 • 设计开发难度极高,因为要保证非常高的可用性(HA)
• 基于Docker的部署和服务编排
设计微服务架构需要解决的主要问题
• 划分服务的原则是什么? • 服务之间选择何种轻量级的通信协议? • 如何做到服务的独立部署? • 如何确定该使用何种服务编程语言?如何控制多语言带来的复杂
度? • 如何做到服务的去中心化? • 如何解决大量微服务引入的运维成本?
微服务架构的几大特征
• 由一组小的服务组成一个完整的应用(或网站) • 每个服务围绕一个相对独立的业务领域(领域模型)构建 • 服务之间通过轻量级的通信机制互相沟通 • 完全去中心化 • 每个服务都可以独立部署 • 每个服务可以使用不同的编程语言实现
微服务架构和传统面向服务架构(SOA) 的区别
• SOA没有为服务如何划分提出具体指导 • SOA无法防止服务之间过度耦合 • SOA通常使用重量级的通信协议,例如 SOAP/WSDL • SOA中常常有集中式的服务管理机制,例如 UDDI、ESB • SOA未强调服务的独立部署 • SOA难以使用不同的编程语言实现 • SOA的性能和可伸缩性无法满足面向互联网大流量应用的需要
• 重量级通信机制的问题
• 紧耦合:服务器端API做改动后,客户端必须同时做改动、同时部署 • 互操作性差:客户端与服务器端常常需要使用相同的编程语言 • 可伸缩性差:尤其是SOAP、XML-RPC
设计微服务架构需要掌握的基础知识
• 领域驱动设计(DDD) • RESTful API的设计
• 以及深入理解HTTP协议
微服务设计入门
设计分布式系统的常识和最佳实践汇总
什么是微服务?
• 全称微服务架构:Microservices Architecture,缩写为MSA
• Martin Fowler的定义:
• 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服 务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运 行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通 (通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构 建,并且能够被独立地部署在生产环境、预发布环境等。另外,应尽量 避免统一的、集中式的服务管理机制,对具体一个服务而言,应根据应 用上下文,选择合适的语言、工具对其进行构建。
划分服务的原则是什么?
• 判断良好服务的标准
• 自身保持高内聚,有自己独立的领域模型(上下文) • 封装内部变化,通过API对外暴露功能
• 只有本服务自身的代码可访问本领域模型的数据库 • 其他系统只能通过本服务暴露的API间接访问本服务的数据
• 与其他服务保持松耦合,能够独立修改和部署
• 依赖本服务的其他系统不必同时修改和部署
• 一种RESTful API开发框架
• Java:Spring MVC、Play、Jersey、RESTEasy、CXF • .NET: Web API • Node.js:Express、Seneca & PM2 • Python:Django REST Framework、Flask • Ruby:Rails、Sinatra、Grape
• 能够实现服务自治,可独立进化
• 同一个领域模型(上下文)之上可以有多个发布单元,但是只有 一个是服务
• 常见的发布单元划分方式:一个服务、一个定时任务、一个管理后台
划分服务的原则是什么?
• 参考DDD中的设计策略“界定的上下文”(Bounded Context), 划分出系统中不同的领域模型(上下文)
• 每一个领域模型拥有自己独立的数据库(或其他持久存储) • DDD中其他对于划分服务有参考价值的设计策略
• 上下文映射(Context Map) • 共享内核(Shared Kernel) • 客户-供应商(Customer-Supplier) • 顺从者(Conformist) • 防崩溃层(Anticorruption Layer) • 隔离通道(Separate Way) • 开放主机服务(Open Host Service)
微服务架构能带来的好处——解决传统单 块风格(monolithic style )应用的问 题
• 单一发布单元,发布困难
• 可能需要停掉整个应用(或网站) • 每次发布耗时很长:发布上百台服务器、预发布环境大量的回归测
试 ……
• 对服务器硬件配置要求极高,垂直扩展困难
• CPU、内存、硬盘、网络带宽 ……
微服务架构能带来的好处——解决重量级 通信机制的问题
• 常见的重量级通信机制
• 基于HTTP的各种RPC(远程过程调用)风格协议:SOAP/WSDL、XML-RPC、 JSON-RPC、Burlap、Hessian
• 二进制DO(分布式对象)风格协议:Java RMI/EJB、.NET Remoting
微服务架构能带来的好处——解决传统单 块风格(monolithic style)应用的问题
• 单一代码库,代码维护复杂
• 修改或新增代码,影响范围难以清晰估计 • 迭代周期很长,难以制定周期固定的迭代开发计划 • 对程序员的技能要求很高
• 单一发布单元,测试困难
• 设计开发测试用例需要考虑的问题太多,包括验收测试、回归测试、性 能测试
设计微服务架构需要掌握的可选知识
• 某种为部署微服务而设计的开发框架
• Java:SpringBoot、Dropwizard
• 常用微服务运维工具
• 服务自动负载均衡
• Consul • Eureka:基于AWS的服务负载均衡 • Nginx • HAProxy
• 日志、监控
• ELK: Elasticsearch/Logstash/Kibana • Zabbix
相关文档
最新文档