第 12 章 设计汇总

微服务开发并不是要学习 C#、Java 或者 Go 编程--而是要学习如何开发应用以适应并充分利用弹性伸缩环境的优势,它们对托管环境没有偏好,并能瞬间启停

换句话说,我们要学习如何开发云原生应用

识别并解决反模式

我们既然已经学习了所有的示例代码,就正好可以着手开发、运行并完善它们

此时,我想再来回顾其中一些思路和哲理,以便为决策过程提供更充分的信息

清理团队监控服务的示例

在这一示例中,我们从一个管理团队及团队成员的简单服务开始

后来扩展了服务的定义,向它添加了用于跟踪位置的后端服务

接着在第 6 章中,开发了一个解决方案

先由移动应用将团队成员的 GPS 坐标信息提交给位置报送服务

接着这一信息流经整个系统,最终产生关于接近事件的通知并发送到用户直接接触的某种界面

问题在于事件处理器和事实服务使用的其实是同一个数据存储

将数据库作为集成层一个常见的副作用在于:最终将有两个或更多服务依赖共同的数据库结构与方案才能正常工作

这意味着,我们将不能独立对基础数据存储进行变更,而这些服务的发布节奏最终将互相绑定在一起,而不能按照期望的方式独立地发布

为修正这一问题,我们可以重新设计架构

在新的设计中,事件处理器和事实服务并不使用相同的数据存储

事件处理器调用事实服务,让它完成写入当前位置的工作

在新的架构中,事实服务拥有事实缓存数据的唯一所有权

另一项优化是让事实服务维护其自有专用数据的同时,还维护一份外部缓存

继续辩论组合式微服务

组合式服务是依赖另一个服务的调用才能完成功能的服务

这种调用通常都是同步的,也就是需要阻塞原始调用,直到嵌套的一个或多个调用完成

在第 8 章中,请求产品详情的客户端,在目录服务发起向库存服务的同步调用以获取特定项的库存状态期间,只能等待

当这一做法在整个企业范围里大量运用,开始有客户报告超时和莫名其妙的服务端错误

这是因为在嵌套同步调用栈上的某个位置发生了失败,而下层的失败则会产生最终返回给客户端的层叠效应

使用断路器缓解风险

处理嵌套式同步调用的一种潜在方案是寻求一种后备机制,一种当调用链上任何位置出现失败时的统一处理方法

当后端服务出现失败时,为防止请求崩溃或者无限期等待而提供一种后备处理的做法通常称为实现了“断路器”模式

消除同步的组合模式

关于断路器和组合式服务最重要的决定并非是如何实现它们,而在于是否确实需要它们

就像我们并非永远都处在于一片乐土之中,我们也不可能总能得到理想中的微服务架构

不过,只要稍微花点时间,对问题和潜在的解决方案加以分析,找到排除常见障碍的思路,就可能避免服务组合

接下来,还要做什么

首先,也是最重要的一点就是“质疑一切”

本书的每一条建议和每一行代码都需要经过验证

本书只是一个起点,希望它能为你提供灵感,为你基于 C# 和 .NET Core 开发强大的、具有弹性伸缩能力和跨平台的微服务提供足够的技术支撑

.NET Core 需要更多的宣传和监督,以及更多人士在生产环境运用它,为完善和巩固它出谋划策,让它成为开发云原生微服务更具优势的平台

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

《ASP.NET Core 微服务实战》-- 读书笔记(第12章)的更多相关文章

  1. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  2. 《ASP.NET Core In Action》读书笔记系列,这是一个手把手的从零开始的教学系列目录

    最近打算系统学习一下asp.net  core ,苦于没有好的中文书藉,只好找来一本英文的 <ASP.NET Core In Action>学习.我和多数人一样,学习英文会明显慢于中文.希 ...

  3. Spring Cloud微服务实战阅读笔记(一) 基础知识

    本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识   1:什么是微服务架构     是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...

  4. 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1

    创建好项目后,解决方案资源管理器窗口里我们看到,增加了不少文件夹及文件,如下图所示: 在解决方案文件夹中,找到项目文件夹,该文件夹又包含五个子文件夹 -Models.Controllers.Views ...

  5. 《ASP.NET Core In Action》读书笔记系列四 创建ASP.NET Core 应用步骤及相应CLI命令

    一般情况下,我们都是从一个模板(template)开始创建应用的(模板:提供构建应用程序所需的基本代码).本节使用 Visual Studio 2017 .ASP.NET Core2.0和 Visua ...

  6. 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?

    在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...

  7. 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core

    ASP.NET Core 能用于什么样的应用 ASP.NET Core 可以用作传统的web服务.RESTful服务.远程过程调用(RPC)服务.微服务,这归功于它的跨平台支持和轻量级设计.如下图所示 ...

  8. 《ASP.NET Core In Action》读书笔记系列一 ASP.NET Core 的诞生

    最近打算系统学习一下asp.net  core ,苦于没有好的中文书藉,只好找来一本英文的 <ASP.NET Core In Action>学习.我和多数人一样,学习英文会明显慢于中文.希 ...

  9. 【.NET Core微服务实战-统一身份认证】开篇及目录索引

    简介 ​ 学习.NETCORE也有1年多时间了,发现.NETCORE项目实战系列教程很少,都是介绍开源项目或基础教程,对于那些观望的朋友不能形成很好的学习思路,遇到问题怕无法得到解决而不敢再实际项目中 ...

  10. 《C++ Primer 4th》读书笔记 第12章-类

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936473.html

随机推荐

  1. GCC 指定运行期动态链接库搜索路径

    链接器 ld 的 -rpath=dir 选项可以指定运行期 so 文件的搜索路径. GCC 的 -Wl,option 选项可以传递选项给链接器 ld. 所以组合起来,可以直接使用 -Wl,-rpath ...

  2. node pressure and pod eviction

    0. overview There are too many guides about node pressure and pod eviction, most of them are specifi ...

  3. maven总结二: 常用标签及属性

    本文为博主原创,未经允许不得转载  目录: 1. maven 依赖属性:groupId.artifactId.version 2.插件执行: execution,id ,phase,goals,con ...

  4. Oracle 监控客户端的连接数量趋势

    Oracle 监控客户端的连接数量趋势 背景 前期简单总结了table方式将表信息展示出来的方法 但是感觉这样非常不直观. 想着能够做出一个趋势来. 时序数据库的最佳的使用方式. 之前的确是太靠自己的 ...

  5. [转帖]Oracle参数解析(parallel_force_local)

    https://www.modb.pro/db/122032 是否需要增加这个参数? 往期专题请查看www.zhaibibei.cn这是一个坚持Oracle,Python,MySQL原创内容的公众号 ...

  6. [转帖]谨慎调整内核参数:vm.min_free_kbytes

    https://www.cnblogs.com/muahao/p/8082997.html 内核参数:内存相关 内存管理从三个层次管理内存,分别是node, zone ,page; 64位的x86物理 ...

  7. [转帖]线上一个隐匿 Bug 的复盘

    前言 之前负责的一个项目上线好久了,最近突然爆出一 Bug,最后评估影响范围将 Bug 升级成了故障,只因为影响的数据量有 10000 条左右,对业务方造成了一定的影响. 但因为不涉及到资金损失,Bu ...

  8. [转帖]模拟enq: TX - row lock contention争用

    https://www.modb.pro/db/623036 enq: TX - row lock contention它表示一个事务正在等待另一个事务释放被锁定的行.这种等待事件通常发生在并发访问数 ...

  9. [转帖]【JVM】GC算法与垃圾收集器

    引入 java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理.由于有个垃圾回收机制,可以有效的防止 ...

  10. ESXi上面虚拟机磁盘损坏修复案例

    事故情况 最近同事反馈, 一个文件更新后出现了文件部分不可读的情况 具体现象为: 前端功能打开白屏 后端文件 前面93行不显示, notepad++打开都是 NULL 黑框. 然后重新覆盖文件, 有概 ...