我听说单体应用才是未来

标签: 听说 单体 应用 | 发表时间:2020-04-19 03:35 | 作者:megrez
出处:http://weekly.dockone.io

单体应用才是未来?

特斯拉在自动驾驶方面受到了一些负面报道(我有一台特斯拉,我个人认为自动驾驶这个功能需要改名)。由于驾驶员入睡,发生了多次车祸。那是自动驾驶的问题吗?我想说的是:驾驶员应该知道不能在405号高速公路上打盹(我使用特斯拉的自动驾驶功能,请相信我,我是不会睡着的)。那么,是让我们移除自动驾驶功能,还是学会正确使用它?

我们在软件架构中处于同一位置。人们沉迷于专业术语和新想法,好像他们能够解决所有问题。最近,这种趋势也出现在微服务领域,围绕微服务的使用和分解单体应用。关于这个问题已经有许多有趣的文章和对话。如果你还没有看到过,现在你正在阅读的就是我所指的对话之一。

前几天,一位非常体贴的同事告诉了我这些事(部分原因是为了通知我,另外部分则是为了骚扰我),我认为它们提出了一些非常有趣和有用的观点。要真正理解这将如何帮助或损害我们,我们不仅需要指出其中的坏处,还应该为了充分利用其中的优势提供一些指导。让我们仔细看一下这些问题。

为什么单体应用是未来?

那么,为什么有人认为我们会回到单体应用程序的技术栈呢?


单体应用是未来,因为人们试图用微服务解决的问题和现实相去甚远。 — KELSEY HIGHTOWER
我相信这是100%正确的。 “微服务”一词已被当作特效药,用于修复所有问题,从功能失调的组织到设计不良的系统。 但是,我不认为替代方法是返回到“单体应用”(旁白:不祥的音乐响起)。

我们正在处理期望与现实范式之间的矛盾。 其中大多数可以归结为以下一种:
  • 服务布局方面缺乏计划
  • 缺乏分布式架构的经验
  • 缺乏测试和实施的时间


分布式单体模式

在"Head First Design Patterns"一书中,你可能找不到这个模式。


现在的代码库太糟糕了,然后你说“你知道我们应该怎么做? 我们应该把它分解。 我们把它分解,并以某种方式找到一种我们从未接触过的工程规范。” 然后他们最终要做的是创建50个可部署项目,但这实际上是一个分布式的单体应用。 — KELSEY HIGHTOWER
不幸的是,这太普遍了。 "魔术药丸''使得人们陷入了思维定势:应用粒度越小越好且更快。 微服务并不能修复一个糟糕的单体应用。 如果你制作的千层面很糟糕,那么切成多少片它仍然很糟糕。

你是否有分散的整体设计?

在Hacker News上的一篇文章中,rubyn00bie指出了这些明显的迹象:
  • 你把表复制到另一个数据库中,而没有将数据转换成新的结构(没有添加任何信息)。
  • 如果没有Y或Z,则服务X不能正常工作,并且/或者你没有策略应对其中之一发生故障。
  • 很可能无法有效地解耦不同的服务。服务X可以“容忍”服务Y的失败,但没有服务Y便无法运行。
  • 你通过事件总线推送所有数据,以使服务保持“同步”。


rubyn00bie提到的一些点非常棒。在设计阶段必须考虑所有这些项目。相互依赖的服务需要 1)被组合成一个微服务或 2)使用队列模式以确保服务可以处理该项目(如果可用)3)两个系统都由另一个微服务(类似乐队中的指挥家)来调用以保证能正确处理错误,这种模式通常也被称为服务编排。

事件总线是微服务基础结构的重要组成部分。但是,我认为应该只将它们用于通知,而不是直接用来做数据同步。

如果你从单体应用转向微服务,则必须以此为契机进行重新评估和更新。很有可能,如果现在你处于这个决策点,那么你所谈论的一般是已经存在了一段时间的系统。你不能将其视为剪切和粘贴的编码练习,而必须回到第一步从头做起。

以恰当的方式分解单体应用

那么,如何在没有精神崩溃或放弃的情况下完成这项任务呢?

作充足的计划

你需要对单体应用有深入的了解。 对你而言,这可能意味着需要进行一些研究并了解你所不熟悉的方面。 你需要将其视为构建一系列独立的子系统,而不仅是被分解成大型系统。

这可能看起来并不重要,但是你对问题的认知和思维方式会产生巨大的影响。 这种观点将塑造你遇到的每一个决定。

以正确的观点实施

例如,假设你有一个作为电子商务平台的整体应用程序。你已决定打破单体应用。你有几种选择:
  • 越小越好:在应用程序中找到逻辑划分点,使用它们来创建紧密连接在一起的较小的应用程序。部署这些应用并宣告胜利,你将成为微服务大师!
  • 更小更智能:花时间去找到单体应用的核心功能。考虑这些是独立于生态系统而存在的单独的端到端应用程序。尝试扩展其处理更多用例的能力。部署无状态应用程序。


因此,在我们的示例中,我们可能将商品分解为多个较小的部分,即购物车,产品,订单等,在两种情况下,我们都可以选择相同的分割点,但是构建的内容将大相径庭。在一种情况下,我们将服务分开,但它们之间会紧密耦合。在第二种情况下,我们希望为每种情况创建一套完整的功能。

对于你创建的每个微服务,都要问问自己。


我可以把这个微服务放置在另一个体系结构中,而无需对其进行更改并充分利用其所有功能吗? by 一个具备反思能力的工程师
如果你的回答是肯定的,那么你将从正确的观点出发。如果不是,则说明你的系统具有太多的耦合成分,请重新开始。

是分解也是不分解

我认为我们应该回到单体应用吗? 不!

许多事情都遵循微服务模式,例如你的汽车。 你的汽车由多个较小的部件组成。 其中的一些组件(例如你的刹车)可用于其他汽车(就好像完全独立的微服务)。 其他组件(例如挡风玻璃)是根据你的品牌和型号特指的(例如相互依赖的微服务组件)。

其中存在微妙的平衡点,需要进行充分的规划才能正确实施。 好比任何一个好的架构设计,它永远不会固定,并且会随着时间而发展。


当你对你的架构设计按上保存键的同时,它已经无效了 by 一个聪明的架构师
一个好的微服务解决方案首先要认识到你是想要或需要做出改变而要进行改变。 如果需要,请找出原因,并避免使用天灾这样不切实际的借口。

微服务小贴士

  • 微服务不仅仅是缩小规模。
  • 实施成功与否取决于你事先所作的规划。
  • 在网络上有大量的信息和成功的设计模式/案例可以参考。
  • 以此为契机重新创建和更新服务。
  • 重新评估你的基础存储和技术。
  • 朋友不会允许朋友“喝了酒后再设计”软件系统。

相关 [听说 单体 应用] 推荐:

我听说单体应用才是未来

- - DockOne.io
特斯拉在自动驾驶方面受到了一些负面报道(我有一台特斯拉,我个人认为自动驾驶这个功能需要改名). 由于驾驶员入睡,发生了多次车祸. 我想说的是:驾驶员应该知道不能在405号高速公路上打盹(我使用特斯拉的自动驾驶功能,请相信我,我是不会睡着的). 那么,是让我们移除自动驾驶功能,还是学会正确使用它. 人们沉迷于专业术语和新想法,好像他们能够解决所有问题.

神贴:你……听说过异性恋么(…………慎入啊!!!)

- caoxg - 天朝娱乐 | 每天开心一下!
神贴:你……听说过异性恋么(…………慎入啊.

[笑话连篇] 听说Facebook将推出一个暗恋功能

- 旋 - 水木社区 今日十大热门话题
发信人: rednumen (rednumen), 信区: Joke. 标 题: [进版]听说Facebook将推出一个暗恋功能. 发信站: 水木社区 (Tue Apr 19 11:11:20 2011), 站内. 听说Facebook将推出一个暗恋功能,如果你暗恋某个人,标记#暗恋#,如果你暗恋的人正好暗恋你,系统就会发信息告诉你们两个.

听说你把女秘书辞了,她犯了什么错?

- satan - 乐淘吧
“听说你把女秘书辞了,她犯了什么错. ”“我对她说‘我爱你’,不一会儿,她把这句话打了出来,并让我在上面签字…” . 9年的朋友,2年抢我2个女友,哦,交友不慎啊. 日语绕口令,看一看,试一试,会不会.  » 非特殊声明本站所有文章,图片,视频全部来自网络,如有侵权>,请通知本站. 转载请注明来源:乐淘吧 » 《听说你把女秘书辞了,她犯了什么错.

从未听说过的一次历史灾难

- Tim - 李银河的博客
转载一篇文章:由于有了互联网,我们了解到许多历史真相. 了解历史是我们的责任,从中汲取教训有益于目前的生存. 美国Discovery节目编排了名......>>点击查看新浪博客原文.

大多数人从未听说过CTRL+F

- han - Solidot
Google科学家Dan Russell称,在他的研究中有90%的人不知道使用快捷键CTRL/Command + F去寻找文档或网页中的单词. Russell研究了数千人如何搜索资料. 他说,在做研究时他已经记不清有多少小时坐在别人的房子内,看着对方阅读一个长长的文档寻找所需要的资料. 他在最后会忍不住提醒,有一个技巧可以帮助快速搜索信息,经常研究对象听过后会感慨万分的说“无法想象自己浪费了多少生命”.

“王师傅,听说你和嫂子打架,

- 小D - 微博段子
“王师傅,听说你和嫂子打架,总是你挨打. ”“唉,不瞒你说,我老婆没有公费医疗,受点伤可不得了,看病要花钱,不像我,打坏了,看病公家给报销. 原文地址:http://www.tduanzi.com/tweets/14981.html.

怎样利用美剧全面提高听说读写? - 知乎

- -
有人问我,不想应试,想踏踏实实的学习英语,提高自身水平,用于日常交际,应该怎么学?. 周围有太多的人,下载了各类英语软件,保存收藏了许多英语方法论. 他们误以为保存了这些资料,就等于自己学过了. 或者装模作样的背背单词,练练听力,就以为自己足够刻苦. 上个世纪,老一辈的英语学习者只依靠一部收音机,一本英语书,靠自己摸索,终成为一代大家.

作为文艺青年 你怎么可能没听说过养秋裤 ?

- Ray - 我们爱讲冷笑话
1 买秋裤,裤腰处留出3厘米左右的富余.下次买秋裤,你可以并不卡着腰买裤.3厘米左右的富余能够让你的秋裤正好吊再髋骨上,就像你看到CK广告模特一样性感.另外,你坐下的时候也不怕把扣子崩开.. 2 秋裤买长不买短,很多秋裤会洗后缩水,所以你买秋裤的时候应该买稍微长一点的.如果你的秋裤上注明了”PRESHRUNK”字样,说明做过了缩水处理,这样的秋裤就不必担心缩水问题..

边缘计算听说过吗?淘宝提升了69%的首屏性能

- - 掘金前端
本文分享来自淘系内容前端团队-蒂夫. 在开始正题之前,我先讲一个内容详情的业务场景和其面临的性能问题. 图文内容详情业务本身有三个比较大的特点:. 内容量大,几十亿的内容量,并且每天还在疯狂增长;. 流量大,为了支撑这么大的业务,需要很多服务器成本;. 内容数据极具静态化,页面参考如下,除了蓝色标识的数据,其他数据很少会改动;.