互联网三高架构理解
王建民1,杜子轩2
(1. 石家庄铁道大学,河北省 石家庄市 050000;2. 石家庄铁道大学,河北省 石家庄市 050000)
摘要:对于互联网三高架构:高并发、高性能、高可用,简称三高,最常见的架构模式有:横向分层、纵向分割、分布式化、集群化、使用缓存、使用异步模式、使用冗余、自动化。高并发即High Concurrency,通常是指通过设计保证系统能够同时并行处理很多请求。 也就是指设备并发能力强,具有同时处理多种事务的能力。高性能是指程序处理速度非常快,所占内存少,cpu占用率低。高可用通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
关键词:高性能;高并发;高可用;软件架构。
中图分类号: 文献标志码:A
1 分析互联网三高特点
互联网的三高是指高并发,高性能,高可用
1.1那么什么是高并发呢?其实高并发的意思和前面说的并发的意思不止是差了一个“高”字,而是个宽泛得多的概念。高并发是指可以让软件系统在一段时间内能够处理大量的请求。比如每秒钟可以完成10万个请求。这是互联网系统的一个重要的特征。不像并发说的是“处理”,并行说的是“执行”,高并发说的是最终效果。只要能达到效果,不管怎么实现都行。因此,极端一点高并发甚至并不一定需要并行,只要处理速度快的足够满足要求就可以。如启动一个nginx的OS进程,它只能用到一个CPU核心,也就不可能并行。但是他如果能每秒能处理10万个请求,而业务需求只要求8万个请求就可以了,那么这个单进程的nginx本身就算高并发了。通过这段话,我们能明白高并发是最终的结果,为了实现这个结果,技术上可能会用到非常多的技术方案,这些技术方案大量应用各种并发的集中人类智慧的各种方法,并尽可能的并行。
1.2高性能(High performance):高性能是指程序处理速度非常快,所占内存少,cpu占用率低。高性能的指标经常和高并发的指标紧密相关,想要提高性能,那么就要提高系统发并发能力,两者互相捆绑在一起。应用性能优化的时候,对于计算密集型和IO密集型还是有很大差别,需要分开来考虑。还有可以增加服务器的数量,内存,IO等参数提升系统的并发能力和性能,但不要浪费资源,要考虑硬件的使用率最高才能发挥到极致。
3、高可用注意如果使用单机,一旦挂机将导致服务不可用,可以使用集群来代替单机,一台服务器挂了,还有其他后备服务器能够顶上。或者使用分布式部署项。比如现在redis的高可用的集群方案有: Redis单副本,Redis多副本(主从),Redis Sentinel(哨兵),Redis Cluster,Redis自研。
2 分析互联网三高设计方法
2.1 系统的并发能力如何设计
不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。
水平扩展:只要增加服务器数量,就能线性扩充系统性能。水平扩展对系统架构设计是有要求的,如何在架构各层进行可水平扩展的设计,以及互联网公司架构各层常见的水平扩展实践,是本文重点讨论的内容。
2.2 后台服务高性能设计
我认为:高性能设计其实万变不离其宗,一定是从计算和 IO这两个维度出发,去考虑可能的优化点。计算维度的性能优化手段有哪些呢?无外乎这两种方式:
1、让更多的核来参与计算:比如用多线程代替单线程、用集群代替单机等。
2、减少计算量:比如用索引来取代全局扫描、用同步代替异步、通过限流来减少请求处理量、采用更高效的数据结构和算法等。
2.3 MYSQL
3 对于互联网三高的要求
3.1 如何提升系统的并发能力
互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。
垂直扩展:提升单机处理能力。垂直扩展的方式又有两种:
(1)增强单机硬件性能,例如:增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;
(2)提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
3.2. 高性能与高可用
高可用、高性能是互联网应用与传统应用开发之间差异较大部分,要保证程序高可用、高性能需要架构设计、实现、算法等每个点都是合理的简洁可靠的。因为一个点性能差、一个点不稳定会导致整个系统性能不稳定。分布式系统:分布式是多个节点协调提供一次计算服务,比如ElasticSearch,用户发出一次请求,多个节点分别进行查询,最终由主节点进行合并排序,排序后将打分结果按分高分低进行返回。
线上微服务高性能一是外部存储采用高性能存储,当前互联网公司一般采用redis进行数据存储,redis作为分布式缓存,核心原理是采用hash或树形结构存储数据已达到存储高性能读取数据。 已经采用了合理算法数据结构,合理逻辑情况下,提升性能就需要增加缓存合理使用缓存,比如搜索引擎设计实现就是,当词搜索后进行缓存,下次在自己搜索或其他人搜索时候直接从缓存中取出缓存从而达到高性能,并且还可以节省计算资源。
参考文献:
[1] 王申科. 互联网技术架构给我们的启示[J]. 金融电子化, 2013(12):3.
[2] 郑凤, 杨旭, 胡一闻. 移动互联网技术架构及其发展 : Mobile internet technical architecture[M]. 人民邮电出版社, 2015.
[3] 张宪光, 肇庆学院电子信息与机电工程学院 肇庆. 未来互联网体系架构研究初探[C]// 中国计算机用户协会. 中国计算机用户协会, 2013.
[4] 张宏科, 罗洪斌, 陈佳,等. 互联网架构及其互联网服务方法和系统:.
[5] 迟爽, 高建华, 邓强,等. 一种互联网架构评价方法及装置:, CN111934932A[P]. 2020.