2024年9月微服务架构详解(如何理解微服务架构)

 更新时间:2024-09-21 08:15:05

  ⑴微服务架构详解(如何理解微服务架构

  ⑵一个“微服务”是在一个语境下、一个背景下才有意义的词,尝试独立去定义或解释它是说不清楚的。

  ⑶微服务架构是一种架构风格(或叫架构模式、以及一组成功架构实践的总称。有时也代表一种架构思想。微服务架构就是:以一组“按领域功能解耦的、彼此之间以轻量级通讯框架交互的、可独立开发/测试/发布/部署/升级和替换的、较小粒度的组件”的方式构建应用的架构模式!

  ⑷基础设施自动化,部署一个应用/单元,和部署个应用/单元,没有显著差别(部署时间、人力等《一组成功实践》

  ⑸微服务架构带来的变化分析

  ⑹微服务架构对于程序员来说是需要掌握的新型技术之一,而其受到追捧的原因就是符合互联网的发展以及其便捷性。今天我们就一起来了解一下,微服务架构带来的变化。

  ⑺微服务架构给IT系统和团队带来了以下显著的变化:

  ⑻基础设施的升级,需要引入虚拟化(如Docker),现存基础设施也需要与之进行适配;

  ⑼系统架构的升级,需要引入服务注册(如Consul),服务间的交互方式也需要与之进行适配;

  ⑽运维平台的升级,建议引入日志收集(如Fluentd),分布式跟踪(如Zipkin)和仪表盘(如Vizceral/Grafana

  ⑾微服务架构的设计原则

  ⑿微服务架构的拆分思路

  ⒀横向拆分:根据业务来拆分

  ⒁纵向拆分:根据层次来拆分

  ⒂Dubbo(RPC)

  ⒃SpringCloud(HTTP)

  ⒄SpringCloud

  ⒅微服务架构的基本概念

  ⒆服务提供者(Provider)

  ⒇服务调用者(Consumer)

  ⒈Go微服务--常见的微服务框架

  ⒉近几年诞生了很多微服务框架,比如JAVA的SpringCloud、Dubbo;Golang的GoKit和GoMicro以及NodeJs的Seneca。几乎每种主流语言都有其对应的微服务框架。Go在微服务框架中有其独特的优势,至于优势在哪,自行google。、GoKit框架这是一个工具包的集合,可以帮助攻城狮构建强大、可靠和可维护的微服务。提供了用于实现系统监控和弹性模式组件的库,例如日志、跟踪、限流、熔断等。基于这个框架的应用程序架构由三个主要的部分组成:传输层:用于网络通信,服务通常使用HTTP或者gRPC等网络传输协议,或者使用NATS等发布订阅系统相互通信。接口层:是服务器和客户端的基本构建块。每个对外提供的接口方法都会定义为一个Endpoint,一遍在服务器和客户端之间进行网络通信,每个端点使用传输层通过HTTP或gRPC等具体通信模式对外提供服务服务成:具体的业务逻辑实现、GoMicro框架这是一个基于Go语言实现的插件化RPC微服务框架。提供了服务发现、负载均衡、同步传输、异步通信以及事件驱动等机制,尝试简化分布式系统之间的通信,让开发者更专注于自身业务逻辑的开发。GoMicro的设计哲学是可插拔的架构理念,提供了可快速构建系统的组件,并且可以根据自身的需求对GoMicro提供的默认实现进行定制。所有插件都可在仓库github./micro/go-plugins中找到。

  ⒊微服务架构,主要是中间层分解,将系统拆分成很多小应用(微服务,微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用,其代表框架有Springcloud、Dubbo等。微服务Microservices之父,马丁.福勒,对微服务大概的概述如下:就目前而言,对于微服务业界并没有一个统一的、标准的定义(Whilethereisnoprecisedefinitionofthisarchitecturalstyle)。但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。六种常见的微服务架构模式:、聚合器微服务设计模式聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和Z轴独立扩展。、代理微服务设计模式这是聚合模式的一个变种,在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作。、链式微服务设计模式这种模式在接收到请求后会产生一个经过合并的响应,在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。、分支微服务设计模式这种模式是聚合器模式的扩展,允许同时调用两个微服务链。、数据共享微服务设计模式自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(monolithicapplication”时,SQL数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,在这种情况下,部分微服务可能会共享缓存和数据库存储。不过,这只有在两个服务之间存在强耦合关系时才可以。对于基于微服务的新建应用程序而言,这是一种反模式。、异步消息传递微服务设计模式虽然REST设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST请求/响应。

  ⒋北大青鸟设计培训:关于微服务架构特点分析

  ⒌随着互联网的不断发展,我们在进行服务器开发组织架构上通常会采用分布式架构方法来进行设计。今天,我们就一起来了解一下,微服务架构都有哪些特点。InfoQ:你近的QConSanFrancisco提出的一个关键前提是,组织如果要从单体大型应用转变为基于微服务的体系结构就得要打破它们的庞大的整体流程。你能再进一步解释一下吗?Rafa

  ⒍微服务架构是一项在云中部署应用和服务的新技术。

  ⒎大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。

  ⒏微服务架构相关介绍:

  ⒐微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API区分开来。

  ⒑在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。

  ⒒微服务不需要像普通服务那样成为一种独立的功能或者独立的资源。定义中称,微服务是需要与业务能力相匹配,这种说法完全正确。不幸的是,仍然意味着,如果能力模型粒度的设计是错误的,那么,我们就必须付出很多代价。

  ⒓如果你阅读了Fowler的整篇文章,你会发现,其中的指导建议是非常实用的。在决定将所有组件组合到一起时,开发人员需要非常确信这些组件都会有所改变,并且规模也会发生变化。服务粒度越粗,就越难以符合规定原则。

  ⒔服务粒度越细,就越能够灵活地降低变化和负载所带来的影响。然而,利弊之间的权衡过程是非常复杂的,我们要在配置和资金模型的基础上考虑到基础设施的成本问题。

您可能感兴趣的文章:

相关文章