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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 互联网开发高可用高性能那点事

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

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

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

     高可用互联网程序高可用,即线上服务要保证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
相关文章
|
7月前
|
消息中间件 Java 应用服务中间件
聊聊分布式高并发应用中的高可用性
聊聊分布式高并发应用中的高可用性
80 0
|
3月前
|
消息中间件 Java 中间件
高性能RockerMQ(一)
高性能RockerMQ(一)
|
5月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
285 0
|
存储 负载均衡 监控
高可用
当今数字化时代,高可用性已经成为许多企业和组织的重要关注点。无论是云计算、大数据、电子商务还是日常生活中的各种应用程序,高可用性都是确保系统稳定运行和用户满意度的关键因素。本文将深入探讨高可用性的概念、重要性以及实现高可用性的方法。
|
7月前
|
消息中间件 缓存 数据库
高可用之故障隔离
【2月更文挑战第21天】
|
存储 缓存 算法
分布式数据库架构:高可用、高性能的数据存储
分布式数据库架构:高可用、高性能的数据存储
1034 0
|
存储 缓存 负载均衡
高性能是什么?其本质是什么东东?
高性能是什么?其本质是什么东东?
172 0
|
存储 缓存 运维
大厂都是如何对高并发系统做到高可用的?
系统具备较高的无故障运行的能力。 Hadoop1.0的NameNode是单点,一旦故障,整个集群不可用。Hadoop2提出的NameNode HA方案就是同时启动两个NameNode:
132 0
|
存储 安全 NoSQL
|
消息中间件 监控 算法
高可用怎么设计呢
《高可用》系列
187 0
高可用怎么设计呢

热门文章

最新文章