前言
本篇会列出一些笔者认为的系统架构设计需要考虑到的点,欢迎讨论指正。
系统抽象能力:
我们去看一些比较有名的源码,它的底层无一例外,都是有着很出色的抽象结构。一个出色的抽象代码能够让逻辑非常清晰,让代码重用率最大化,避免重复造轮子的情况。抽象的能力是我们对面向对象认识的实际运用,抽象设计需要合理的运用重写重载和泛型(这些都是JAVA的基础吧,学的时候只是几个理论,不过真的想玩好这几个特性,需要长时间的思考和对生活的感悟)
高内聚低耦合:
代码直接的耦合往往会造成调用之间级联的修改,服务直接的耦合则有可能造成服务直接的级联瘫痪。解耦合是编码者与设计架构者共同关注的点。如何保证代码间的解耦,我们可以了解一下结构型的设计模式,诸如桥接模式,装饰者模式,组合模式等等,都是良好的解耦代码结构。那么如何让服务之间解耦,通常都会使用mq来做服务之间的交互,服务之间只以事件的发布订阅来交互(如今微服务之间大多采用rpc或者rest的方式进行调用,只要做好服务之间的熔断策略即可)。
扩展性:
扩展性是一个系统重要的指标,扩展性良好的系统能够轻易的应对需求的变更和业务的增长,是一个系统延续性的保障,扩展性强的代码足以反映出设计师的技术能力以及对业务的理解思考程度。
性能:
性能是一个系统规模壮大之后必须考虑到的因素,确保系统性能稳定需要工程师对高并发程序有良好的理解与设计。
前瞻性:
业务频繁更新时怎么确保系统对以后业务的兼容,这就需要设计者能够对系统业务有个评估,在系统设计期间对以后的业务变更以及业务量加以考虑。能够清楚的知道系统的瓶颈在哪里,在业务即将到达瓶颈时进行调整或重构。
异常监控:
开发人员都明白一个真理–没有系统是完美的,bug时时刻刻都可能发生。有一个好的异常监控方案能够及时检测到线上问题并及时处理。比较成熟的方案有zabbix,能够根据关键字监控服务日志,发送邮件提醒等功能,试想一下,如果支付系统故障了,一直在重复支付,几秒钟可能就损失几百块,时间久了…不敢想象,越早的发现bug损失就越少。
业务回滚设计:
异常出现造成的数据有误,需要有合理的业务数据回滚设计,通常会编写一套业务回滚的逻辑,基于事件来供出现异常后回滚使用;还有一种思想是基于数据的版本 来管理,这种方式更适合与批量回滚,可以了解下mvcc机制,根据mvcc来实现数据回滚。
安全性:
xss, csrf ,sql注入,文件上传都是黑客常用的攻击方式,一旦有漏洞让黑客有机可乘,你服务器里的东西基本上是任由摆布了,轻一点的可能用来挖挖矿;服务涉及R,可能就会损失一大笔财产了。我认为身为IT界一员,了解一下黑客的攻击方式还是很有必要的。了解如何攻击,才能有针对性的进行预防。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!