深入浅出 -- 系统架构之微服务标准组件及职责

这篇具有很好参考价值的文章主要介绍了深入浅出 -- 系统架构之微服务标准组件及职责。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们来认识一下微服务架构在Java体系中依托哪些组件实现的。

相对于单体架构的简单粗暴,微服务的核心是将应用打散,形成多个独立提供的微服务,虽然从管理与逻辑上更符合业务需要。但微服务架构也带来了很多急需解决的核心问题:

1、如何发现新节点以及检查各节点的运行状态?

2、如何发现服务及负载均衡如何实现?

3、服务间如何进行消息通信?

4、如何对使用者暴露服务API?

5、如何集中管理各节点配置文件?

6、如何收集各节点日志并统一管理?

7、如何直观的了解各节点间的调用链路?

8、如何对系统进行链路保护,避免服务雪崩?

可以发现,以上的各个问题,不是针对某种语言或某种技术的,任何要构建微服务架构的企业都需要面对这些问题,要么公司内部逐个研究各个问题的解决办法,要么就将已有的多种技术整合形成整体解决方案。好在经过互联网行业的多年发展,业内对于上述问题基本都有了标准的解决方案,下图清晰的说明了微服务架构需要的标准组件。

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

下面我们来逐个了解各个组件的职责:

1、注册中心(Service Registry)

注册中心是微服务架构最核心的组件。它起到的作用是对新节点的注册与状态维护,通过注册中心可解决上述第1个问题(1、如何发现新节点以及检查各节点的运行状态? )。

微服务节点在启动时会将自己的服务名称、IP、端口等信息在注册中心登记,注册中心会定时检查该节点的运行状态。注册中心通常会采用心跳机制最大程度保证已登记过的服务节点都是可用的

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

2、负载均衡(Load Balance)

负载均衡解决了第2个问题( 2、如何发现服务及负载均衡如何实现? )。通常微服务在互相调用时,并不是直接通过IP、端口进行访问调用。而是先通过服务名在注册中心查询该服务拥有哪些节点,注册中心将该服务可用节点列表返回给服务调用者,这个过程叫服务发现,因服务高可用的要求,服务调用者会接收到多个节点,必须要从中进行选择。因此服务调用者一端必须内置负载均衡器,通过负载均衡策略选择合适的节点发起实质性的通信请求。

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

3、服务通信(Communication)

服务通信组件解决了问题3(3、服务间如何进行消息通信? )。服务间通信采用轻量级协议,通常是HTTP RESTful风格。但因为RESTful风格过于灵活,必须加以约束,通常应用时对其封装。例如在SpringCloud中就提供了Feign和RestTemplate两种技术屏蔽底层的实现细节,所有开发者都是基于封装后统一的SDK进行开发,有利于团队间的相互合作。

4、API服务网关(API Gateway)

服务网关主要是解决问题4(4、如何对使用者暴露服务API? ),对于最终调用方来说,微服务的通信与各种实现细节应该是透明的,调用者只需关注他要使用的 API 接口即可。因此微服务架构引入的服务网关控制用户的访问权限。服务网关是外部环境访问内部微服务的唯一途径,在这个基础上还可以扩展出其他功能,例如:用户认证与授权、容错限流、动态路由、A/B测试、灰度发布等。

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

微服务API网关

5、配置中心(Config Management)

配置中心主要解决了问题5(5、如何集中管理各节点配置文件? ),在微服务架构下,所有的微服务节点都包含自己的各种配置文件,如jdbc配置、自定义配置、环境配置、运行参数配置等。要知道有的微服务可能可能有几十个节点,如果将这些配置文件分散存储在节点上,发生配置更改就需要逐个节点调整,将给运维人员带来巨大的压力。配置中心便由此而生,通过部署配置中心服务器,将各节点配置文件从服务中剥离,集中转存到配置中心。一般配置中心都有UI界面,方便实现大规模集群配置调整。

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

重复的配置文件

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

配置中心集中管理配置文件

6、集中式日志管理(Centralized Logging)

集中式日志主要是解决了问题6(6、如何收集各节点日志并统一管理? )。微服务架构默认将应用日志分别保存在部署节点上,当需要对日志数据和操作数据进行数据分析和数据统计时,必须收集所有节点的日志数据。那么怎么高效收集所有节点的日志数据呢?业内常见的方案有ELK、EFK。通过搭建独立的日志收集系统,定时抓取各节点增量日志形成有效的统计报表,为统计和分析提供数据支撑。

7、分布式链路追踪(Distributed Tracing)

很不舒服链路追踪解决了问题7(7、如何直观的了解各节点间的调用链路? )。系统中一个复杂的业务流程,可能会出现连续调用多个微服务,我们需要了解完整的业务逻辑涉及的每个微服务的运行状态,通过可视化链路图展现,可以帮助开发人员快速分析系统瓶颈及出错的服务。

深入浅出 -- 系统架构之微服务标准组件及职责,系统架构,微服务,架构

服务调用链路图

8、服务保护(Service Protection)

服务保护主要是解决了问题8(8、如何对系统进行链路保护,避免服务雪崩? )。在业务运行时,微服务间互相调用支撑,如果某个微服务出现高延迟导致线程池满载,或是业务处理失败。这里就需要引入服务保护组件来实现高延迟服务的快速降级,避免系统崩溃。

以上就是微服务架构包含的组件以及各个组件在架构中承担的职责。下篇文章我们来聊一下:在Java中如何实现微服务架构的。文章来源地址https://www.toymoban.com/news/detail-848444.html

到了这里,关于深入浅出 -- 系统架构之微服务标准组件及职责的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入浅出推荐系统(一):推荐系统基本架构

    过去八九年在广告、生活服务、电商等领域从事大数据及推荐系统相关工作,近来打算对过去的工作做一个系统性的梳理。一方面帮自己查缺补漏、进行更深入的学习;另一方面也希望能通过博客结交同好,增进交流。 这一博客系列以介绍推荐系统为主,会少量涉及广告系统

    2023年04月26日
    浏览(43)
  • 深入浅出 -- 系统架构之负载均衡Nginx反向代理

    一、Nginx反向代理-负载均衡  首先通过 SpringBoot+Freemarker 快速搭建一个 WEB 项目:springboot-web-nginx,然后在该项目中,创建一个 IndexNginxController.java 文件,逻辑如下: 在该 Controller 类中,存在一个成员变量: port ,它的值即是从 application.properties 配置文件中获取 server.port 值。

    2024年04月12日
    浏览(46)
  • 深入浅出 -- 系统架构之Keepalived搭建双机热备

    Keepalived+重启脚本+双机热备搭建 ①首先创建一个对应的目录并下载 keepalived 安装包(提取码:s6aq)到 Linux 中并解压: ②进入解压后的 keepalived 目录并构建安装环境,然后编译并安装: ③进入安装目录的 /soft/keepalived/etc/keepalived/ 并编辑配置文件: ④编辑主机的 keepalived.conf

    2024年04月11日
    浏览(33)
  • 深入浅出 -- 系统架构之负载均衡Nginx的性能优化

       到这里文章的篇幅较长了,最后再来聊一下关于 Nginx 的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴

    2024年04月14日
    浏览(39)
  • 深入浅出 -- 系统架构之负载均衡Nginx跨域配置

       跨域问题在之前的单体架构开发中,其实是比较少见的问题,除非是需要接入第三方 SDK 时,才需要处理此问题。但随着现在前后端分离、分布式架构的流行,跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因    产生跨域问题的主要原因就

    2024年04月10日
    浏览(42)
  • 深入浅出 -- 系统架构之负载均衡Nginx实现高可用

       线上如果采用单个节点的方式部署 Nginx ,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于 Nginx 作为整个系统的网关层接入外部流量,所以一旦 Nginx 宕机,最终就会导致整

    2024年04月15日
    浏览(36)
  • 深入浅出 -- 系统架构之负载均衡Nginx大文件传输配置

       在某些业务场景中需要传输一些大文件,但大文件传输时往往都会会出现一些 Bug ,比如文件超出限制、文件传输过程中请求超时等,那么此时就可以在 Nginx 稍微做一些配置,先来了解一些关于大文件传输时可能会用的配置项: 配置项 释义 client_max_body_size 设置请求体允

    2024年04月12日
    浏览(60)
  • 深入浅出 -- 系统架构之分布式多形态的存储型集群

    在上阶段,我们简单聊了下集群的基本知识,以及快速过了一下逻辑处理型集群的内容,下面重点来看看存储型集群,毕竟这块才是重头戏,集群的形态在其中有着多种多样的变化。 逻辑处理型的应用,部署集群架构是为了解决单点故障、获得更高的吞吐量,集群内各节点之

    2024年04月10日
    浏览(45)
  • 深入浅出 -- 系统架构之分布式CAP理论和BASE理论

    科技进步离不开理论支撑,而当下大行其道的分布式架构,透过繁荣昌盛表象,底层同样离不开诸多分布式理论撑持。当然,相信诸位在学习分布式相关技术时,必然学到过两个分布式领域中的基础理论,即: CAP与BASE理论 。 当一个从逻辑上被视为整体的系统,拆散到多个节

    2024年04月13日
    浏览(67)
  • 深入浅出MySQL - 架构与执行

    Photo by Merilin Kirsika Tedder from Pexels MySQL作为一个流行的开源关系型数据库管理系统,它可以运行在多种平台上,支持多种存储引擎,提供了灵活的数据操作和管理功能。MySQL的逻辑架构可以分为三层: 连接层 、 服务层 和 引擎层 ,下方是网上流传度很广的一张架构图。 需要注

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包