网站首页 > 博客文章 正文
请点击【关注】获取更多互联网和技术干货,头条号IT徐胖子原创本文请勿转载,感谢支持
我认为技术之于业务的意义在于:技术可以实现业务的需求,技术可以丰富业务的手段,技术可以扩展业务的边界。
从0到1构建一个业务系统是一个很具有挑战性的工作,综合能力要求会比较高。本文来谈一谈从0到1构建一个业务系统基本方法论,欢迎大家多多交流。
1 关键步骤
(1) 技术选型
不刻意追求新技术,选用稳定的并且经过线上考验的技术和框架。
(2) 四色建模分析
四色建模分析法是DDD实践常用方法,有利于将复杂问题拆解,请参看我的头条《四色建模法分析复杂问题》这篇文章。
(3) 绘制用例图
不同角色对应着不同的行为和权限,需要在用例图明确和体现。
(4) 设计领域模型
设计清晰的领域模型对开发以及后续维护至关重要。系统有多少个模块,每个模块之间是怎么交互的,是同步还是异步,走消息还是直接调用。每个工程师可以认领自己熟悉的模块,后续分模块进行开发。
(5) 设计交互流程
系统间的模块是如何交互的?系统和其它系统间如何交互?这些问题需要在这个阶段得到详细而具体的回答。比较好的方法是绘制时序图,用一个典型的业务场景为例,描绘出整个系统交互的主要流程。
(6) 设计数据表
数据表设计有以下维度需要思考:基础数据字段、核心业务字段、数据表索引、数据表体量、是否需要分库分表。
(7) 新建工程模块
现在架构师就要创建工程和模块了。原则上是一个领域一个工程,按照领域级别分别部署。当然项目刚开始为了快速迭代可以先合并几个领域到一个工程,等到体量大了再拆分。
(8) 明确代码规约
异常是抛出还是捕获,接口的返回值需要用Result<?>包装,监控、告警、流控由切面统一处理等,这样系统会具有很好的维护性。
(9) 进入开发阶段
此时开发的基础条件都已具备,每个模块的负责人按照模块进行开发。
(10) 进入测试阶段
开发人员单元测试要完备,测试人员先按模块进行测试,最后全链路测试。
(11) 进入发布阶段
明确各模块依赖关系,明确发布顺序,确定回滚方案。要注意RPC服务循环依赖的问题。
2 核心指标
完成上述工作,功能相关的工作就完成了。当然一个系统仅仅完成功能是远远不够的,还有以下几个核心指标需要关注。
(1) 机器指标
架构师只关注功能层面是不够的,因为有些功能看似正常,但是在运行一段时间会暴露严重问题。例如刚发布上去功能完全正常,但运行一段时间后响应速度显著下降,原因是有开发人员在代码中随意声明线程,频繁创建线程达到了Linux支持最大线程数,导致整个应用无法接收新请求。
所以架构师在线上还应该关注机器指标,例如线程数,CPU利用率,内存,磁盘空间,磁盘IO,网络流量,负载情况,GC情况等等。当系统运行一段时间后出现耗时莫名增加,超时报警异常增多,但并没有发布或升级的操作,就需要立刻分析机器指标。
(2) 性能指标
在客户端层,代理层,WEB层,服务端层,数据层都有着自己的性能优化的手段。简单介绍一下服务层和数据层相关常见的优化方案。常见的做法是在服务层和数据层之间加一个缓存层,可以是本地缓存也可以是分布式缓存,原则就是将数据放在离用户更近的地方,以空间换时间。技术架构上可以抽出一层缓存的工具框架包,在框架中统一提供例如缓存击穿,分布式锁等解决方案。
(3) 监控指标
没有监控报警的业务系统非常不安全,工程师必须对系统监控报警敏感且及时响应。监控可以从以下的几个方面去思考。
(a) 业务监控
业务异常:单位时间出现X次需要告警
延时监控:某状态单位时间内是否变化
数据量监控:单位时间数据量是否正常
(b) 系统监控
系统异常是不允许出现的异常,例如空指针,数据库异常只要出现就立刻需要告警
(4) 安全指标
系统的安全性是系统的根本,要从系统安全和业务安全两个方向去考虑。下列指标只是提供思路,还有很多指标可以补充。
(a) 业务安全:幂等性是否完备、补偿机制是否完备、超时是失败还是重试、分布式一致性是否实现
(b) 系统安全:是否鉴权、是否流控、是否高频检测、是否数据加密、是否随意声明线程
3 用好大数据
大数据技术和框架层出不穷,我们可以选择一些来扩展系统的功能,减轻系统的压力。例如利用Hive进行离线数据分析,ES进行实时数据分析和数据检索,HBase存储行为轨迹数据等,达到减轻数据库压力,降低系统风险的目的。大数据平台可以生成报表,为数据化运营提供保障。
4 文章总结
从0到1构建业务系统需要有一定的架构思维和能力,这种能力也只有在不断实践,踩坑和思考中才可以形成。踩坑也不要灰心,要吸取教训,总结经验,才能成为一名合格的架构师。
请点击【关注】获取更多互联网和技术干货,头条号IT徐胖子原创本文请勿转载,感谢支持
猜你喜欢
- 2024-10-21 科研作图有哪些「赏心悦目」的绘图主题和配色方案?
- 2024-10-21 四色 黎曼 哥德巴赫 孪生素数 郎道一西格尔猜想共阵
- 2024-10-21 当今微服务盛行之架构师必经之路-领域驱动设计-下
- 2024-10-21 「分析设计」「方法论」领域驱动设计——战略建模&限界上下文
- 2024-10-21 如何在短频快的节奏中做好技术?业务开发必会的架构思维
- 2024-10-21 人生不是能力和性格决定你的未来,而是“四色”决定你的未来
- 2024-10-21 可视化架构设计(可视化架构设计案例)
- 2024-10-21 让你的3D打印有更多颜色!单AMS突破四色限制
- 2024-10-21 DDD在有赞信贷核心系统中的实践(有赞saas平台)
- 2024-10-21 斗破苍穹:紫妍新建模暴揍莫涯,地魔老鬼登场四色火莲初露锋芒!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)