微服务架构带来的分布式单体,更好还是更坏,一念之间
前言
![](/assets/blank.gif)
微服务架构其实是为了服务可以独立的开发、独立的部署,快速迭代,并且技术多样性。
然而我们经常在开发微服务的时候没有弄清楚微服务的边界,导致了一个更大的坑,由单体架构
拆分成了微服务单体架构
,带来了更大的灾难:开发单体的痛苦一个都没少,面向服务的好处一点没捞着。
如果不解决这些问题,随着服务生态系统的增长,情况越来越糟。
一、好的微服务架构
![](/assets/blank.gif)
- 职责单一,高内聚低耦合
- 可以独立开发、独立的部署、独立扩缩容
- 有自己的数据存储,独立的数据库、缓存、消息队列等资源
- 加快迭代的速度
二、分布式单体架构
![](/assets/blank.gif)
虽然微服务架构很好,很高级,但是开发的过程经常因为临时紧急需求、业务开发人员不懂抽象等原因最终拆成了分布式单体架构。
这个可能有产品的原因,也可能有开发的原因。如果真的要追源头,大部分还是开发人员的抽象能力不行,而抽象能力这东西就像算法一样,是一种内功,无法速成
耦合示例
![](/assets/blank.gif)
左:服务A调用服务B,服务B调用服务C,然后A再调用服务C获取结果
右:服务A调用服务B,服务B依赖服务C,而服务C又依赖服务A。依赖产生了环
这样的结构最终会变成分布式单体,产生如下问题:
- 同时更新两个服务,不知道先更新哪个,因为相互依赖。
- 一个简单的逻辑可能会跨多个服务。如果出了问题,只能由对多个服务都了解的人来诊断问题
糟糕的本地多服务开发模式
本地运行大部分的基础设施,极有可能遇到“无法运行”的问题
- 开发人员不知道如何运行所有依赖的服务
- 开发人员的配置撑不起来运行的服务
这是明显的单体架构的开发模式,本地需要跑所有的东西,拆成了微服务架构,还是需要本地跑所有的东西
糟糕的调试和测试策略
- 跨网络难以诊断。平常的开发只要简单的下断点就可以了,变成了分布式单体后诊断非常困难,各种打开项目看日志,下断点
- 多个服务之间数据同步有问题,准备数据需要花更多的时间和精力
- 不正确的配置,连接超时、读写超时、工作进程数量、伸缩配置等等。
- 难以模拟系统交互(消息代理、异步队列等)
微服务架构的好处之一就是为了加快迭代速度,如果浪费了大量的精力在本地调试和测试上,已经失去了微服务的意义
高成本补偿措施
- 大力投资基础设施和测试,以确保数据正确同步
- 做大量可见性和异常检测的工作,确保在同步异常和报警时,能及时诊断和解决。
- 给开发人员培训,使他们不会意外引入会导致数据同步问题的更改
- 在多个服务之间同步足够多的数据后,开发人员一定会犯错(墨非定律)
三、解决思路
![](/assets/blank.gif)
当前的架构已经出了问题,首要的应该是分析当前系统的维护成本、修改成本和新系统所节省的成本之间存在的关系。
这是一个难点,我们应该去关注一些核心的指标,例如
关注核心指标
- 交付时间
- Bug数量
- 宕机次数
- 受影响用户数量
制定迁移计划
如果系统没有设计好,已经出现了这样的数据耦合架构, 制定架构调整计划,逐步将现有架构
过度到目标架构
- 逐步合并耦合的服务
- 逐步合并耦合的数据库
- 大而全的测试,例如黑盒、CICD自动化测试、单元测试、压力测试等。
http://www.taodudu.cc/news/show-3252860.html
相关文章:
- 成败不在于公有云,而在GE一念之间
- 一念逍遥服务器维护中,《一念逍遥》更新公告2月26日 2.26更新什么内容
- 成功在一念之间
- 一念之间
- 考研日记-7.28 一念之间
- 主板没有rgb接口怎么接灯_赚翻亏钱一念之间 RGB接口让颜值突破
- 一念逍遥显示服务器列表失败,《一念逍遥》进不去解决方法
- 一念逍遥一直说服务器维护,一念逍遥bug修复 一念逍遥最新更新计划
- 一念之间,我想改变
- 思想“一念之间”,读书笔记
- 心态决定一切 成败一念之间
- 起点中文网小说文本分类项目【简易上手的nlp实战项目】
- python request 爬虫爬取起点中文网小说
- python 爬虫抓取网页数据导出excel_Python爬虫|爬取起点中文网小说信息保存到Excel...
- csr驱动程序linux版,csr蓝牙适配器驱动程序下载_csr蓝牙适配器驱动程序官方下载_3DM软件...
- 计算机术语csr是什么,CSR是什么意思 为何CSR越来越重要
- ca证书 csr_详解CSR和CER的关系
- csr_matrix和csc_matrix简析
- [https+certificates] 在IIS7上创建证书CSR申请
- Android 生成PKCS10请求(csr)
- 证书关于 pem der cer crt csr pfx 的区别
- csr_matrix矩阵压缩
- [CSR]在CSR8675的ADK调试问题总结
- Openssl生成CSR文件方法
- CSR8675 使用串口 UART 收发功能
- 怎样生成CSR证书请求文件
- ca证书 csr_SSL证书请求文件(CSR)生成指南
- 台式计算机找不到蓝牙发射器,台式机没有蓝牙功能,怎么连接蓝牙设备呢?
- python 的csr_python稀疏矩阵(CSR型)操作
- csr 矩阵 转为 tensor
微服务架构带来的分布式单体,更好还是更坏,一念之间相关推荐
- 微服务架构会和分布式单体架构高度重合吗
在最近的Microservices Practitioner Summit峰会上,来自Facebook的工程师Ben Christensen就目前正在普遍快速增长的分布式系统与二进制依赖关系的一种反面 ...
- Java架构师-微服务:微服务架构【单体部署 --改造--> 微服务架构】【分布式:分散压力;微服务:分散能力】【RESTFul+Docker+K8S、SpringCloud】
一.微服务概述 微服务架构是团队面对互联网产品爆发式增长的最优选择,要解决的是快速迭代.高可靠和高可用等问题,把复杂度很高的产品拆分成一些较小的模块,并遵循康威定律,每一个模块用5-9个小团队来维护, ...
- 如何实现微服务架构下的分布式事务?
摘要:微服务架构下,如何克服分布式事务难题? 什么是微服务?微服务有什么优势和困难? 什么是微服务架构? 简而言之,微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不 ...
- 【华为云技术分享】HDC.Cloud|华为云Stack大咖说:如何实现微服务架构下的分布式事务
离华为开发者大会2020(Cloud)开幕仅剩一月左右,让开发者们和华为大咖近距离沟通的扫地僧早午餐会也已经开放预约.但是,有些小伙伴们已经等不及到二月了,别急,福利这不就来了吗!华为云Stack混合 ...
- GTS来了!阿里微服务架构下的分布式事务解决方案
阿里妹导读:分布式事务已经成为微服务落地最大的阻碍,也是非常具有挑战性的一个技术难题. 为此,今天我们邀请阿里高级技术专家于皋,和大家深入探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿 ...
- 改来改去把微服务改成了分布式单体
昨晚睡前,撸了几个群聊的聊天记录.发现一个很有意思的名词"分布式单体",顺藤摸瓜翻了一下聊天记录,大致内容就是某公司在做微服务改造,但改成了四不像,形式上像微服务,本质上依然是单体 ...
- 与我一起学习微服务架构设计模式1—逃离单体地狱
单体地狱 单体架构的好处: 应用的开发很简单 易于对应用程序进行大规模的更改 测试相对简单直观 部署简单明了 横向扩展不费吹灰之力 什么是单体地狱: 过度的复杂性 系统过于庞大.复杂,任何一个开发者很 ...
- ABP vNext微服务架构详细教程——分布式权限框架(上)
1 简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...
- 微服务架构spring cloud - 分布式配置中心config(七)
1.什么是spring-cloud-config 用来为分布式系统中的基础设施和微服务应用提供集体化的外部配置支持,它分为服务端和客户端.服务端也就是config服务,客户端就是其他的微服务. spr ...
最新文章
- SSH的各个配置文件:
- python 多进程multiprocessing进程池pool tensorflow-yolov3 报错 MemoryError
- 告别ASP.NET操作EXCEL的烦恼
- MFC的来龙去脉-----消息处理,找处理函数
- 配置三台服务器组成的ELK集群(二)
- C#使用NPOI进行word的读写
- 安装了一次Linux,哈哈
- 那些在家啃书自学算法的人,最后都找到工作了吗?
- Unity Text 插入超链接
- 初中计算机考试成绩会纳入吗,【政策】北京海淀将信息技术纳入初中学业水平测试,考试不通过将不予毕业...
- python用什么编译器-python应选什么编译工具
- html论坛注册代码,Discuz!论坛代码大全和HTML代码大全 | 穆小刚营销博客
- 通过软考高项的艰辛历程
- 如何使用TCPA300电流放大器和电流探头进行电流测试
- 如何用聚类模型(k-means)做数据分析?
- (附源码)Springboot酒店会员点餐系统 毕业设计 072005
- opencv python 实现图片添加带透明的 logo
- 部分安卓机型无法打开公众号/http链接,部分安卓机型无法打开公众号/http链接白屏
- windows10和linux流畅,《古墓丽影10:崛起》Linux平台与Windows平台流畅度对比
- 程序员的算法趣题Q09: 落单的男女
热门文章
- 怎样将样式引入到html5,将
- python web框架简介Bottle Flask Tornado
- 计算机输入设备输出设备
- Tobii5的反复无常
- java设置打印机默认纸张_更改打印机默认纸张尺寸 (Change printer default paper size)...
- 注意力经济是什么?NFT 在其中发挥怎样的作用?
- 诺基亚(Nokia)推出了其近20年来的首款电脑产品
- 产品健康度模型(3) 指标关联性分析
- 解决:ValueError: (‘Unrecognized keyword arguments:‘, dict_keys([‘ragged‘]))
- 三大逻辑推理。逻辑推理的基本规则