热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

纳米模块_服务,微服务,纳米服务–我的天哪!

纳米模块显然有一种新的分布式体系结构称为微服务,所以上周我继续阅读了马丁福勒(MartinFowler)和詹姆斯刘易斯(Ja

纳米模块


12996688414_4da8517040_m

显然有一种新的分布式体系结构称为微服务,所以上周我继续阅读了马丁·福勒(Martin Fowler)和詹姆斯·刘易斯(James Lewis)关于该主题的大量文章 。 我对此的React基本上是:

在马丁对他的文章发表推文之后,也表达了类似的论点(这里没有新内容),例如克莱门斯·韦斯特斯的评论:

或史蒂夫·琼斯(Steve Jones)的帖子“ 对于那些知道SOA是什么的人来说,微服务就是SOA 。”

本文讨论的自治性,智能端点,事件等都是SOA概念–如果您碰巧读了我的书,并且读了这篇文章,则可能已将其识别为诸如通信反转 , 服务主机 , 服务实例 , 服务看门狗和其他人。

因此,在Martin's和James的文章中出现的微服务几乎是面向服务的,没有像WS *,ESB等必不可少的错误误解与SOA昵称相关联-也许这是一个足够好的新名字,但我个人对此表示怀疑。

然而,故事还没有结束,关于微服务是什么还有其他各种看法,例如克里斯·福特的观点 ,他说

“我个人的观点是,可以通过单个抽象架构约束来理解微服务架构,该约束可以沿许多不同的自由度进行解释。

X可以独立于系统的其余部分而变化。”

某些东西是独立的并且可以与系统的其余部分独立地进行更改的想法是好的,但是我很难说这是对任何事物的定义,或者至少是对任何新事物的定义。 作为DOD-STD-2167A (于1988年发布)的一部分,我首先听说过CSCI(计算机软件配置项),基本上意味着CSCI是可以独立于系统其余部分而变化的组件。 在2167A眼中,这还意味着一个非常详细的瀑布式文档加载过程,这不是任何人认为服务或微服务应包含的内容,但它确实表明“独立变化”没有多大意义。

我敢肯定,有些读者会说“但是,等等,我们在这里谈论微服务-所以它们也应该很小” –确实有像詹姆斯·休斯(James Hughes)在微服务上这样的帖子,带有这样的报价:

“首先,什么微服务? 好吧,实际上并没有一个硬性和快速的定义,但是通过与各种人的交谈,似乎已经达成共识,即微服务是一种简单的应用程序,位于10-100 LOC左右。

(实话实说,詹姆士在接下来的一句话中说,LOC是比较实现的一种残酷方式,但由于使用了“似乎已达成共识”,我认为值得重复一遍。)

那么,您将如何获得100个LOC服务? 如果您依靠框架(例如Finagle或Sinatra James提及)生成序列化/反序列化代码(protobuff,thrift,avro等),则可以到达那里-这实际上是建立在智能服务主机上的 。 另一个例子是在Erlang中使用其主管层次结构进行开发,这也使我们采用另一种减少冗长程度的语言(例如上述的Erlang,python或scala与Java之类的语言)来降低LOC的方法。

我会说。但是,如果您发现有10行代码服务,则很有可能将功能实现为服务,而没有真正的服务微型程序,例如,我可以。不会看到您具有上述马丁和刘易斯文章中提到的去中心化存储(和自治),或者拥有休斯提到的监视和工具。

您还应该记住,虽然更好和更便宜的网络使我们能够突破极限,但是分布式计算的弊端仍然存在,您还需要管理许多小型服务以及序列化和反序列化,安全性等的性能问题。可能非常意味着您已经从有效的小型“微型”服务转移到令人头痛的领域,我称之为“ 纳米服务 ”

“ Nanoservice是一种反模式,其中的服务过于精细。 纳米服务是一项开销(通信,维护等)超过其效用的服务。”

因此,我们有了它,在大多数情况下,微服务只是SOA原理的另一个名称,在SOA的大肆宣传中,花药名称可能是适当的,但是我认为这些天大部分的蒸气已经消失了,人们更好地理解了什么需要。 此外,如果我们确实想用一个新名称来命名适当的SOA,我认为微服务是一个糟糕的名词,因为它会导致向纳米服务和10行代码的过渡,这只是您花哨的别致方法执行的旧网络服务方法主机使用热序列化格式。

不管微微与否,服务应该比它们所引起的偷听更有用。

翻译自: https://www.javacodegeeks.com/2014/04/services-microservices-nanoservices-oh-my.html

纳米模块



推荐阅读
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 在Windows Server 2008 R2上配置IIS FTP服务
    本文详细介绍了如何在Windows Server 2008 R2操作系统上通过IIS配置FTP服务的过程,包括服务器角色的选择与安装、FTP站点的创建以及必要的服务和防火墙设置检查。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • ArcXML:互联网空间数据交换的专用语言
    ArcXML是一种专为ArcIMS平台设计的数据交换协议,基于XML标准,用于在不同组件之间传输和描述地理空间数据。本文将详细介绍ArcXML的背景、用途及其与XML的关系。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 深入理解 JMeter 定时器
    本文详细介绍了JMeter中定时器的功能和使用方法,探讨了其在性能测试中的重要性,并结合实际案例解释了如何合理配置定时器以模拟真实的用户行为。文章还涵盖了定时器的执行顺序及其与其他元件的相互作用。 ... [详细]
  • 尝试执行数据库模式加载时遇到错误'Mysql2::Error: 指定的键太长;最大键长度为767字节'。本文将探讨这一问题的成因及解决方案。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • KMP算法是处理字符串匹配的一种高效算法它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配。从渐进的意义上说,这样时间复 ... [详细]
  • 本文探讨了在iOS平台上开发BLE(蓝牙低功耗)应用程序时遇到的挑战,特别是如何实现应用在后台模式下仍能持续扫描并连接蓝牙设备。文章提供了具体的配置方法和常见的问题解决方案。 ... [详细]
  • 解决MacOS Catalina升级后VMware Fusion黑屏问题的详细指南
    本文深入探讨了如何在MacOS Catalina升级后解决VMware Fusion黑屏的问题。通过详细的步骤和代码示例,帮助用户快速恢复虚拟机的正常运行,并提供了额外的安全建议。适用于希望提升工作效率或学习新技术的读者。 ... [详细]
  • 深入解析:OpenShift Origin环境下的Kubernetes Spark Operator
    本文探讨了如何在OpenShift Origin平台上利用Kubernetes Spark Operator来管理和部署Apache Spark集群与应用。作为Radanalytics.io项目的一部分,这一开源工具为大数据处理提供了强大的支持。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有