阅读更多

0顶
0踩

企业架构

原创新闻 再论微服务架构之七宗罪

2016-05-31 14:08 by 副主编 mengyidan1988 评论(0) 有6369人浏览
引用

原文链接:7 Deadly Sins of a Microservices Architecture
作者:Martin W Brennan,ViewPop联合创始人
译者:刘帝伟 审核:赵屹华
责编:周建丁(zhoujd@csdn.net)

2014年年底,塔里克·阿贝卓布(TareqAbedrabbo,OpenCredo首席技术官)发表了一篇题为“微服务之七宗罪”的文章,他在此文确定了微服务架构七种常见的反发展模式。2016年一月,来自Voxxed的Danial Bryant发表了该文章的最终版,结合原文以及自己的经验对此文做了进一步的更新。

两人讨论的第一个问题都是构建错误的东西。就像Abedrabbo文章说的那样,可能是由于在定义项目范围和目标时含糊不清所造成的,或者像Bryant说的,试图利用最新的技术,而不是使用最适合特定目标的技术。这两种情况都会导致额外的、不必要的复杂性,因为它们都未集中于项目的最终目标。

不实施契约优先(contract-first)设计方法是项目误入歧途的另一种途径。一个好的服务契约允许开发者专注于微服务是在做什么,而不是专注于它是如何实现的,确定总体目标才是重中之重。

技术实现的细节仍需要解决,Abedrabbo和Bryant两者的文章都提出了通过把单体架构概念运用到微服务架构上面,用以创建分布式单体架构(distributed monolith)。单体架构和微服务架构的交叉也暴露了一个共享域模型问题。

由于应用程序现在通常由多个微服务组成,因此一个应用程序不再是一个刚性边界的单一实体,就好比传统的单体架构案例。开发者可以采用领域驱动设计(Domain-Driven Design,DDD)方法提供一个核心业务概念的演化模型来解决这一问题,这样会更为合适。

这两篇文章同时也表达了对选择错误、太多选择、以及交换信息通信协议的关注。服务功能应该影响协议,而好的方法则是采用标准化的态度,同时使用面向外部服务的同步协议,以及面向内部服务的异步协议。

Abedrabbo强调引进实践证明的DevOps的重要性,正如微服务许可的那样,从一开始就发挥连续传送管道的优势。它从早期开始就支持验收、回归和性能测试自动化,Bryant延续这一主题是为了确保系统在快速移动并经常波动的微服务世界中支持测试。

DevOps这一概念贯彻于Bryant的文章之中,鼓励操作者或系统管理员之间的相互理解。他建议,员工必须接受培训,以应对现实生活中的灾难恢复,这样问题和成功可以通过整个团队进行共享。

人类因素(human factor)是原文的最后一点。微服务可以简化开发并且促进协作精神,但习惯于传统的、大规模的、充满筒仓和政治组织的开发者,对于如何在运行时表现图片服务不可能有更深、更广泛的理解。企业则可以通过投资开发商和鼓励广大组织合作以建立更好的、可持续的、能够利用微服务能力的系统,从而解决这一问题。
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 架构学习资料精选

    架构师技术图谱包括:分布式、前端、大数据、存储、微服务、推荐系统、框架、消息队列、编程语言、设计模式、重构、集群等内容。 体验小程序版「架构师技术图谱」,扫描下方微信小程序码即可。 欢迎订阅《码农周刊...

  • 一个架构师谈什么是架构,以及怎么成为架构师

    来点轻松的话题。我们调剂一下后再继续讲CAS SSO单点登录吧因为后面的内容全部和代码有关,大家会觉得枯燥。所以今天我们先来点”番外篇“,讲讲什么是架构师,什么是架构这个永恒的话题吧。此...

  • 架构师素养及从小菜进阶架构师(2)

    支付宝架构师:讲述从工程师到架构师的成长之路- http://blog.csdn.net/Gupaoxueyuan/article/details/79089101支付宝架构师:从工程师到架构师的成长之路- http://blog.csdn.net/ak47java/article/details/78701226...

  • 【RPC框架之Zeroc ICE 介绍】

    二、微服务架构的优点 先天分布式 无状态(尽量) 积木式发展   三、 单体应用 通俗地讲,“单体应用(monolith application)”就是将应用程序的所有功能都打包成一个独立的单元,即主要业务逻辑都...

  • Python 全栈系列98 - 提供商业接口服务的架构考虑

    接口服务是一种产品,产品要考虑人性(的弱点),也就是“七宗罪” 七宗罪(拉丁语:septem peccata mortalia;英语:seven deadly sins),天主教称七罪宗,或称七大罪或七原罪,属于天主教教义中对人类恶行的...

  • InfoQ在新兴技术企业大会上对Lightbend企业架构师Kiki Carter的访谈

    Kiki Carter,Lightbend企业架构师,在2017新兴技术企业大会(Emerging Technologies for the Enterprise,ETE)上发表了题为“Somm”Lagom: Building Systems That Age Like Wine的演讲。\\“Somm”取自2012年的...

  • 国内有哪些顶级技术团队的博客值得推荐?

    优质文章推荐: 后端开发实践——开发者的第 0 个迭代 后端开发实践系列——领域驱动设计(DDD)编码实践 写了十年技术博客,我收获了什么 重构的七宗罪 小米信息部技术团队 小米信息部技术团队是小米旗下的一个技术...

  • “编程不规范,同事两行泪!”

    虎牙直播在微服务改造方面的实践和总结 有赞搜索系统的架构演进 为什么分库分表后不建议跨分片查询 别看不起分区表:我要为你点个赞 Spring Cloud Greenwich 正式发布 在前后端分离的路上承受了多少痛? 你真的会...

  • 2016企业开发趋势:Lightbend关于JVM开发者的调查

    SOA与微服务之争的真正答案应该是它们分别适合于不同的解决方案,但因为产生的应用程序数量要远远多于企业架构的数量,因此微服务框架就显得比ESB更适合于你的项目。 \u0026#xD; \u0026#xD;\u0026#xD; Payara 和 C2...

  • 程序员如何让自己的技术能力突飞猛进?

    Spring 代码…,当你进入到大师的作品中时,你可能就是下个踩在巨人肩膀上的人,大量的面试题及答案还有资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,...

  • Web API 开发接口

    微服务架构也有不足。 需要对其进行运维,微服务之间需要协作,它们可能会按照与大型单体应用不同的节奏进行演化。在这样一个分布式系统中,维护所有服务之间的一致性并不简单。 众多微服务之间的通信可能会因为 ...

  • python源码基于mediapipe设计实现人体姿态识别动态时间规整算法DTW和LSTM(长短期记忆循环神经网络.rar

    本项目基于Python源码,结合MediaPipe框架,实现了人体姿态识别功能,并进一步采用动态时间规整算法(DTW)和长短期记忆循环神经网络(LSTM)对人体动作进行识别。项目涵盖了从姿态估计到动作识别的完整流程,为计算机视觉和机器学习领域的研究与实践提供了有价值的参考。 MediaPipe是一个开源的多媒体处理框架,适用于视频、音频和图像等多种媒体数据的处理。在项目中,我们利用其强大的姿态估计模型,提取出人体的关节点信息,为后续的动作识别打下基础。DTW作为一种经典的模式匹配算法,能够有效地处理时间序列数据之间的差异,而LSTM则擅长捕捉长时间序列中的依赖关系。这两种算法的结合,使得项目在人体动作识别上取得了良好的效果。 经过运行测试,项目各项功能均表现稳定,可放心下载使用。对于计算机相关专业的学生、老师或企业员工而言,该项目不仅是一个高分资源,更是一个难得的实战演练平台。无论是作为毕业设计、课程设计,还是项目初期的立项演示,本项目都能为您提供有力的支持。

  • web期末大作业-电影动漫的源码案例.rar

    本学期末,我们为您呈现一份精心准备的电影动漫源码案例,它不仅是课程设计的优秀资源,更是您实践技能的有力提升工具。经过严格的运行测试,我们确保该案例能够完美兼容各种主流开发环境,让您无需担心兼容性问题,从而更加专注于代码的学习与优化。 这份案例资源覆盖了前端设计、后端逻辑处理、数据库管理等多个关键环节,旨在为您提供一个全面而深入的学习体验。无论您是计算机专业的在校学生,还是对编程充满热情的爱好者,亦或是希望提升技能的企业员工,这份案例都将为您提供宝贵的实战经验。 此外,我们还特别准备了详细的使用指南和在线支持,确保您在学习和使用的过程中能够得到及时有效的帮助。您可以放心下载和使用这份资源,让它成为您学习道路上的得力助手。让我们携手共进,通过实践探索编程的无限可能!

  • java图书管理系统毕业设计(源代码+lw).zip

    本设计是为图书馆集成管理系统设计一个界面,图书馆集成管理系统是用MICROSOFT VISUAL Foxpro 6.0 来建库(因特殊原因该用 MICROSOFT Access来建库)。它包括: 中文图书数据库; 西文图书数据库; 发行商数据库; 出版商数据库; 读者数据库; 中文期刊数据库; 西文期刊数据库; 中文非印刷资料库; 西文非印刷资料库; 典藏库; 流通库; 预约库; 流通日志库;

  • 项目实战+C#+在线考试系统+毕业项目

    该系统主要以在线模拟考试使用为出发点,以提高学生的学习效率和方便学生随时随地检测学习成果为目的,主要采用了DreamweaverMX、FireworksMX、FrontPage软件进行设计、使用ASP开发语言进行编程,所选用的数据库是微软公司开发的Access数据库。 ASP是通过一组统称为ADO的对象模块来访问数据库,ASP提供的ADO对象模块包含6个对象和3个集合,常用的有Connection、 Record set 、Command 、field等对象。 ASP是一种服务器端的指令环境,用来建立并执行请求的交互式WEB服务器端运行的应用程序, ASP程序只能在WEB服务器端执行,当浏览器向服务器要求运行ASP程序时,服务器会读取该程序,然后执行该程序并将结果转换为HTML文件 ,再将HTML文件传送给浏览器,待浏览器收到HTML文件以后,便会将执行结果显示在浏览器上。

  • 应用背景这个源码包非常适合研究蚁群算法的同学使用,

    应用背景这个源码包非常适合研究蚁群算法的同学使用,其中介绍了蚁群算法的基本程序,有利于各位从中吸取有益经验,也可以结合其它方法进行改善。关键技术蚁群算法应用广泛,在此提供一个可以运行的、完整的源码以供参考,各位可以在此基础上进行改进,改善其在不同场合中的应用效果Matlab.zip

  • 传递矩阵中矩阵元素的传递与变换.zip

    传递矩阵中矩阵元素的传递与变换.zip

  • numpy安装 python -m pip install -upgrade pip

    numpy安装 numpy安装 python -m pip install --upgrade pip

  • Qt开发倒计时,设置时间,然后会生产倒计时

    【Qt开发】倒计时,设置时间,然后会生产倒计时。修改其中的时间clocker.h

Global site tag (gtag.js) - Google Analytics