• 当公式的组织架构及其代码被拆分以后,但仍然存在紧密耦合时,就会出现分布式单体。这已经成为一个问题,因为系统的规模增加,单体的所有部分都需要一起管理,这会放慢开发速度并增加任何变化的风险。 能够识别何时处理分布式单体很重要:
  • 当你思考是否“是A引起C”?然后您意识到是A导致B然后导致C”,然后又会想到“也许A和B引起C”,然后您看到一个模糊轮廓,并想知道这个隐藏的轮廓是否在A,B和C存在之前就已经存在了。 众说纷纭:系统思考无疑是改变生活的事情!
  • 如何编写易于更改的代码?朝更方便地删除代码方向努力。 “您可以删除部分而不重写其他部分的系统通常称为松散耦合” -  icon
  • Jarviz是为Java应用程序设计的依赖性分析工具。Jarviz可以提供跨工件的Java方法之间的耦合的完整图。由于一个类中的非私有方法可以被 icon
  • 在软件设计中,“越小越好”几乎普遍是坏建议,例如针对数据库分区,消息大小,μsvcs,有界上下文,类名,方法一致性等。一些关键业务逻辑会越过这些细粒度边界,并导致实施不当。小粒度事物看起来很简单,因为错误不是隐藏在事物内部,而是隐藏在它们的连接中。 事物边界会变大,很少变小或 icon
  • 我们都喜欢内聚,讨厌耦合(高聚合低耦合),关于内聚和耦合的标准建议是,设计应努力使内聚最大化并最小化耦合。这是一个很好的口头禅,但是在没有很好地理解真正意图的情况下,这常常是一种误导,或者被认为是学术上无关紧要的正确废话。一个简单的特征是,耦合是系统中各个部分的互连程度,而内聚是这些 icon
  • 我们如何才能快速地从整体变为微服务?无法回答这个问题。首先,“迅速”就在窗外。你一个月都没弄糟。您将不会在一个月内修复它。其次,您希望从微服务中获得一些您目前无法获得的好处。那有什么好处?微服务不是重点。拒绝了这个问题之后,我将继续回答。在我无法解释为什么无法快速更改微服务之 icon
  • 自从Node诞生以来,Node模块就被编写为CommonJS模块。我们require()用来导入它们。当实现供他人使用的模块时,我们可以exports通过设置定义“命名导出”: icon
  • dddesign就像agile。许多人认为这与低级的具体实现细节和策略有关。但是,实际上,两者或多或少都像是一种思考软件和业务问题的方式。他们喜欢哲学...思维方式...原则与规则...。它们的影响在于构建软件的高级战略方法。“我们如何将这个庞大的系统分成可征服的小块?” “ icon
  • Zephyr 是一个基于Java的开源插件框架,具有智能依赖管理、模块化设计和占用空间小的特点。 Zephyr 智能管理插件生命周期的各个方面,包括类加载、启动/停止顺序、更新等。 Zephyr 仅重 1 icon
  • 问题:如何减少变化的影响?如何支持低依赖性和增加重用?解决方案:分配职责以使(不必要的)耦合保持低水平。使用此原则来评估替代方案。 icon
  • 人们通常不知道微服务需要独立的自治。例如各种服务共享一个数据库;另一个问题是,服务之间通过RPC/Restful进行网络之间的同步调用链太长。这些都是分布式意大利面条一样的糨糊结构,这种架构并没有引起人们的注意,这种面条糨糊的结构可能是由于各种相互调用的服务紧密耦合而引起的。设计微服 icon
  • 当您的代码动态更改自身时,就会发生反射式编程(或反射)。例如,一个类的方法,当我们调用它时,会向该类添加一个新方法(也称为猴子补丁)。< icon
  • 当你建立一个计算机系统的时候,一些小事情就开始出现了: 也许一个数据库查询对于你正在建立的功能来说是尴尬的, 或者你发现你的服务器在传输数千兆字节的十六进制ASCII数据时陷入困境, 或者你的应用程序为成千上万的独立用户即时翻译成日语。 这些都是你的 icon
  • 许多Go开发者,尤其是新开发者,发现一个不明显的问题是,我到底该如何把所有我需要的东西都传到我的处理程序中?我们没有像Java或C#那样花哨的控制反转系统。 http.处理程序是静态签名,所以我不能只传递我真正想要的东西。看来我们只有3个选择:使用globals、将处理程序包裹在一个 icon
  • 我很荣幸地代表 Spring 社区和所有做出贡献的人宣布 Spring Modulith 1.0 GA 正式发布。5 年多前,Modulith 还是一个研发辅助项目,2022 年成为 Spring 的一个实验项目,现在已成为 Spring 社区完全支持的顶级项目。 icon
  • GPT-4之于皮尔士符号学就像冯·诺依曼计算机之于布尔逻辑。 然而,不同之处在于GPT-4的架构师(与冯·诺依曼不同)并不了解皮尔士符号学。 为何需要符号学(Semiotics)?语义学不行吗?语义学的概念本身掩盖了太多的细节。 我们需要一 icon
  • 下图是一个高耦合、低相干性的两个包调用设计: icon