java项目开发实例 java系统架构有哪些( 四 )


技术架构的目标好 , 现在你已经了解了系统的复杂性和软硬件的问题 , 那技术架构就要选择和组合各种软硬件 , 再结合我们开发的应用代码 , 来解决系统非功能性需求 。
什么是系统非功能性需求呢?这是相对于业务需求来说的 , 所谓的业务需求就是保证业务逻辑正确 , 数据准确 。比如一个订单 , 我们要保证订单各项数据是准确的 , 订单优惠和金额计算逻辑是正确的 。而一个订单页面打开需要多少时间 , 页面是不是每次都能打开 , 这些就和具体的业务逻辑没有关系 , 属于系统非功能性需求的范畴 。产品经理在一般情况下 , 也不会明确提这些需求 。非功能性需求 , 有时候我们也称之为系统级功能 , 和业务功能相区分 。
那对于一个系统来说 , 技术架构都要解决哪些非功能性需求呢?
系统的高可用可用性的衡量标准是 , 系统正常工作的时间除以总体时间 , 通常用几个 9 来表示 , 比如 3个 9 表示系统在 99.9% 的时间内可用 , 4 个 9 表示 99.99% 的时间内可用 , 这里的正常工作表示系统可以在相对合理的时间内返回预计的结果 。
导致系统可用性出问题 , 一般是两种情况:
一种是软硬件本身有故障 , 比如机器断电 , 网络不通 。这要求我们要么及时解决当前节点的故障问题 , 要么做故障转移 , 让备份系统快速顶上 。还有一种是高并发引起的系统处理能力的不足 , 软硬件系统经常在处理能力不足时 , 直接瘫痪掉 , 比如 CPU 100% 的时候 , 整个系统完全不工作 。这要求我们要么提升处理能力 , 比如采取水平扩展、缓存等措施;要么把流量控制在系统能处理的水平 , 比如采取限流、降级等措施 。系统的高性能我们这里说的高性能 , 并不是指系统的绝对性能要多高 , 而是系统要提供合理的性能 。比如说 , 我们要保证前端页面可以在 3s 内打开 , 这样用户体验比较好 。
保证合理的性能分两种情况:
一种是常规的流量进来 , 但系统内部处理比较复杂 , 我们就需要运用技术手段进行优化 。比如针对海量商品的检索 , 我们就需要构建复杂的搜索系统来支持 。第二种是高并发的流量进来 , 系统仍旧需要在合理的时间内提供响应 , 这就更强调我们做架构设计时 , 要保证系统的处理能力能够整体上做水平扩展 , 而不仅仅是对某个节点做绝对的性能优化 , 因为流量的提升是很难准确预计的 。系统的可伸缩和低成本系统的业务量在不同的时间点 , 有高峰有低谷 , 比如餐饮行业有午高峰和晚高峰 , 还有电商的大促场景 。我们的架构设计要保证系统在业务高峰时 , 要能快速地增加资源来提升系统处理能力;反之 , 当业务低谷时 , 可以快速地减少系统资源 , 保证系统的低成本 。
高可用、高性能、可伸缩和低成本 , 这些技术架构的目标不是孤立的 , 相互之间有关联 , 比如说有大流量请求进来 , 如果系统有很好的伸缩能力 , 它就能通过水平扩展的方式 , 保证系统有高性能 , 同时也实现了系统的高可用 。如果系统的处理能力无法快速提升 , 无法保证高性能 , 那我们还是可以通过限流、降级等措施 , 保证核心系统的高可用 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: