深入浅出 -- 系统架构之微服务架构的新挑战

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

尽管微服务架构有着高度独立的软件模块、单一的业务职责、可灵活调整的技术栈等优势,但也不能忽略它所带来的弊端。本篇文章,我们从网络、性能、运维、组织架构和集成测试五个方面来聊一下设计微服务架构需要考虑哪些问题,对设计有哪些挑战呢?

1、跨进程通信带来的问题

前面我们聊过了,以往的单体应用,系统是在单机中进行进程通信,通信的稳定性相当好,只要服务器不宕机,基本上不会出现通信中断或异常的问题(超时不计入)。但是将单体应用打散为分布式架构后,系统的通信方式改变为了进程间通信,往往还有可能伴随着跨设备的网络访问,那么架构师在设计的时候,就必须要考虑应用的上下游系统因网络因素导致无法通信的问题。要假设网络是不可靠的(就相当于是前端页面不应该相信用户的一切输入,该做的数据校验一定要做),并对网络异常情况作出符合预期的异常处理。

以支付场景为例:用户支付成功后,系统自动调用短信发送服务给用户发送支付成功的短信,此时就需要考虑到如果短信发送不成功需要做什么异常处理。是标记未发送后重试,还是通过App进行消息提示,并将异常信息入库提醒运维检查短信服务运行情况。

单体应用调用链路:

深入浅出 -- 系统架构之微服务架构的新挑战,架构,系统架构,微服务

微服务架构下的调用链路:

深入浅出 -- 系统架构之微服务架构的新挑战,架构,系统架构,微服务

2、响应延迟带来的问题

与单体架构进程内通行相比,微服务架构的跨进程、跨网络通信在网络传输与消息序列化带来的延迟是不可忽略的。尤其是在五个以上的微服务间消息调用时,网络延迟对于实时系统的影响是很大的。

以红海行动电影中的1130近防炮的弹道计算为例:需要通过雷达监测的敌方炮弹的射速、方位、风速等因素计算近防炮在何时、哪些方位发射子弹进行拦截。在这种情况下,使用微服务架构带来的延迟,可能导致炮弹都打到身上了,弹道计算数据还没传过来。显然这类系统采用分布式设计就不合适。 以上例子纯属军事外行瞎猜,只是为了举例,说的不对的还请不要介意。。

3、运维方面的问题

之前的单体架构,运维在部署系统时,直接将系统jar或war包丢到容器里启动就行了,就算是没有自动化部署,工作量也不是很大。同时,以前的系统升级都是以周或月为单位,就算是人肉运维也都可以应付得过来。而对于微服务而言,每个服务都是可独立运行、独立部署、独立维护的业务单元。再加上市场的需求越来越高,运维人员每天面对成百上千台服务器发布几十次都是有可能的,人肉运维和部署显然已经无法满足互联网的快速变化。

深入浅出 -- 系统架构之微服务架构的新挑战,架构,系统架构,微服务

自动化运维架构图

4、组织架构带来的问题

微服务架构带来的不仅是软件架构的改变,也是公司组织架构的改变。

单体架构下,公司以职能划分部门(项目部、产品部、设计部、开发部、测试部、运维部)进行独立管理考核,技术人员负责其中的某几个模块开发即可,可由统一的项目经理、产品经理、UI设计师进行支撑。

微服务架构下,是以业务模块进行团队划分,每个团队是内聚的,要求可以完成从调研到发版的全流程,尽量减少对外界的依赖。如何将之前的职能团队调整为按业务划分的研发团队,同样是对组织架构的巨大挑战。毕竟人的思想比架构更难改变。

深入浅出 -- 系统架构之微服务架构的新挑战,架构,系统架构,微服务

单体架构下团队配置

深入浅出 -- 系统架构之微服务架构的新挑战,架构,系统架构,微服务

微服务架构下团队配置

5、集成测试变得异常艰难

传统的单体架构集成测试是将不同的模块按业务流程进行组合,在进程内验证每种可能性下模块间的协作是否符合预期即可。对于微服务而言,系统被拆解成独立的运行单元,服务间采用接口进行通信。要获取准确的结果,必须搭建完整的微服务环境。同时,跨网络通信带来的网络延迟、超时、带宽、数据量等因素都将影响最终结果,测试结果容易产生偏差。

所以,微服务架构并不是没有缺点,在一定程度上,可能造成的影响比单体的影响大很多。那么我们是难道就不进行改造吗?有困难就退缩不是一个优秀架构师该有的品质。那有什么可借鉴的经验吗?当然有,我们以后再下篇接着聊!文章来源地址https://www.toymoban.com/news/detail-845788.html

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月09日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包