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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 互联网开发高可用高性能那点事

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

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

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

     高可用互联网程序高可用,即线上服务要保证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分片节点不

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
消息中间件 Java 应用服务中间件
聊聊分布式高并发应用中的高可用性
聊聊分布式高并发应用中的高可用性
29 0
|
2月前
|
消息中间件 缓存 数据库
高可用之故障隔离
【2月更文挑战第21天】
|
8月前
|
存储 负载均衡 监控
高可用
当今数字化时代,高可用性已经成为许多企业和组织的重要关注点。无论是云计算、大数据、电子商务还是日常生活中的各种应用程序,高可用性都是确保系统稳定运行和用户满意度的关键因素。本文将深入探讨高可用性的概念、重要性以及实现高可用性的方法。
|
6月前
|
存储 缓存 算法
分布式数据库架构:高可用、高性能的数据存储
分布式数据库架构:高可用、高性能的数据存储
551 0
|
11月前
|
存储 缓存 负载均衡
高性能是什么?其本质是什么东东?
高性能是什么?其本质是什么东东?
128 0
|
12月前
|
存储 缓存 运维
大厂都是如何对高并发系统做到高可用的?
系统具备较高的无故障运行的能力。 Hadoop1.0的NameNode是单点,一旦故障,整个集群不可用。Hadoop2提出的NameNode HA方案就是同时启动两个NameNode:
96 0
|
存储 安全 NoSQL
|
设计模式 负载均衡 算法
【高可用架构】高可用性架构模式
随着企业客户部署的任务关键型基于web的服务的数量不断增加,对设计最佳网络可用性解决方案的深入理解的需求前所未有地重要。高可用性(HA)已成为此类系统开发的关键方面。高可用性简单地指的是一个组件或系统持续运行一段时间。
|
消息中间件 监控 算法
高可用怎么设计呢
《高可用》系列
133 0
高可用怎么设计呢
|
存储 Java API
分布式及高可用性的搜素引擎
分布式及高可用性的搜素引擎
84 0

热门文章

最新文章