• 程序三高的方法


    Survive by day and develop by night.
    talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
    happy for hardess to solve denpendies.

    目录

    在这里插入图片描述

    概述

    程序三高的方法

    需求:

    设计思路

    "程序三高"指的是代码复杂、耦合度高、难以维护的情况。 解决方法如下:

    1. 重构:通过重构
      "程序三高"指的是代码复杂、耦合度高、难以维护的情况。 解决方法如下:

    2. 重构:通过重构,将复杂的代码结构进行简化,去除不必要的代码,同时优化代码的逻辑和结构。这将有助于减少代码的复杂性和耦合度,使代码更易于维护。

    3. 拆分模块:将复杂的模块分解成更小的模块,各个模块之间的关系明确,这有助于代码的复杂性和耦合度降低,同时方便维护。

    4. 使用设计模式: 设计模式是一些被广泛认可的最佳实践,这些实践可以帮助我们写出易于扩展、可维护、易于理解的代码。通过使用设计模式,可以将程序的耦合度降到最低。

    5. 代码审查:通过定期的代码审查,可以发现代码中的问题,避免复杂的代码影响程序可维护性,确保程序的质量和稳定性。

    6. 测试:进行充分的测试可以确保代码的质量和稳定性。测试用例覆盖率越高,程序的稳定性就越高,维护起来就越容易。

    实现思路分析

    1.1)高并发

    高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一。当多个进程或线程同时(或着说在同一段时间内)访问同一资源时会产生并发问题,因此需要通过专门的设计来保证系统能够同时(并发)正确处理多个请求。

    2)高性能

    简单地说,高性能(High Performance)就是指程序处理速度快、耗能少。与性能相关的一些指标如下:

    响应时间:系统对请求做出响应的时间。例如系统处理一个 HTTP 请求需要 200ms,这个 200ms 就是系统的响应时间。
    吞吐量:单位时间内处理的请求数量。
    TPS:每秒响应事务数。
    并发用户数:同时承载能正常使用系统功能的用户数量。
    高并发和高性能是紧密相关的,提高应用的性能,可以提高系统的并发能力。

    应用性能优化时,对于计算密集型和 I/O 密集型还是有很大差别,需要分开来考虑。

    水平扩展(Scale Out):只要增加服务器数量,就能线性扩充系统性能。通常增加服务器资源(CPU、内存、服务器数量),大部分时候是可以提高应用的并发能力和性能 (前提是应用能够支持多任务并行计算和多服务器分布式计算才行)。但水平扩展对系统架构设计是有要求的,难点在于:如何在架构各层进行可水平扩展的设计。

    3)高可用
    高可用性(High Availability)通常用来描述一个系统经过专门的设计,从而减少停工时间,保证服务的持续可用。

    如高可用性集群就是保证业务连续性的有效解决方案。
    缓存分类
    1)本地缓存
    使用进程内成员变量或者静态变量,适合简单的场景,不需要考虑缓存一致性、过期时间、清空策略等问题。

    可以直接使用语言标准库内的容器来做存储。

    2)分布式缓存
    当缓存的数据量增大以后,单机不足以承载缓存服务时,就要考虑对缓存服务做水平扩展,引入缓存集群。

    将数据分片后分散存储在不同机器中,如何决定每个数据分片存放在哪台机器呢?一般是采用一致性 Hash 算法,它能够保证在缓存集群动态调整,在不断增加或者减少机器时,客户端访问时依然能够根据 key 访问到数据。

    常用的组件有 Memcache、 Redis Cluster 等,也可以在高性能内存存储 Redis 的基础上,提供分布式存储的解决方案

    1. 预处理与延后处理

    2. 池化
      内存、连接、线程这些都是资源,创建线程、分配内存、数据库连接这些操作都有一个特征, 那就是创建和销毁过程都会涉及到很多系统调用或者网络 I/O,每次都在请求中去申请创建这些资源,就会增加请求处理耗时。如果我们用一个“容器(池)”把它们保存起来,下次需要的时候,直接拿出来使用,就可以避免重复创建和销毁所浪费的时间。

    3. 异步(回调)
      对于处理耗时的任务,如果采用同步的方式,会增加任务耗时,降低系统并发度。此时可以通过将同步任务变为异步进行优化。

    异步:服务员被问烦了,就在点完餐后给我们一个号码牌,每次准备好了就会在服务台叫号,这样我们就可以在被叫到的时候再去取餐,中途可以继续干自己的事。

    1. 消息队列
      5.1 服务解耦
      5.2 异步处理
      5.3 流量削峰

    5.4 总结

    1. 批量处理
      在涉及到网络连接、I/O 等情况时,将操作批量进行处理能够有效提高系统的传输速率和吞吐量。

    2. 零拷贝
      高性能的服务器应当避免不必要数据复制,特别是在用户空间和内核空间之间的数据复制。 比如 HTTP 静态服务器发送静态文件的时候,一般我们会这样写:

    参考资料和推荐阅读

    参考资料
    官方文档
    开源社区
    博客文章
    书籍推荐

    1. https://www.bbsmax.com/A/D854NXEWzE/

    欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

  • 相关阅读:
    未来的大模型发展
    概念解析 | 功率放大器与低噪声放大器:一场关于信号放大的对比
    Docker 部署 MySQL 8
    uniapp 使用第三方UI库 uview-plus
    JavaEE基础知识
    李沐深度学习 4.5 权重衰减的知识梳理与课后习题
    基于BP神经网络预测电力负荷(Matlab代码实现)
    人工智能和计算机视觉(4)-纹理分割
    iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)
    rk平台android12系统设置里面互联网选项中的以太网选项点击不了问题
  • 原文地址:https://blog.csdn.net/xiamaocheng/article/details/133596559