【杂谈】关于常见架构的整理,单应用、微服务、SOA、分布式和集群

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
MSE Nacos 企业版免费试用,1600元额度,限量50份
简介: 【杂谈】关于常见架构的整理,单应用、微服务、SOA、分布式和集群

架构相关的知识,不知道大家平时的关注度会有多少?基于我自己来讲的话,之前对此的注意力还是比较少的。


不过这些东西在我看来还是挺重要的,我们做测试的时候不能一头就扎进业务里面,如果能对整个系统架构有一个宏观上的理解,我相信,对于你后面的业务测试、性能测试,或者面试(别问我怎么知道,吃过亏o(╥﹏╥)o),都是会有帮助的。


1268169-20210702090707424-906738042.png


今天先来梳理下架构的演进。


一、单体应用


单体应用,其实就是不管啥功能都写在一个应用里,比如电商系统里常见的用户功能、商品功能、订单功能等等。


现在回想起刚入行的时候,测试的系统就属于这种单体应用。


那是给ZF做的一个“大”项目,名头是真的大,费用应该在大几千万吧,啧啧。


项目虽然“大”,但是工期紧张、人力有限。因为公司属于国企性质,正式坑巨少,我机缘巧合的成为了其中一份子,也是唯一的测试人员。实在需要人的时候,雇佣了外包人员来一起开发和测试。


所以在这种情况下,单体应用的优点就体现出来了:


  • 简单粗暴,所有功能一起打包,直接部署。
  • 本地调试方便,直接启动整个项目,调试都在一个进程内,没有冗长的调用链,方便快速定位bug。
  • 本地函数调用,没有网络调用的开销。
  • 有问题了可以快速回滚,因为只有这一个应用。

但是现在回过头去看,这种单体应用的缺点也很明显:

  • 系统耦合性高,当后面增加的功能越来越多,代码量巨增的时候,之前某个主程脑海中划分好的模块边界可能越来越模糊,导致调用关系混乱。
  • 改一赠二出现越来越多,经常存在开发修改了某个功能,而导致其他的功能有问题。
  • 某个功能有问题,整个一起回滚。
  • 语言单一,不能根据场景选择更合适的语言。比如其中有个模块系统主要是大数据分析,用 python 自然更加合适,因为它有丰富的类库。
  • 系统整体可用性不高,其中某个功能出现问题,很有可能影响到整个系统的运行。
  • 系统不易于拓展部署,比如系统中有一个功能流量很大,顶不住了就要加机器,那么在新机器上还是部署整个应用,不能单独的部署这个大流量的服务,会造成一定的资源浪费。


注意


单体应用,并不是指应用只部署在一台线上服务器,通常会有多台,不然只有一台服务器,真挂了就彻底完犊子了。


1268169-20210702161145304-1843446045.png


二、微服务架构


随着业务的发展,单应用已经不能满足当前需求了,于是就把之前揉在一起的功能根据业务拆出来,成为一个个独立的服务。


1268169-20210702161829190-1264839658.png


优点是什么?


  • 降低了耦合度,模块作用边界清晰,按照业务物理隔离。
  • 技术选型多样化,可以选择最合适的方案
  • 可根据服务单独扩展,其他不需要的依旧保持原样,资源合理化利用。

看起来很完美啊,解决了单体的痛点。但是,新的缺点来了:

  • 涉及到多个服务的改动,会比较复杂,需要多方考虑影响面。上线之前也要确定好上线顺序,确定好每个服务的回滚方案。
  • 出现问题,可能会涉及多个服务的回滚,互相之间会有影响。
  • 从之前的单应用调用,现在变成了多个应用直接的交互,调用链路变长,带来了网络开销,同时也给定位问题增加了难度。
  • 另外,为了让你的应用更可靠,还有考虑其他的异常情况,比如调用失败、因某些问题导致的高频调用,对此还得做些 限流、熔断之类的措施。
  • 还有很多......


三、SOA


提到微服务,还得再提一下SOA。


SOA 是面向服务的架构思想,其实微服务也同样,只是两者的侧重点有些差别:


  • 微服务架构更多是指把系统里的公共服务抽取出来单独运维管理的思想。
  • SOA 架构则是指一种拆分服务并使服务接口访问变得统一的架构思想。

SOA架构中包含了微服务的思想。


四、分布式和集群


这2个只要明确好概念就自然的记住了。


  • 分布式:两种不同的组件合作对外提供服务。其实我们常说的前后端分离就是这样的,前端的js代码在浏览器运行,后端的代码在服务器上运行。那对于我们的系统来说,同样如此。
  • 集群:通常指同一个组件存在多个实例,构成一个逻辑上的整体。比如我有个用户服务,但是我有多个服务器都跑这个用户服务,这就是一个集群。


通常,分布式会包含集群。

目录
打赏
0
0
0
0
8
分享
相关文章
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
482 57
分布式系统架构8:分布式缓存
本文介绍了分布式缓存的理论知识及Redis集群的应用,探讨了AP与CP的区别,Redis作为AP系统具备高性能和高可用性但不保证强一致性。文章还讲解了透明多级缓存(TMC)的概念及其优缺点,并详细分析了memcached和Redis的分布式实现方案。此外,针对缓存穿透、击穿、雪崩和污染等常见问题提供了应对策略,强调了Cache Aside模式在解决数据一致性方面的作用。最后指出,面试中关于缓存的问题多围绕Redis展开,建议深入学习相关知识点。
471 8
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
131 0
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
226 12
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
271 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
领先AI企业经验谈:探究AI分布式推理网络架构实践
当前,AI行业正处于快速发展的关键时期。继DeepSeek大放异彩之后,又一款备受瞩目的AI智能体产品Manus横空出世。Manus具备独立思考、规划和执行复杂任务的能力,其多智能体架构能够自主调用工具。在GAIA基准测试中,Manus的性能超越了OpenAI同层次的大模型,展现出卓越的技术实力。
微服务——MongoDB的应用场景
随着Web2.0时代的到来,传统关系型数据库(如MySQL)在高并发读写、海量数据存储及高可扩展性需求方面逐渐力不从心。而MongoDB凭借其灵活的文档结构和高效性能,在社交、游戏、物流、物联网和视频直播等场景中表现出色。这些场景通常具有数据量大、写入频繁且对事务要求不高的特点。选择MongoDB适合以下情况:应用无需复杂事务与join支持、需求不确定需快速迭代、需处理高QPS读写或超大规模数据存储、追求高可用性和快速水平扩展能力。相比MySQL,MongoDB能以更低的学习、开发和运维成本满足现代应用需求。
120 0
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
1746 37
微服务架构解析:跨越传统架构的技术革命
分布式系统架构6:链路追踪
本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
300 41
分布式系统架构7:本地缓存
这是小卷关于分布式系统架构学习的第10篇文章,主要介绍本地缓存的基础理论。文章分析了引入缓存的利弊,解释了缓存对CPU和I/O压力的缓解作用,并讨论了缓存的吞吐量、命中率、淘汰策略等属性。同时,对比了几种常见的本地缓存工具(如ConcurrentHashMap、Ehcache、Guava Cache和Caffeine),详细介绍了它们的访问控制、淘汰策略及扩展功能。
151 6
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问