互联网开发高可用高性能那点事

简介: 互联网开发高可用高性能那点事

高可用、高性能是互联网应用与传统应用开发之间差异较大部分,要保证程序高可用、高性能

需要架构设计、实现、算法等每个点都是合理的简洁可靠的。因为一个点性能差、一个点不稳定会

导致整个系统性能不稳定。

     高可用互联网程序高可用,即线上服务要保证99.9%以及99.99%可用率。要保证程序高可用需要

首先要保证服务存在,服务存在是前提,就需要服务是集群或者分布式的,通过数量备份来保证服务

高可用。

      集群分布式两种事物本身不是一个概念,但很多人会搞混,集群:一般情况下是多个节点提供相同

服务,通过多个节点避免服务只有单个节点,单个节点不可用时线上服务不可用。web服务一般通过nginx

反向代理技术,将请求通过ip hash、url hash、随机、轮训、加权轮训等负载均衡算法转发给后端tomcat

实现高可用。

      分布式系统:分布式是多个节点协调提供一次计算服务,比如ElasticSearch,用户发出一次请求,多个

节点分别进行查询,最终由主节点进行合并排序,排序后将打分结果按分高分低进行返回。

      线上微服务高性能一是外部存储采用高性能存储,当前互联网公司一般采用redis进行数据存储,redis作为

分布式缓存,核心原理是采用hash或树形结构存储数据已达到存储高性能读取数据。

      使用redis要注意,redis单个节点不稳定,原因有可能是网络,也有可能是有热点key导致,热点key一般

是应用程序对于通用数据未采用定时获取方式。redis单个节点会导致集群不稳定、集群不稳定会导致所有线

上依赖服务均不稳定。在谈电商双11大促活动备战,双11大促备战时曾遇到这两个问题。

      线上服务要在合适场景使用合适数据结构,该使用HashSet时就不能使用ArrayList对于各种各样数据结构

操作时间复杂度要详细掌握。HashMap put、get操纵时间复杂度时O(n),当hash冲突解决采用链表解决的时候。

对于字符串匹配要采用KMP算法,对于搜索中字典统计要采用Trie树结构。

      IO使用要合理,对于线上服务,不能任何调试信息都打印,线上服务日志一定是Error级别,需要打印时在

打印,因为日志过频打印一是淹没线上问题,再有就是会导致性能差,大日志写磁盘慢时一条会消耗10-20ms

时间。多个几条日志打印线上服务基本就慢的不行了。

      已经采用了合理算法数据结构,合理逻辑情况下,提升性能就需要增加缓存合理使用缓存,比如搜索引擎

设计实现就是,当词搜索后进行缓存,下次在自己搜索或其他人搜索时候直接从缓存中取出缓存从而达到高性

能,并且还可以节省计算资源。

       换存也做了就需要多线程、线程池对计算进行拆分,多线程在不够就需要分布式多个节点、多个线程去执

行计算,个性化推荐系统(八)--- 机器学习深度学习召回集扩量这篇文章就介绍线上模型计算服务,提升性能

方式方法。

       高可用、高性能需要每个点,存储、IO、数据结构、算法逻辑,一个点的问题,比如一个redis分片节点不

稳定,最终导致所有依赖这个节点所在集群的全部业务都不稳定。这就要求我们要不断学习,不断提升才能保

证线上服务高可用、高性能,就像软件工程一样没有银弹、没有万能药。

相关文章
UE插件开发引用包含第三方库头文件问题总结
UE插件开发引用包含第三方库头文件问题总结
632 0
|
存储 运维 Kubernetes
【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯:“第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色;第二个十年,我终于‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰;进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正体味到了境界之美”。
【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
|
运维 负载均衡 监控
服务网格下的东西向与南北向流量管理实践|学习笔记
快速学习服务网格下的东西向与南北向流量管理实践
1844 0
服务网格下的东西向与南北向流量管理实践|学习笔记
|
前端开发 JavaScript 开发者
CSS3作为CSS的最新版本,引入了许多强大的新特性和改进
【5月更文挑战第26天】CSS3作为CSS的最新版本,引入了许多强大的新特性和改进
333 2
|
机器学习/深度学习 编解码 算法
【YOLOv8改进】Polarized Self-Attention: 极化自注意力 (论文笔记+引入代码)
该专栏专注于YOLO目标检测算法的创新改进和实战应用,包括卷积、主干网络、注意力机制和检测头的改进。作者提出了一种名为极化自注意(PSA)块,结合极化过滤和增强功能,提高像素级回归任务的性能,如关键点估计和分割。PSA通过保持高分辨率和利用通道及空间注意力,减少了信息损失并适应非线性输出分布。实验证明,PSA能提升标准基线和最新技术1-4个百分点。代码示例展示了如何在YOLOv8中实现PSA模块。更多详细信息和配置可在提供的链接中找到。
闭包有哪些优缺点呢
【10月更文挑战第12天】闭包有哪些优缺点呢
|
Android开发
idea中的实用小技巧
idea中的实用小技巧
|
域名解析 存储 负载均衡
深入理解负载均衡原理|Java 开发实战
面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。
628 0
深入理解负载均衡原理|Java 开发实战
|
SQL 关系型数据库 MySQL
Mysql高级教程第二章(二)
Mysql高级教程第二章(二)
213 0
|
域名解析 应用服务中间件 Linux
Hexo博客部署在阿里云上
Hexo博客部署在阿里云上
1983 0
Hexo博客部署在阿里云上

热门文章

最新文章