




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微服务理论与实践 现代互联网的发展方向 当企业发展到一定规模后 一定是大规模 云计算和大数据的三者的结合 从而形成平台 么微服务就是基于此而提出的 什么是微服务 集中式架构也是单块应用最常使用的架构模式 分布式架构 最常见的应用是将一个大的任务拆分到不同的机器中进行计算 最终有一台服务器合并计算结果 第三种就是微服务架构 什么是微服务 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倍容量增长 重新设计系统应对规模化 是成功的标志 如何大规模使用微服务 7 扩展数据库服务的可用性服务的持久性 多副本读取数据扩展 读写分离写操作扩展 分表分库共享数据库设施 容易形成单点故障CQRS 命令查询职责分离 如何大规模使用微服务 8 缓存的使用9 自动伸缩响应型伸缩 预测型伸缩10 CAP定理在分布式系统中有三方面需要彼此权衡 一致性 可用性和分区容忍性 这个定理告之我们最多只能能保证三个中的两个 11 人生的某些障碍 你是逃不掉的 与其费尽周折绕过去 不如勇敢地攀登 或许这会铸就你人生的高点 12 有些压力总是得自己扛过去 说出来就成了充满负能量的抱怨 寻求安慰也无济于事 还徒增了别人的烦恼 13 认识到我们的所见所闻都是假象 认识到此生都是虚幻 我们才能真正认识到佛法的真相 钱多了会压死你 你承受得了吗 带 带不走 放 放不下 时时刻刻发悲心 饶益众生为他人 14 梦想总是跑在我的前面 努力追寻它们 为了那一瞬间的同步 这就是动人的生命奇迹 15 懒惰不会让你一下子跌倒 但会在不知不觉中减少你的收获 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 人生需要挑战 更需要坚持和勤奋 16 人生在世 可以缺钱 但不能缺德 可以失言 但不能失信 可以倒下 但不能跪下 可以求名 但不能盗名 可以低落 但不能堕落 可以放松 但不能放纵 可以虚荣 但不能虚伪 可以平凡 但不能平庸 可以浪漫 但不能浪荡 可以生气 但不能生事 17 人生没有笔直路 当你感到迷茫 失落时 找几部这种充满正能量的电影 坐下来静静欣赏 去发现生命中真正重要的东西 18 在人生的舞台上 当有人愿意在台下陪你度过无数个没有未来的夜时 你就更想展现精彩绝伦的自己 但愿每个被努力支撑的灵魂能吸引更多的人同行 19 积极的人在每一次忧患中都看到一个机会 而消极的人则在每个机会中看到了某种忧患 莫找借口失败 只找理由成功 20 每一个成就和长进 都蕴含着曾经受过的寂寞 洒过的汗水 流过的眼泪 许多时候不是看到希望才去坚持 而是坚持了才能看到希望 1 有时候 我们活得累 并非生活过于刻薄 而是我们太容易被外界的氛围所感染 被他人的情绪所左右 2 身材不好就去锻炼 没钱就努力去赚 别把窘境迁怒于别人 唯一可以抱怨的 只是不够努力的自己 3 大概是没有了当初那种毫无顾虑的勇气 才变成现在所谓成熟稳重的样子 4 世界上只有想不通的人 没有走不通的路 将帅的坚强意志 就像城市主要街道汇集点上的方尖碑一样 在军事艺术中占有十分突出的地位 5 世上最美好的事是 我已经长大 父母还未老 我有能力报答 父母仍然健康 6 没什么可怕的 大家都一样 在试探中不断前行 7 时间就像一张网 你撒在哪里 你的收获就在哪里 纽扣第一颗就扣错了 可你扣到最后一颗才发现 有些事一开始就是错的 可只有到最后才不得不承认 8 世上的事 只要肯用心去学 没有一件是太晚的 要始终保持敬畏之心 对阳光 对美 对痛楚 9 别再去抱怨身边人善变 多懂一些道理 明白一些事理 毕竟每个人都是越活越现实 10 山有封顶 还有彼岸 慢慢长途 终有回转 余味苦涩 终有回甘 11 失败不可怕 可怕的是从来没有努力过 还怡然自得地安慰自己 连一点点的懊悔都被麻木所掩盖下去 不能怕 没什么比自己背叛自己更可怕 12 跌倒了 一定要爬起来 不爬起来 别人会看不起你 你自己也会失去机会 在人前微笑 在人后落泪 可这是每个人都要学会的成长 13 要相信 这个世界上永远能够依靠的只有你自己 所以 管别人怎么看 坚持自己的坚持 直到坚持不下去为止 14 也许你想要的未来在别人眼里不值一提 也许你已经很努力了可还是有人不满意 也许你的理想离你的距离从来没有拉近过 但请你继续向前走 因为别人看不到你的努力 你却始终看得见自己 15 所有的辉煌和伟大 一定伴随着挫折和跌倒 所有的风光背后 一定都是一串串揉和着泪水和汗水的脚印 16 成功的反义词不是失败 而是从未行动 有一天你总会明白 遗憾比失败更让你难以面对 17
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间管理课件观后感
- 八年级家长会学生发言稿
- 语言康复家长课件
- 中班画妈妈课件
- 2025版个人工业厂房买卖合同样本
- 2025版科技企业债券发行与风险控制合同
- 二零二五年度离婚冷静期法律援助与离婚程序全程服务协议
- 2025版架子工工程安全责任保险合同样本
- 2025承包合同下载:城市轨道交通建设项目合作协议
- 二零二五年度企业年会场地及服务合同范本
- 铁路电力线路工资格考试题库及答案解析
- 2024广西专业技术人员继续教育公需科目参考答案(100分)
- 电动车电池维修与更换合同
- 中医类新技术新项目申报书
- 股骨粗隆间骨折的健康教育
- 普通高等学校招生全国统一考试大纲 英语词汇表
- 无线网络运维和安全管理制度
- 社区生殖健康知识培训方案
- DB37-T 4687-2023 社会心理服务中心(站、室)建设运行规范
- 激光打印机维修培训资料全
- 耳鼻喉科患者的心理护理与干预策略
评论
0/150
提交评论