微服务时代不断演变的架构

发布于:2024-10-24 编辑:匿名 来源:网络

微服务架构(Microservices) 微服务是一种通过多个小型服务组合来构建单个应用程序的架构风格。这些服务是围绕业务能力而不是特定的技术标准构建的。

每个服务可以使用不同的编程语言、不同的数据存储技术,并运行在不同的进程中。服务采用轻量级通信机制和自动化部署机制来实现通信和运维。

微服务的前世今生 “微服务”这一技术术语于 2008 年首次提出,由 Peter Rodgers 博士在年度云计算博览会(Web Services Edge)上首次使用。当时被称为“Micro-Web-Service”,指的是一种独立于语言、专注于单一职责的细粒度 Web 服务(Granular Web Services)。

“微服务”一词并不是 Peter Rodgers 直接凭空创造的概念。新生的微服务可以说是上述《演进中的架构之SOA时代》的产物,就像Spring和Hibernate在EJB推广过程中诞生一样。

现阶段的微服务被提议作为 SOA 的轻量级补救措施。直到今天,英文版维基百科仍然将微服务定义为 SOA 的变体形式。

因此,微服务初期涉及到SOA、Web Service等概念是完全可以理解的,但现在我们来看一下。 ,维基百科对微服务的定义已经相当过时了。

什么是微服务微服务是一种软件开发技术——面向服务的架构(SOA)结构风格的一种变体。 — 维基百科,微服务 微服务的概念提出后,近 10 年并未受到太多关注。

如果只是现有SOA架构的拼凑,确实很难激起技术人员更多的热情。然而,这10年,微服务本身也在思考和变革。

在波兰克拉科夫举行的“33rd Degree Conference”上,Thoughtworks 首席顾问 James Lewis 做了题为“《Microservices - Java, the Unix Way》”的主题演讲,其中提到了单一服务责任、康威定律、自动扩展、领域驱动设计和其他原则,但没有提到SOA。相反,主张重拾Unix的设计哲学(As Well Behaved Unix Services)。

这似乎呼应了作者上一节提到的“初心与自省”。微服务迫不及待地想摆脱SOA的依赖,成为一种独立的架构风格。

或许,他们也将成为SOA的革命者。微服务真正兴起是在 2007 年。

相信本文的大多数读者都是从 Martin Fowler 和 James Lewis 合写的文章中第一次了解微服务的。这并不意味着您必须阅读本文。

,或者准确地说,你今天所认识的“微服务”就是本文提出的“微服务”。本文定义了现代微服务的概念:“微服务是一种通过小型服务组合构建单个应用程序的架构风格。

这些服务是围绕业务能力而不是特定的技术标准构建的。各个服务可以采用不同的编程语言和不同的数据存储技术运行在不同的进程中。

服务采用轻量级通信机制和自动化部署机制来实现通信和运维。”此外,文章还列出了微服务的九大核心业务和技术特征。

作者一一列举,解读如下: 围绕业务能力组织,这里再次强调了康威定律的重要性,团队有什么样的结构、规模、能力,就会生产出与结构、规模、能力相对应的产品,这个结论不是某个团队或公司遇到的巧合,而是。这是进化的必然结果,如果将属于同一个产品的功能划分到不同的团队,必然会出现大量的跨团队沟通和协作,在管理、沟通和协作方面都会产生更高的成本。

工作安排有了高效的团队,自然就会有所改进。当团队和产品调整稳定后,团队和产品就会有一个一致的结构。

去中心化治理意味着“谁拥有孩子,谁就负责”。服务对应的开发团队对服务运行的质量直接负责,也应该有能力掌控服务的各个环节,不受外界干扰。

权力,例如选择与其他服务异构的技术来实现自己的服务。在实际操作中,这有些宽松。

大多数公司不会将 Java 用于一项服务,将 Python 用于另一项服务,而将 Golang 用于下一项服务。他们通常会统一主流语言,甚至有统一的技术栈。

或专有技术平台。微服务并不提倡也不反对这种“统一”。

只要负责提供和维护基础技术栈的团队意识到被各方依赖,并做好“经常被凌晨3点闹钟叫醒”的心理准备。好的。

微服务更强调的是,当确实需要技术异构时,你应该有选择“非统一”的权利。例如,不应该强迫 Node.js 来开发报告页面。

做人工智能计算的时候,应该可以选择Python等等。通过服务实现组件的独立自治(Componentization via Services),之所以强调通过“服务”(Service)而不是“类库”(Library)构建组件,是指类库在编译时静态链接到程序中。

,通过本地调用提供功能,而服务是通过远程调用提供功能的进程外组件。在上一篇文章中,我们分析过,虽然远程服务的调用成本较高,但这却是为组件带来隔离和自治的必要代价。

产品思维(产品而不是项目)避免将软件开发视为完成某种功能,而是将其视为持续改进和改进的过程。例如,运维不应该被视为运维团队的业务,而开发应该被视为开发团队的业务。

团队应对软件产品的整个生命周期负责。开发人员不仅要知道如何开发软件,还要知道如何开发软件。

它是如何运作的,用户如何反馈,甚至售后支持工作如何进行。这里服务的用户不一定是最终用户,也可能是消费这个服务的另一个服务。

过去,单体架构下,程序的规模使得所有人员无法专注于完整的产品。开发、运维、支持等分工细化的组织成员只专注于自己的工作。

但在微服务下,希望团队中的每个人都有产品思维是可取的。数据去中心化(Decentralized Data Management),微服务明确主张数据应该按领域去中心化管理、更新、维护和存储。

在单个服务中,系统的各个功能模块通常使用相同的数据库。诚然,中心化存储本质上更容易避免一致性问题,但同一数据实体的抽象形式从不同服务的角度来看往往是不同的。

例如,书店应用中的书籍,销售字段重点关注价格,仓储字段重点关注库存数量,产品展示字段重点关注书籍的介绍信息。如果用作中心化存储,所有这些字段都必须修改并映射到同一个实体,这使得不同的服务可能会相互影响并失去独立性。

虽然分布式系统中的一致性问题很难处理,很多时候使用传统的事务处理也无法保证,但这是两害相权取其轻,并且有一些必要的成本是值得付出的。智能端点和哑管道(Smart Endpoints and Dumb Pipes)和哑管道几乎从名字上就直接与 SOAP 和 ESB 的复杂通信机制相对立。

ESB可以处理消息编码和处理、业务规则转换等; BPM可以集中编排企业业务服务; SOAP 拥有数十个 WS-* 协议族,用于处理事务、一致性、身份验证和授权等一系列任务。这些建立在通信管道上的功能可能是某个系统的一部分。

服务是必要的,但额外的服务是一种强加的负担。如果一项服务需要上述功能或能力之一,则应在服务自己的 Endpoint 上解决,而不是全部打包在通信通道上。

微服务提倡一种类似于经典Unix过滤器的简单直接的通信方法。 RESTful风格的通信是微服务中更合适的选择。

容错设计(Design for Failure)不再追求服务永恒稳定的虚幻追求,而是接受服务总会出错的现实。它要求在微服务的设计中,有一种自动机制来快速检测其所依赖的服务的故障。

,当错误继续存在时进行隔离,并在服务恢复时重新连接。因此,“断路器”等设施并不是微服务在实际生产环境中可选的外围组件,而是必要的支撑点。

如果没有容错设计,系统很容易因为一两个错误而损坏。服务崩溃造成的雪崩效应是巨大的。

可靠的系统可以完全由可能失败的服务组成。这就是微服务最大的价值,也是这份开源文档“The Fenix Project”的标题的含义。

进化设计(Evolutionary Design),容错设计承认服务会出错,进化设计承认服务会报废、淘汰。一个设计好的服务应该是可以废弃的,而不是指望长期发展。

如果一个系统中有一个不可替代、不可替代的服务,并不是说这个服务有多重要,而是它是一个系统。设计上脆弱性的一种表现,微服务带来的独立性和自治性也是对抗这种脆弱性的表现。

基础设施自动化:基础设施自动化,如CI/CD的快速发展,显着降低了构建、发布、运维工作的复杂度。由于运维服务数量相比单体架构增加了一个数量级,因此使用微服务的团队更加依赖于基础设施自动化。

不可能手动操作和维护数百、数千甚至数千个服务。 《Microservices》文章中对微服务特性的描述还是比较具体的。

除了定义什么是微服务之外,本文还特别说明了微服务不是什么——微服务不是SOA的变体或衍生品,应该明确说明它与SOA划清了界限,不再贴上任何SOA标签。这样,微服务概念才算真正完整、独立、具体的架构风格,为其未来几年在技术舞台上如明星般闪耀奠定了理论基础。

微服务和 SOA SOA 的这种常见表现形式导致一些微服务倡导者完全拒绝 SOA 标签,尽管其他人认为微服务是 SOA 的一种形式,也许面向服务做得正确。不管怎样,SOA 意味着如此不同的事物这一事实意味着它是有价值的。

有一个更清晰地定义这种架构风格的术语与 SOA 具有一致的表达方式,这使得微服务支持者更渴望拒绝被贴上 SOA 的标签,尽管有些人坚持认为微服务是 SOA 的一部分。一种变体,也许从面向服务的角度来看,但无论如何,SOA和微服务是两个不同的东西,正因为如此,使用不同的名称来简洁地定义这种架构风格就变得更加必要。

——Martin Fowler / James Lewis,微服务 从上面微服务的定义和特点,可以明显感觉到微服务追求更加自由的架构风格,抛弃了 SOA 中几乎所有可以抛弃的约束和规定,提倡取代“规范”标准”与“实用标准”。但是,如果没有统一的规范和约束,以前SOA解决的分布式服务问题岂不是会突然全部重现?确实,微服务中的这些问题,例如服务注册发现、跟踪管理、负载均衡、故障隔离、认证授权、伸缩、传输通信、事务处理等,都没有统一的解决方案,即使只讨论Java。

将在范围内使用的微服务,仅针对服务之间的通信问题,可以包含在候选解决方案列表中:RMI(Sun/Oracle)、Thrift(Facebook)、gRPC(Google)、Motan2(新浪)、Finagle (Twitter)、Arvo (Hadoop)、JSON-RPC、REST 等。如果您发现只有一项服务有问题,您可以选择:Eureka (Netflix)、Consul (HashiCorp)、Zookeeper (Apache)、Etcd (CoreOS) )、CoreDNS(CNCF)等。

其他领域的情况与此类似。总之,完全是八仙渡海,各显神通的局面。

微服务带来的自由是一把双刃剑。当软件架构师拿起这把剑时,其锋芒指向 SOA 制定的复杂技术标准,并夺回了选择权。

与此同时,另一边,也向他反射出一道寒光。微服务时代,软件开发本身的复杂度应该说是降低了。

一个简单的服务不一定要同时面对分发中的所有问题,也没有必要背着SOA沉重的宝袋。技术包袱。

需要解决什么问题就需要引入哪些工具;团队熟悉的任何技术都应使用哪些框架。此外,像Spring Cloud这样的胶水式全家桶工具集,通过一致的接口、声明和配置,进一步屏蔽了特定工具和框架衍生的复杂性,降低了不同工具和框架之间的切换成本。

,因此,作为一个普通的服务开发者,作为一个“螺丝钉”程序员,微服务架构是友好的。然而微服务对架构师充满了恶意,对架构能力的要求提高到了前所未有的水平。

作者在这篇文档的很多地方都反复强调,技术架构师的首要职责就是做出决策和权衡,这是有益的、有益的。只有在存在不利的情况下才需要做出决定,并且需要权衡利弊。

如果架构师自身的知识不足以涵盖决策所需的内容,并且不清楚利弊,那么他可能不可避免地会陷入选择困难的困境。微服务时代充满了自由,也充满了令人困惑的选择。

软件架构不会止步于自由。微服务并不是架构探索的终点。

如果有下一个时代,我希望信息系统也能拥有微服务的自由,围绕业务能力构建自己的服务,而不受技术规范的约束。但同时,也不必以自己承担解决分布式问题的责任为代价。

不管有什么好处和坏处!只有孩子才会做多项选择题,但所有成年人都会做!关于作者 周志明是腾讯云最有价值专家(TVP),Java技术、机器学习和企业级开发技术方面的专家。现任远光软件研究院院长,拥有机器学习博士学位。

他是开源技术的积极倡导者和推动者。对计算机科学及相关领域,特别是人工智能、Java技术、敏捷开发等领域有深入的见解。

他曾受邀在 InfoQ 和 IBM Developer Works 等网站撰写技术专栏。许多畅销书的作者。

着有《智慧的疆界》、《深入理解Java虚拟机》、《深入理解OSGi》、译《Java虚拟机规范》等作品。其中《深入理解Java虚拟机》于2011年出版第一版,现已出版至第三版。

该书已印刷超过35次,销量达30万册。不仅有良好的销量,而且有较好的口碑。

在中文计算机图书领域是公认的、罕见的。佳作。

微服务时代不断演变的架构

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 爱酷升级为梦饷集团,全力打造电商新基础设施

    爱酷升级为梦饷集团,全力打造电商新基础设施

    投资界(ID:pedaily)8月6日获悉,爱酷正式宣布公司升级为梦饷集团。 在流量去中心化趋势下,梦饷集团致力于成为新型电商基础设施提供商,为流量个人和企业提供数字化商店与综合商品服务相结合的整体解决方案。 升级后,梦饷集团涵盖评级商店、爱坤等业务。 其中,Rating S

    06-17

  • 微创医疗:信通医疗最终发行价为每股12.2港元,预计2月4日上市

    微创医疗:信通医疗最终发行价为每股12.2港元,预计2月4日上市

    微创医疗宣布分拆公司信通医疗已确定分拆股份最终发行情况关闭公司在全球销售。 售价为每股12.20港元。 假设全球发售按照目前时间表完成,分拆公司预计将于2020年2月4日在联交所主板上市,分拆公司股份将在联交所主板上市交易。 每手分拆公司股票。

    06-17

  • 武汉,最新独角兽诞生:新青科技估值超70亿

    武汉,最新独角兽诞生:新青科技估值超70亿

    这次是武汉。 投资界获悉,汽车级芯片公司芯清科技本周宣布,已于今年四季度完成总额近5亿元的A+轮融资。 这也是年内实现的第三轮融资,估值超70亿,成为新独角兽。 本轮融资,泰达投资、海尔资本、上海浦东国际、武汉创新投资、同曦资本参与投资;现有股东国盛资本、越秀产业

    06-17

  • 蚂蚁数字化行业实践入选中国金融科学院、哈佛大学、伦敦商学院案例库

    蚂蚁数字化行业实践入选中国金融科学院、哈佛大学、伦敦商学院案例库

    近日,中国金融科学院发布《以数字化引领数实融合的内在机理与现实思考》研究报告,总结了用数字化引领从工业互联网平台建设和发展的数据来看。 真实融合的典型模式。 报告指出,数实融合不断消解数字经济与实体经济的界限。 在此过程中,工业互联网平台是不可或缺的载体。 只

    06-17

  • 投资企业-靖亚资本和高瓴创投分别领投,维格表示,vika.cn已完成PreA和PreA+两轮融资,

    投资企业-靖亚资本和高瓴创投分别领投,维格表示,vika.cn已完成PreA和PreA+两轮融资,

    这是36氪持续关注的公司。 “维卡维格”成立于年底,是一家专注于底层软件技术创新的公司。 该公司是多维表的先驱。 其核心产品“维格表vika.cn”是一款面向API的智能多维表,定位为新一代企业数据协作工具。 维格彪已于2020年4月发布内测版本,并??于2020年10月正式启动公测

    06-18

  • 马斯克“盲盒裁员”席卷推特,误裁并不是最离谱的事情

    马斯克“盲盒裁员”席卷推特,误裁并不是最离谱的事情

    如果你在办公室或者去办公室的路上,请先回家。 大多数工人看到这句话都会感到高兴。 毕竟以前,公司只是在发生一些意外的天气变化之后,才会通知你在家办公。 作为一名工人,我基本上讨厌在家工作。 通勤成本0,工作灵活自由。 但当 Twitter 员工看到这句话时,他们只是想—

    06-21

  • 今天的计算机还会感染病毒吗?

    今天的计算机还会感染病毒吗?

    最近浏览新闻时,一则新闻引起了我的注意:免费杀毒软件Avast宣布与Windows 11完全兼容。 最新版本Avast 21.9可以更好地保护您在Windows 11上的计算机。 当我看到这个时消息一出,我的思绪飘到了2000年,当时《永恒之蓝》风靡全球。 自此之后,我似乎再也没有听说过全球性的计

    06-21

  • 上海提出5到10年逐步建成枢纽型技术交易场所

    上海提出5到10年逐步建成枢纽型技术交易场所

    上海提出用5至10年时间逐步打造科技交易中心枢纽,成为各大媒体的头条新闻。 近日,上海市人民政府颁布《上海市建设具有全球影响力的科技创新中心“十四五”规划》。 《规划》提出基础研究要逐步取得突破,增强关键核心技术竞争力,加快科技成果转化。 通过5至10年的努力,逐

    06-17

  • 新闻 -聪明投资顾问弘量研究院完成A+轮融资

    新闻 -聪明投资顾问弘量研究院完成A+轮融资

    据投资界9月8日消息,弘量研究院有限公司(以下简称“弘量研究院”)宣布完成A+轮融资,领投机构由中银国际渤海兴旺下属投资机构管理,L.P.基金、阿里巴巴香港创业者基金等投资者也参与投资。    据了解,弘量研究院今年6月获得数百万美元A轮投资,投资机构为阿里巴巴香港创

    06-18

  • 【融资24小时】2022年5月14日至15日投融资事件汇总及详情

    【融资24小时】2022年5月14日至15日投融资事件汇总及详情

    近48小时内,国内市场共发生4起投资披露事件,其中,有1起企业服务(南墙上的法务)、汽车交通1个案例(威驰腾汽车)、本地生活1个案例(云翔宜兴)、农业1个案例(中捷四方)。 详情 企业服务公司法务服务商【南强法务】完成天使轮融资,融资金额1万元。 点击查看汽车及交通

    06-18

  • 深圳大德激光完成数千万元股权融资,星光投资出手

    深圳大德激光完成数千万元股权融资,星光投资出手

    投资界(ID:pedaily)1月25日消息,深圳大德激光技术有限公司(以下简称深圳大德激光) )近日宣布,已成功完成数千万元股权融资。 本次融资由星光投资独家投资,庚鑫资本作为独家投资方,为公司激光技术创新和市场拓展注入新的资金和动力。 深圳大德激光是一家领先的激光技

    06-18

  • IC Insights:中国大陆晶圆产能占全球份额15.3%,即将超越日本

    IC Insights:中国大陆晶圆产能占全球份额15.3%,即将超越日本

    中国大陆晶圆产能近年来增长迅速,但在产能利用率方面仍落后于台湾、韩国和日本单位时间的产出。 7月13日,知名半导体咨询机构ICInsights发布年度全球晶圆月度产能报告(按地理区域)。 下图为截至今年12月全球各地区晶圆产能情况。 ICInsights 按地点而非公司总部划分产能。

    06-08