点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

不要在微服务之间共享代码

  • 2015-01-28
  • 本文字数:838 字

    阅读完需:约 3 分钟

通常来说,构建微服务是为了能够将隔离作为一种应对变化的方法。在服务之间共享代码会增加服务之间的相互耦合,跨越隔离界线,导致隔离有效性和变化应对能力减弱, David Dawson 发表了一系列博文对不要重复劳动(DRY)原则提出质疑

Simplicity 的 CEO David 认为构建微服务一些常见的原因如下;

  • 独立可扩展
  • 服务隔离
  • 单独的服务生命周期

David 声称这些原因都是关于应对环境或代码库中的变化的,同时他也相信变化通常也是切分服务的主要原则。

David 发现在开发人员当中跨越微服务共享代码的理由基本上很少,主要包括:

  • 利用现有的技术功能,例如通过共享的库。
  • 共享数据模式,如通过使用相同的类。
  • 共享数据源,如不同的服务使用相同的数据存储。

David 强调所有的代码共享都会让你的服务通过共享的代码附着在一起。创建一个单一可信来源,在一个服务内部坚持 DRY 原则会在具有单一责任的服务内部产生内在耦合但不会出现问题。相反,如果跨越这个界限,即使有些东西表面看来是相同的,它们是也处于不同的上下文之中而且一定是有区别的,由不同的代码实现并且使用不同的数据存储。David 极力劝阻无论这些代码看起来有多么相似,我们也要抵住诱惑,不能将这些代码附在一起,因为那意味着耦合跨越了边界和不同的上下文,这将直接导致大泥球出现。

David 认为 DRY 原则已经成为了可与设计模式比肩的软件开发的基石之一,但是它也被曲解成 _ 不要重复任何事(Don’t Repeat Anything和 _ 拷贝粘贴是不好的(Copy and Paste is bad。追溯其来源,在《The Pragmatic Programmer》一书中,DRY 的描述如下:

每条知识在一个系统里一定都有一个单一的无歧义的权威表示。

David 的批注认为这里的关键术语是知识的概念,而不是拷贝和粘贴。尽管这个原则在某些特定的领域非常实用,他认为这一术语已经超出了其上下文,被应用的过于广泛。当应用于微服务体系架构之上更高的层级时,如共享模式,我们只会剩下维护体系架构的成本而不会有任何收益,他们已经被 DRY 所毁。

查看英文原文: Don’t Share Code Between Microservices

2015-01-28 14:4115346
用户头像

发布了 75 篇内容, 共 61.0 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

TcaplusDB数据库 X《大主宰:大千世界》,战斗永不停歇

数据人er

数据库 nosql 腾讯云 TcaplusDB

5月26日来IGS大会腾讯云游戏&新文娱分论坛和TcaplusDB约会吧!

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月8日)

数据人er

数据库 nosql 腾讯云 TcaplusDB

【TcaplusDB知识君】腾讯云TcaplusDB数据库的技术原理

数据人er

数据库 nosql 腾讯云 TcaplusDB

开源应用中心|这款纯手工打造的开源博客平台,大佬们都在用!

开源

TcaplusDB x 和平精英 ,两周年生日快乐!

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月10号)

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]一个优秀的数据库TcaplusDB如何进行备份和回档

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB X 黎明觉醒,探索不止,黎明将至

数据人er

数据库 nosql 腾讯云 TcaplusDB

这个夏天ChinaJoy“游戏咖啡厅”TcaplusDB如约而至

数据人er

数据库 nosql 腾讯云 TcaplusDB

开源大数据Meetup回顾 | 第四范式:现代存储架构下的系统优化实践

TcaplusDB x 王者荣耀|五五开黑节,我们无惧挑战!

数据人er

数据库 nosql 腾讯云

【TcaplusDB君】腾讯云数据库TcaplusDB存储引擎的优势

数据人er

数据库 nosql 腾讯云 TcaplusDB

【TcaplusDB知识库】游戏升级不停服?TcaplusDB:So Easy!

数据人er

数据库 nosql 腾讯云 TcaplusDB

腾讯云数据库TcaplusDB十年耕耘,小苗终成大树

数据人er

数据库 nosql 腾讯云 TcaplusDB

腾讯云TcaplusDB携手《穿越火线》亮相IGS大会腾讯云游戏&新文娱分论坛

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月7日)

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月9日)

数据人er

数据库 nosql 腾讯云 TcaplusDB

小数据与业务的毛细血管

boshi

大数据 深度思考

腾讯云TcaplusDB X 大主宰·大千世界|万道争锋,独领其风

数据人er

数据库 nosql 腾讯云 TcaplusDB

腾讯云TcaplusDB荣获全球云计算大会优秀解决方案奖!

数据人er

数据库 nosql 腾讯云 TcaplusDB

现在动手玩转腾讯游戏核心数据库!TcaplusDB华东客户Hands-on活动

数据人er

数据库 nosql 腾讯云 TcaplusDB

又上新台阶!腾讯云TcaplusDB &与华为鲲鹏完成兼容性认证

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB X 光与夜之恋,来谈一场高沉浸式的恋爱吧

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月11日)

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月12日)

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]限制腾讯云TcaplusDB无敌的情况介绍

数据人er

数据库 nosql 腾讯云 TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月)

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]意外的保障—腾讯云TcaplusDB高可用部署

数据人er

数据库 nosql 腾讯云 TcaplusDB

不要在微服务之间共享代码_语言 & 开发_Jan Stenberg_InfoQ精选文章