除此之外 , 还有大量周边的支撑系统在支持应用的正常运行 , 包括日志系统、配置系统 , 还有大量的运维系统 , 它们提供监控、安全、资源调度等功能 , 它们和核心组件的区别是 , 这些系统一般不参与实际的用户请求处理 , 但它们在背后默默保障系统的正常运行 。
到这里 , 你可以发现 , 一个端到端的系统是非常复杂的 , 它包含了大量的软硬件 。为了保障我们的应用代码能够正常运行 , 我们就需要保证这里的每个组件不出问题 , 否则一旦组件出问题 , 很可能就导致系统整体的不可用 。
技术架构的挑战应用代码怎么组织(比如模块划分和服务分层) , 那主要是业务架构的事 , 这部分在前面我们已经讨论过很多了;而技术架构的职责 , 首先是负责系统所有组件的技术选型 , 然后确保这些组件可以正常运行 。
我们知道 , 系统是由硬件和软件组成的 。接下来 , 我们就分别从软硬件的角度来看下 , 技术架构都会面临什么挑战 , 我们需要如何应对 。
硬件的问题硬件是一个系统最基础的部分 , 负责真正干活的 , 但它有两方面的问题 。
首先是硬件的处理能力有限 。对于服务器来说 , 它的 CPU 频率、内存容量、磁盘速度等等都是有限的 。虽然说按照摩尔定律 , 随着制造工艺的发展 , 大概每隔 18 个月 , 硬件的性能
可以提升一倍 , 但还是赶不上快速增长的系统处理能力的要求 , 特别是目前许多互联网平台 , 面向的都是海量的 C 端用户 , 对系统处理能力的要求可以说是没有上限的 。
从技术架构的角度 , 提升硬件的处理能力一般有两种方式 。
Scale Up
也就是垂直扩展 , 简单地说就是通过升级硬件来提升处理能力 。CPU 不够快 , 升级内核数量;内存不够多 , 升级容量;网络带宽不够 , 升级带宽 。所以说 , Scale Up 实际上是提升硬件的质量 。
Scale Out
也就是水平扩展 , 通过增加机器数量来提升处理能力 。一台机器不够 , 就增加到 2 台、4台 , 以及更多 , 通过大量廉价设备的叠加 , 增强系统整体的处理能力 。所以说 , Scale Out是提升硬件的数量 。
垂直扩展是最简单的方式 , 对系统来说 , 它看到的是一个性能更强的组件 , 技术架构上不需要任何改造 。如果碰到性能有问题 , 垂直扩展是我们的首选 , 但它有物理上的瓶颈或成本的问题 。受硬件的物理限制 , 机器的性能是有天花板的;或者有时候 , 硬件超出了主流的配置 , 它的成本会指数级增长 , 导致我们无法承受 。
水平扩展通过硬件数量弥补性能问题 , 理论上可以应对所有服务器处理能力不足的情况 , 并实现系统处理能力和硬件成本保持一个线性增长的关系 。
但水平扩展对于系统来说 , 它看到的是多个组件 , 比如说多台 Web 服务器 。如何有效地管理大量的机器 , 一方面 , 使得性能上可以实现类似 1+1=2 的效果;另一方面 , 要让系统各个部分能够有效地衔接起来 , 稳定地运行 , 这不是一件容易的事情 。我们需要通过很复杂的技术架构设计来保障 , 比如说 , 通过额外的负载均衡 , 来支持多台 Web 服务器并行工作 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- js中计时器的用法 javascript计时器频率设置
- 健身项目“方向标”
- 男人健身的7个题目
- 灭火器维护检查项目
- java获取checkbox勾选的值 获取选中的checkbox的值
- 怎样锻炼 让腿部布满气力
- 产品推广计划方案模板 项目营销方案
- 简单的java程序代码 java大小写转换函数
- 大学团建活动有哪些项目
- java中的对象和类理解 java对象是什么意思