




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微服务理论与实践 现代互联网的发展方向 当企业发展到一定规模后 一定是大规模 云计算和大数据的三者的结合 从而形成平台 么微服务就是基于此而提出的 什么是微服务 集中式架构也是单块应用最常使用的架构模式 分布式架构 最常见的应用是将一个大的任务拆分到不同的机器中进行计算 最终有一台服务器合并计算结果 第三种就是微服务架构 什么是微服务 Themicroservicearchitecturalstyleisanapproachtodevelopingasingleapplicationasasuiteofsmallservices eachrunninginitsownprocessandcommunicatingwithlightweightmechanisms oftenanHTTPresourceAPI Theseservicesarebuiltaroundbusinesscapabilitiesandindependentlydeployablebyfullyautomateddeploymentmachinery Thereisabareminimumofcentralizedmanagementoftheseservices whichmaybewrittenindifferentprogramminglanguagesandusedifferentdatastoragetechnologies JamesLewisandMartinFowler 微服务特性 一些列的独立的服务共同组成系统单独部署 跑在自己的进程里每个服务为独立的业务开发分布式的管理 微服务和SOA的区别 微服务只是一种为经过良好架构设计的SOA解决方案 是面向服务的交付方案 微服务更趋向于以自治的方式产生价值 微服务与敏捷开发的思想高度结合在一起 服务的定义更加清晰 同时减少了企业ESB开发的复杂性 微服务是soa思想的一种提炼 SOA是重ESB 微服务是轻网关 微服务定义小结 微服务的建模 1 松耦合和高内聚松耦合 修改一个服务不需要同时修改另一个 每个微服务都可以单独修改和布署 高内聚 把相关的事务放在一起 把不相关的排除出去 聚集在一起的事务只能干同一件事 微服务的建模 2 限界上下文限界 划分规定界限 边界上下文 业务的整个流程 当我们检查已有的系统时 经常会发现系统中存在混杂在一起的模型 模型之间的边界是非常模糊的 此时应该为整个系统绘制一个边界 然后将其归纳在大范围之内 微服务的建模 3 逐步上下文划分方法 一开始识别粗粒度的限界上下文 这些粗粒度的上下文可能包括一些套嵌的限界上下文 这些套嵌的上下文不直接对外可见 暴露原则 使用粗粒度上下文还是套嵌上下文暴露服务 哪个更合理 应该由组织结构来决定 微服务的建模 订单处理 货物接收和库存管理三个模块在项目研发初期被归集到了仓库服务中 财务服务要获取库存管理的数据 直接访问仓库服务的库存管理接口就可以了 随着三个模块的不断演进和壮大 单个服务已经不能满足业务和团队发展的需求 这时候将三个模块分别拆分演变成右图的结构 订单管理 货物接收和库存管理分别以服务的形式对应不同的团队 财务服务只需请求库存管理服务就可以得到相应的数据 微服务集成 1 集成原则微服务的集成做得好 可以保持自治性 可以独立发布修改和发布 避免破坏性修改服务的修改不能导致该服务的消费方发生改变 保证API与技术的无关性保证API的易用性隐藏内部实现细节 微服务集成 2 编排与协同编排 同步调用一组服务 等待各个服务的返回结果 优点是知道业务流程中每一步跨服务调用结果 缺点是容易承担太多的调用 太耗时 导致调用方的不稳定性 微服务集成 2 编排与协同 发布 订阅模式实现松耦合 协同 异步调用一组服务或服务调用加入队列中 降低服务之间的耦合度 带来的额外工作是业务流程跨服务的监控 但可通过消费方处理完成后 回调服务方告知处理结果 微服务集成 3 版本管理尽可能推迟破坏性修改宽进严出的原则尽早发现破坏性的修改按照契约 通过测试及早发现是服务方还是消费方破坏性的修改不同的接口版本共存最好共存两个版本 微服务架构的设计模式 聚合器微服务设计模式 这是最常用也最简单的设计模式 聚合器微服务设计模式 聚合器调用多个服务实现应用程序所需的功能 它可以是一个简单的Web页面 将检索到的数据进行处理展示 它也可以是一个更高层次的组合微服务 对检索到的数据增加业务逻辑后进一步发布成一个新的微服务 这符合DRY原则 每个服务都有自己的缓存和数据库 如果聚合器是一个组合服务 那么它也有自己的缓存和数据库 聚合器可以沿X轴和Z轴独立扩展 代理微服务设计模式 在这种情况下 客户端并不聚合数据 但会根据业务需求的差别调用不同的微服务 代理可以仅仅委派请求 也可以进行数据转换工作 链式微服务设计模式 这种模式在接收到请求后会产生一个经过合并的响应服务A接收到请求后会与服务B进行通信 类似地 服务B会同服务C进行通信 所有服务都使用同步消息传递 在整个链式调用完成之前 客户端会一直阻塞 因此 服务调用链不宜过长 以免客户端长时间等待 分支微服务设计模式 这种模式是聚合器模式的扩展 允许同时调用两个微服务链 分数据共享微服务设计模式 自治是微服务的设计原则之一 就是说微服务是全栈式服务 但在重构现有的 单体应用 monolithicapplication 时 SQL数据库反规范化可能会导致数据重复和不一致 因此 在单体应用到微服务架构的过渡阶段 可以使用这种设计模式 在这种情况下 部分微服务可能会共享缓存和数据库存储 不过 这只有在两个服务之间存在强耦合关系时才可以 对于基于微服务的新建应用程序而言 这是一种反模式 分数据共享微服务设计模式 异步消息传递微服务设计模式 REST设计模式非常流行 但它是同步的 会造成阻塞 因此部分基于微服务的架构可能会选择使用消息队列代替REST请求 响应 案例分析 案例一 如何拆分单块系统结构 案例一 如何拆分单块系统结构 对于一个单块系统 往往首先要从数据库入手进行拆分 规划好哪些是财务代码的表 哪些是客户代码的表 将二者进行分离 这时单块系统的应用结构并没有拆分 这还需要我们在进行设计单块系统的时候 客户代表和财务代码的表字段不能混在一起 要设计成不同的表才能方便将来拆分 虽然系统是在一起的 但是却为未来作了拆分准备 最后将应用系统拆分独立布署 这个过程就结束了 案例分析 案例二 如何跨系统访问数据表 案例二 如何跨系统访问数据表 有两个服务 分别是产品目录和财务 左图的场景是财务服务直接调用产品目录的数据表进行数据获取 这种跨服务的数据获取方式是有问题的 首先无法把控财务服务是如何获取数据的 是否对数据表造成影响 其次从设计的角度来说无疑又增长了系统之间调用的耦合度 系统之间的依赖增强了 因此演变成右图这样 左图只需提供服务接口给右图调用即可 案例分析 案例三 服务设计中的不良习惯 案例二 如何跨系统访问数据表 在此系统中 ABCD四个系统进行了串联 这样就要求这四个系统分别都是高可用的 如果其中任何一个系统挂了或者发生问题 都会直接影响其他所有系统 所以设计微服务架构的时候要尽量避免这种集中式的架构 如何大规模使用微服务 真正使用微服务 有很多需要关注的点 1 故障无所不在网络是不可靠 只能尽力限制引起故障的因数 达到一定规模后 故障不可避免 2 跨功能需求服务吞吐量 可用性和数据持久性等这些需求需要持续测量 并保证服务满足可接受的目标 3 功能降级构建弹性系统 因微服务功能分散 在有可能down机的微服务上 能够安全的降级以保证弹性 如何大规模使用微服务 4 反服务脆弱为了不会引起严重级联影响 需要正确的设置超时 实现舱壁隔离或断路层等以避免在第一时间调用一个不健康的服务 超时设置超时时间对于调用下游服务十分重要 超时时间设置太长有可能把下游系统拖慢 设置太短可能下游服务未处理完成 最好设置一个默认的超时时间 当超时发生时后 记录到日志里看看发生了什么 并且做响应的调整 断路器使用断路器 当请求下游服务发生一定数量的失败后 短路器打开 接下来的请求快速失败 一断时间后 查看下游服务是否已服务 重置断路器 如何大规模使用微服务 舱壁为每个下游服务建立单独的连接池 超时和断路器资源受限时释放资源 舱壁第一时间确保它不成为限制 还有一个拒绝请求的舱壁 用以避免资源饱和 称之为减载 隔离当下游服务离线 上游服务不受影响 设置成为服务间隔离 5 幂等幂等操作 多次执行所产生的影响 均与一次执行影响相同 可以把某些特定业务操作设计成幂等的 比如客户下单送积分 如何大规模使用微服务 6 扩展增加负载 减少延迟 更强大的主机 垂直扩展 更好的机器 拆分负载 按业务拆分成不同的微服务分散风险 数据跨机房 异地备份等负载均衡 避免服务单点故障作业分离 Job独立服务执行重新设计 一般设计系统需要考虑10倍容量增长 重新设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产5000台智能检测设备项目可行性研究报告
- 防泄漏知识培训课件
- 防汛抢险知识培训报道课件
- 绿色供应链管理的行业适用性研究
- 婚前协议的法律效力分析
- 社会支持与心理flourishing关联-洞察及研究
- 收购散玉米合作协议8篇
- 2025年高三物理第二轮专题冲刺讲义共十二讲
- 2025年新合作勘查合同2篇
- 2025年机动车辆抵押货款合同2篇
- 保密观考试题及答案2025保密观知识竞赛试题及答案
- 老年综合征与护理试题及答案
- 3.2《参与民主生活》教案 2025-2026学年度道德与法治九年级上册 统编版
- 社团招新课件
- 老年髋部骨折围手术期衰弱护理管理专家共识解读
- 2025版农业合作社成员个人借款合同范本
- 高职院校科研能力建设的区域性差异分析及精准提升路径研究
- 2025北京京剧院招聘工作人员10人考试备考试题及答案解析
- 四链融合:新质生产力的深度路径
- 酒店房卡管理制度与操作流程
- 2025一建《水利水电工程管理实务》思维导图
评论
0/150
提交评论