高性能架构设计总结

Posted 互联网技术到家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能架构设计总结相关的知识,希望对你有一定的参考价值。


策划:ant


本文从计算高性能和存储高性能的维度对高性能架构的设计和高性能架构做个简练总结。希望大家有所收获。


计算高性能架构

高性能架构设计主要集中在两方面:

  • 尽量提升单服务器的性能,将单服务器的性能发挥到极致 。

  • 如果单服务器无法支撑性能,考虑服务器集群方案 。


单服务器高性能

单服务器高性能的关键之一就是服务器采取的网络编程模型,网络编程模型有如下两个关键设计点 :

  • 服务器如何管理连接。

  • 服务器如何处理请求 。

以上两个设计点最终都和操作系统的 I/O 模型及进程模型相关 。

  • I/O 模型:阻塞、非阻塞、同步 、异步

  • 进程模型:单进程、 多进程、多线程。

常用的2种模型是:

  • Reactor I/O多路复用 复用进程/线程 非阻塞同步,高性能

  • Proactor 异步 非阻塞异步 操作系统主动通知


集群高性能
高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力。计算本身 存在一个特点:同样的输入数据和逻辑,无论在哪台服务器上执行,都应该得到相同的输出 。因此高性能集群设计的复杂度主要体现在任务分配这部分。
任务分配主要通过负载均衡来进行。
不同的任务分配算法目标是不一样的,有的基于负载考虑、有的基于性能考虑、有的基于业务考虑。

负载均衡类型

  • DNS负载均衡 简单成本低,更新有延迟,扩展性不高,策略简单

  • 硬件负载均衡 功能强大 性能强大 稳定性高 支持安全防护 价格高 扩展性低

  • 软件负载均衡 简单,便宜,扩展性好,性能一般,功能一般

负载均衡架构

  • 地理级别负载均衡

  • 集群级别负载均衡

  • 机器级别的负载均衡

负载均衡的算法

  • 任务平分类 平均分配

  • 负载均衡类 根据资源分配

  • 性能最优类 根据性能好的分配

  • Hash 类 相同id分配到同一台


存储高性能架构

mysql

mysql的高性能架构主要为读写分离和分库分表。

读写分离主要目的为分散读压力,但是可能导致主从一致性问题。

分库分表主要目的为分散写压力。问题是无法join导致分布式事务查询复杂度提升(count join order by)。实现形式主要有通过代码封装 或者中间件实现。


nosql
关系数据存在一些局限性:
  • 无法存储数据结构
  • schema扩展不方便
  • I/0 性能低
  • 全文搜索 性能低
我们可以通过Nosql数据库来解决:
  • K-V 存储 解决数据结构的问题
  • 文档数据库 解决schema扩展问题(场景 属性差异较大)
  • 列式数据集 解决IO问题 (场景 大数据统计)
  • 全文搜索引擎 解决全文搜索问题

缓存
需要经过复杂运算后得出的数据,存储系 统无能为力 。读多写少的数据,存储系统有心无力。

缓存就是为了弥补存储系统在这些复杂业务场景下的不足 , 缓存的基本原理就是将可能重 复使用 的数据放到内存中 ,一次生成,多次使用, 避免每次使用都去访问存储系统。
缓存可能带来的问题
  • 缓存穿透
  • 缓存雪崩
  • 缓存热点


推荐文章



好文我在看

以上是关于高性能架构设计总结的主要内容,如果未能解决你的问题,请参考以下文章

linux后台服务架构高性能设计之道

linux后台服务架构高性能设计之道

嵌入式架构设计思考

《分布式服务架构:原理设计于实战》总结

架构设计笔记_13_关键模式_阶段性总结

淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。