拆解交易系统--模块拆解与服务化
用户高速发展阶段如何做好稳定性
围绕做好稳定性可以从几个角度做,而不是简单的监控,压测,告警和容量规划。
第一件事 :设计方案尽量简单
做好架构很重要的一个原则是,大系统做小,精简设计方案。在众多可能的方案中选择出最实用的哪个。
设计一个方案总是很简单的,但是最好的方案是需要时间证明的。
所以一个合适的方案往往需要经过几轮思考,讨论,推翻,再迭代的过程,谋定而后动有很多好处,一方面可以避免那些华而不实的方案和过度设计,还可以提升效率,达成多方共识,防止知识盲点。
详尽而来的方案看似简单,但也往往是最可靠的。
第二件事 :拆分服务,大系统做小
我们之前在流量网关那篇文章里面说了一个通用性很强的架构,如下:
在逻辑层的演进历史中,最开始的逻辑层只是一个服务模块,里面囊括了所有提供给客户端的相关接口和API,甚至还有一个pc的web站点。
脑补了这样一个场景之后,相信你已经对其是否可以快速支持业务快速迭代产生了严重的怀疑。
每个库或是接口的迭代演进都需要修改对应的硬编码,哪怕是改个参数,修改个接口名称都需要发版,严重影响迭代效率。
服务和接口调用错综复杂,出现问题也难以排查,如果在QA阶段出现问题,就有可能影响系统发版上线。
系统耦合在一起,随着业务迭代,某一个局部出现问题都有可能造成整个系统的crash,稳定性无法保障。
为解决以上问题首先想到的就是对服务进行拆解,模块分离术也是我认为比较专业的一个方向,在后续的系列文章中我会在务虚务实,宏观微观多个角度进行深入的阐述。
我们可以简单的将服务按照不同业务进行拆分,或是依重要程度不同拆分。比如网关的核心消息收发逻辑,可以拆分为:消息同步,文本消息,语音消息,图片视频文件系统服务。
每个服务可以独立开发,测试,部署上线,经过拆分和演进之后,网关后台对应数百个微服务了。
拆解交易系统--模块拆解与服务化相关推荐
- Postgresql源码(82)SPI模块拆解分析一:执行简单SQL获取结果
相关 <Postgresql源码(76)执行器专用元组格式TupleTableSlot> <Postgresql源码(82)SPI模块拆解分析一:执行简单SQL获取结果> &l ...
- 猿创征文 | 一文看懂!无人机集群半物理仿真系统的7大模块拆解,超详细!
在无人机集群研究领域,仿真验证技术可以高效且低廉的对算法理论,极大的缩短研制周期,降低研制成本.全数字仿真技术和半物理仿真技术是仿真验证技术的两种主要实现方式,本篇带你快速了解无人机集群半物理仿真系统 ...
- 小度智能音响拆解 芯片_拆解报告:小度人工智能音箱1S
智能家居其实离我们并不遥远,我们几乎都在使用百度,百度的AI操作系统DuerOS大家肯定不会陌生,内置于电视.手机.汽车的DuerOS已经为很多用户带来了"动口不动手"的智能体验. ...
- 拆解交易系统--性能优化,安全加固与弹性扩缩容
点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 前几篇文章我们拆解了交易系统架构层次的设计方案,对于代码细节我们讨论很很少,今天基于几个方面简短的介绍一下,未来有时间可以针 ...
- wifi协议栈_一文读懂米家部分智能硬件:米家Zigbee及WiFi模块拆解分析
拆解开始 左到右依次是:门磁传感器,温湿度传感器,无线开关,人体感应,小爱迷你,空气净化器,网关,吸顶灯 智能家居常见的几种无线连接方式,WIFI,蓝牙,zigbee,射频315/433. 1:射频3 ...
- 全球主流智能手环传感器模块拆解大揭秘
如果说前几年消费电子市场的热点是是功能手机向智能机的转换过渡,那么近几年则逐渐偏移到智能设备的便携化.智能化.近年来,国内外豪杰纷纷聚 焦智能硬件,Google Glass问世,Galaxy Gear ...
- 拆解交易系统--服务稳定性
交易系统承担了整个交易链路上的所有交易相关的流量,同时交易系统上时常会组织一些营销,大促相关的活动,所以需要面对着因大促造成的瞬时流量激增的情况. 所以如何做好服务拆分后的交易系统稳定性也就尤为重要. ...
- 拆解交易系统--服务高可用
系统稳定性和系统可用性是对在线系统很重要的两个评价指标,也是最重要的系统能力,系统可用性或者成熟度不足,将会造成重大的事故或者经济损失. 系统故障在研发团队一般的生命周期如下: 原则按照事前事中事后来 ...
- 拆解交易系统--异地多活
点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 很多产品发展到一定规模之后,可能会走出国门,技术架构要做到国际化.或者基于高可用 / 高性能的需求,需要做异地多活. 多数据 ...
最新文章
- postgres的initdb解析——从一次插件升级失败说起
- 关于浮点数计算时的精度问题
- 如何知道网站的IP,然后利用IP登陆网站?
- SICP学习笔记(1.1.4~1.1.5)
- boost::hana::is_embedded用法的测试程序
- 我们应该搞清楚分支预测
- TCP/IP,HTTP,Socket的区别与联系
- LightOJ 1038-Race to 1 Again(概率dp)
- android反编译干嘛,安卓反编译流程大解析 看完你就懂了!
- 水果销售管理系统课程设计报告
- 一步一步教你写股票走势图——分时图四(高亮联动)
- 绿联蓝牙发射器 linux,绿联蓝牙发射器 Switch蓝牙耳机完美解决方案
- 磁盘阵列服务器上创建虚拟机,UNRAID下虚拟机搭建单机游戏教程
- 视频测试软件+视频测试硬件=视频质量测试解决方法+视频测试的重要性
- ​​如何搭建自己的魔兽世界服务器
- 织梦建站:织梦CMS整站源码通用安装教程(图文教程)
- spark 无法读取hive 3.x的表数据
- Freertos中两个delay函数
- Arduino学习之二——舵机控制
- PS3111开卡量产成功教程,PS3111+ASM235CM双头板子体验,DIY固态U盘小记+PS3111开卡工具
热门文章
- 0x14.基础数据结构 — hash表与字符串hash
- 【算法】DFS 刷题总结
- 入职地府后我成了人生赢家_【200811推文】闪闪而恋作者:钦点废柴+入职地府后我成了人生赢家作者:有只胖头鱼...
- 如何设计ER图(弱实体集)
- win7 php mysql扩展名_Win7 iis php mysql 开发环境配置(详细)
- xshell如何登陆堡垒机_Xshell连接有跳板机(堡垒机)的服务器
- matlab噪声倍频带声压级,近海风电场水下打桩噪声传播特性
- 树形dp ——树的重心
- 在centos7上配置java环境
- nutz 结合QueryResult,Record 自定义分页查询,不构建pojo 整合