微服务设计介绍

发布时间: 2024-10-19 03:34:45  来源:天博app 

  

微服务设计介绍

  AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日FConAICon大会联诀来袭、干货翻倍!

  长久以来,我们从始至终在构建着一体化的软件,后来转向了SOA,不过依然有一定的问题,现在我们又遇到了微服务。近日,Russ Miles在使用 Java 平台设计与构建抗脆弱的微服务介绍中谈到了软件开发的现状。

  Russ 比较了大圆石、岩石与鹅卵石,其中像大圆石这样的大块石料是很难变化或是移动的。SOA 则类似于岩石,依然难以移动,不足以满足我们的期望。微服务类似于鹅卵石,是很容易移动的。

  Russ 认为抗脆弱说明我们需要对系统来进行分解;我们不仅要拥抱变化,还要依靠变化而成长,这才才会慢慢的变好。若想达成这一点,首要的就是简单性,通过很多小东西来完成一件事,实现一个目标。在向微服务转变时,设计简单的组件与系统是关键。我们要聚焦在组件的演化上,以及如何构建系统才能支持演化与改变。

  Russ 将微服务定义为单一目的的服务,它只做一件事,并且粒度划分良好,支持系统的演化以及你认为在运行期与设计期重要的东西。主要的焦点在于要能构建适应性良好的软件,只有粒度足够细,能够支持架构变化的差异性才能做到。

  微服务是以正确的方式做 SOA 的事情么?Russ 认为 SOA 的一个问题就在于相对于 UNIX 管道来说这个术语包含了太多的内容。他认为管道是很重要的,是驱动微服务创建的主要动力。在 SOA 中,特别是按照层次组织的服务,我们丧失了数据流,因为这是在服务内部编排的。

  Russ 听到的一个很大的抱怨就是将一个系统区别划分为多个小服务时遇到的管理与监控问题。他给出的建议是无论成功抑或失败都不要构建发送消息的服务,而是让其发送“可执行的信息”,服务不仅应该告知自身的问题,还要提供解决方案。

  近期,Wes Reisz针对“微服务的影响”议题组织了一场InfoQ圆桌直播。该直播的参与者包括:Nginx解决方案高级架构师Leif Beaton、AWS和无服务器独立顾问Yan Cui 和Skyscanner首席工程师Nicky Wrightson 。大家一同探讨了运维的复杂性,以及微服务模型的替代方案。

  对于构建系统来说,模块化是至关重要的,但实现模块化需要应对一些反模块化的做法。

  在开发微服务,遗留系统改造、架构治理、企业架构、研发效能提升、架构师培养等很多方面,DDD都有用武之地。

  在网上招致批评的最快方法就是撰写有关微服务的文章。每个人都有自己的观点。不管你是支持还是批判微服务。

  2021年,像 OOP(面向对象的程序设计)这样上世纪 60 年代的范式严重过时了吗?

  微服务是一种软件开发的组织和架构方法,它可以加快软件交付周期、增强创新和自主性,提高软件的可维护性和可伸缩、可扩展性,同时也提高了企业开发和发布软件服务的能力。

  在面向数据的架构中,单体数据存储是系统中状态的唯一来源,并由松耦合无状态的微服务对其进行操作。

  本篇探讨微服务架构中服务交互的重要性,分布式系统的典型挑战,以及像服务编排和服务网格这样的先进架构模式如何让我们克服这些挑战。