当前位置: 首页 > news >正文

电子商务网站的建设流程是怎样的移动互联网发展史

电子商务网站的建设流程是怎样的,移动互联网发展史,做网站的背景像素,电商直播系统app开发目录 前言 Redis目录结构 前言 deps目录 src 目录 tests 目录 utils 目录 重要的配置文件 Redis 功能模块与源码对应 前言 服务器实例 数据库数据类型与操作 高可靠性和高可扩展性 辅助功能 前言 以先面后点的方法推进无特殊说明#xff0c;都是基于 Redis 5.0.…目录 前言 Redis目录结构 前言 deps目录 src 目录 tests 目录 utils 目录 重要的配置文件 Redis 功能模块与源码对应 前言 服务器实例 数据库数据类型与操作 高可靠性和高可扩展性 辅助功能 前言 以先面后点的方法推进无特殊说明都是基于 Redis 5.0.8 版本的掌握了 Redis 代码的整体架构就相当于给 Redis 代码画了张全景图有了这张图再去学习 Redis 不同功能模块的设计与实现时就可以从图上快速查找和定位这些功能模块对应的代码文件而且有了代码的全景图之后还可以对 Redis 各方面的功能特性有个全面了解这样也便于更加全面地掌握 Redis 的功能而不会遗漏某一特性学习 Redis 的代码架构要掌握以下两方面内容 1--代码的目录结构和作用划分目的是理解 Redis 代码的整体架构以及所包含的代码功能类别2--系统功能模块与对应代码文件目的是了解 Redis 实例提供的各项功能及其相应的实现文件以便后续深入学习 Redis目录结构 前言 对于 Redis 来说在它的源码总目录下一共包含了deps、src、tests、utils四个子目录这四个子目录分别对应了 Redis 中发挥不同作用的代码 deps目录 这个目录主要包含了 Redis 依赖的第三方代码库包括 Redis 的 C 语言版本客户端代码hiredisjemalloc 内存分配器代码readline 功能的替代代码 linenoiselua 脚本代码这部分代码的一个显著特点就是它们可以独立于 Redis src 目录下的功能源码进行编译也就是说它们可以独立于 Redis 存在和发展下面这张图显示了 deps 目录下的子目录内容 那么为什么在 Redis 源码结构中会有第三方代码库目录呢其实主要有两方面的原因一方面 Redis 作为一个用 C 语言写的用户态程序它的不少功能是依赖于标准的 glibc 库提供的比如内存分配、行读写(readline)、文件读写、子进程/线程创建等但是glibc库提供的某些功能实现效率并不高例子glibc 库中实现的内存分配器的性能就不是很高它的内存碎片化情况也比较严重因此为了避免对系统性能产生影响Redis 使用了 jemalloc 库替换了 glibc 库的内存分配器可是jemalloc 库本身又不属于 Redis 系统自身的功能把它和 Redis 功能源码放在一个目录下并不合适所以Redis 使用了专门的 deps 目录来保存这部分代码另一方面 有些功能是 Redis 运行所需要的但是这部分功能又会独立于 Redis 进行开发和演进这种类型最为典型的功能代码就是 Redis 的客户端代码Redis 作为 Client-Server 架构的系统访问 Redis 离不开客户端的支撑此外Redis 自身功能中的命令行 redis-cli、基准测试程序 redis-benchmark 以及哨兵都需要用到客户端来访问 Redis 实例不过针对客户端的开发只要保证客户端和实例交互的过程满足 RESP 协议就行客户端和实例的功能可以各自迭代演进所以在 Redis 源码结构中C 语言版本的客户端hiredis就被放到了 deps 目录中以便开发人员自行开发和改进客户端功能总而言之对于 deps 目录来说只需要记住它主要存放了三类代码 一是 Redis 依赖的、实现更加高效的功能库如内存分配二是独立于 Redis 开发演进的代码如客户端三是 lua 脚本代码 src 目录 这个目录里面包含了 Redis 所有功能模块的代码文件也是 Redis 源码的重要组成部分同样先来看下 src 目录下的子目录结构可以发现src 目录下只有一个 modules 子目录其中包含了一个实现 Redis module 的示例代码剩余的源码文件都是在 src 目录下没有再分下一级子目录因为 Redis 的功能模块实现是典型的 C 语言风格不同功能模块之间不再设置目录分隔而是通过头文件包含来相互调用这样的代码风格在基于 C 语言开发的系统软件中也比较常见比如 Memcached 的源码文件也是在同一级目录下所以当使用 C 语言来开发软件系统时就可以参考 Redis 的功能源码结构用一个扁平的目录组织所有的源码文件这样模块相互间的引用也会很方便 tests 目录 在软件产品的开发过程中除了第三方依赖库和功能模块源码以外通常还需要在系统源码中添加用于功能模块测试和单元测试的代码而在 Redis 的代码目录中就将这部分代码用一个 tests 目录统一管理了起来Redis 实现的测试代码可以分成四部分分别是 单元测试(对应 unit 子目录)Redis Cluster 功能测试(对应 cluster 子目录)哨兵功能测试(对应 sentinel 子目录)主从复制功能测试(对应 integration 子目录)这些子目录中的测试代码使用了 Tcl 语言(通用的脚本语言)进行编写主要目的就是方便进行测试另外每一部分的测试都是一个测试集合覆盖了相应功能模块中的多项子功能测试比如 在单元测试的目录中可以看到有针对过期 key 的测试(expire.tcl)、惰性删除的测试(lazyfree.tcl)以及不同数据类型操作的测试(type 子目录)等而在 Redis Cluster 功能测试的目录中可以看到有针对故障切换的测试(failover.tcl)、副本迁移的测试(replica-migration.tcl)等不过在 tests 目录中除了有针对特定功能模块的测试代码外还有一些代码是用来支撑测试功能的这些代码在 assets、helpers、modules、support 四个目录中这里有张图展示了 tests 目录下的代码结构和层次 utils 目录 在 Redis 开发过程中还有一些功能属于辅助性功能包括用于创建 Redis Cluster 的脚本、用于测试 LRU 算法效果的程序以及可视化 rehash 过程的程序在 Redis 代码结构中这些功能代码都被归类到了 utils 目录中统一管理下图展示了 utils 目录下的主要子目录 重要的配置文件 除了 deps、src、tests、utils 四个子目录以外Redis 源码总目录下其实还包含了两个重要的配置文件一个是 Redis 实例的配置文件 redis.conf另一个是哨兵的配置文件sentinel.conf当需要查找或修改 Redis 实例或哨兵的配置时就可以直接定位到源码总目录下 Redis 功能模块与源码对应 前言 Redis 代码结构中的 src 目录包含了实现功能模块的 123 个代码文件在这 123 个代码文件中对于某个功能来说一般包括了实现该功能的 C 语言文件(.c 文件)和对应的头文件(.h 文件)比如dict.c 和 dict.h 就是用于实现哈希表的 C 文件和头文件那么该如何将这 123 个文件和 Redis 的主要功能对应上呢其实Redis 代码文件的命名非常规范文件名中就体现了该文件实现的主要功能比如对于 rdb.h 和 rdb.c 这两个代码文件来说从文件名上就可以看出来它们是实现内存快照RDB 的对应代码所以这里为了能快速定位源码就分别按照 Redis 的服务器实例、数据库操作、可靠性和可扩展性保证、辅助功能四个维度把 Redis 功能源码梳理成了四条代码路径 服务器实例 Redis 在运行时是一个网络服务器实例因此相应地就需要有代码实现服务器实例的初始化和主体控制流程而这是由 server.h/server.c 实现的Redis 整个代码的 main入口函数也是在 server.c 中如果想了解 Redis 是如何开始运行的那么就可以从server.c 的 main 函数开始看起当然对于一个网络服务器来说它还需要提供网络通信功能Redis 使用了基于事件驱动机制的网络通信框架涉及的代码文件包括 ae.h/ae.cae_epoll.cae_evport.cae_kqueue.cae_select.c关于事件驱动框架的具体设计思路与实现方法后续会详细介绍而除了事件驱动网络框架以外与网络通信相关的功能还包括底层 TCP 网络通信和客户端实现Redis 对 TCP 网络通信的 Socket 连接、设置等操作进行了封装这些封装后的函数实现在anet.h/anet.c 中这些函数在 Redis Cluster 创建和主从复制的过程中会被调用并用于建立 TCP 连接除此之外客户端在 Redis 的运行过程中也会被广泛使用比如实例返回读取的数据、主从复制时在主从库间传输数据、Redis Cluster 的切片实例通信等都会用到客户端Redis 将客户端的创建、消息回复等功能实现在了 networking.c 文件中如果想了解客户端的设计与实现可以重点看下这个代码文件这里也总结了与服务器实例相关的功能模块及对应的代码文件 数据库数据类型与操作 Redis 数据库提供了丰富的键值对类型其中包括了 String、List、Hash、Set 和 Sorted Set这五种基本键值类型此外Redis 还支持位图、HyperLogLog、Geo 等扩展数据类型而为了支持这些数据类型Redis 就使用了多种数据结构来作为这些类型的底层结构比如String 类型的底层数据结构是 SDS而 Hash 类型的底层数据结构包括哈希表和压缩列表不过因为 Redis 实现的底层数据结构非常多所以这里把这些底层结构和它们对应的键值对类型以及相应的代码文件列在了下表中可以用这张表来快速定位代码文件 除了实现了诸多的数据类型以外Redis 作为数据库还实现了对键值对的新增、查询、修改和删除等操作接口这部分功能是在 db.c 文件实现的当然Redis 作为内存数据库其保存的数据量受限于内存大小因此内存的高效使用对于Redis 来说就非常重要Redis 是如何优化内存使用的呢实际上Redis 是从三个方面来优化内存使用的分别是内存分配、内存回收以及数据替换首先在内存分配方面Redis 支持使用不同的内存分配器包括 glibc 库提供的默认分配器tcmalloc、第三方库提供的 jemallocRedis 把对内存分配器的封装实现在了zmalloc.h/zmalloc.c其次在内存回收上Redis 支持设置过期 key并针对过期 key 可以使用不同删除策略这部分代码实现在 expire.c 文件中同时为了避免大量 key 删除回收内存会对系统性能产生影响Redis 在 lazyfree.c 中实现了异步删除的功能所以这样就可以使用后台 IO线程来完成删除以避免对 Redis 主线程的影响最后针对数据替换如果内存满了Redis 还会按照一定规则清除不需要的数据这也是Redis 可以作为缓存使用的原因Redis 实现的数据替换策略有很多种包括 LRU、LFU 等经典算法这部分的代码实现在了 evict.c 中同样这里也把和 Redis 数据库数据类型与操作相关的功能模块及代码文件总结成了一张图 高可靠性和高可扩展性 首先虽然 Redis 一般是作为内存数据库来使用的但是它也提供了可靠性保证这主要体现在 Redis 可以对数据做持久化保存并且它还实现了主从复制机制从而可以提供故障恢复的功能这部分的代码实现比较集中主要包括以下两个部分 1--数据持久化实现 Redis 的数据持久化实现有两种方式内存快照 RDB 和 AOF 日志分别实现在了rdb.h/rdb.c 和 aof.c 中注意在使用 RDB 或 AOF 对数据库进行恢复时RDB 和 AOF 文件可能会因为 Redis 实例所在服务器宕机而未能完整保存进而会影响到数据库恢复因此针对这一问题Redis 还实现了对这两类文件的检查功能对应的代码文件分别是 redis-check-rdb.c 和 redis-check-aof.c2--主从复制功能实现 Redis 把主从复制功能实现在了 replication.c 文件中另外还需要知道的是Redis 的主从集群在进行恢复时主要是依赖于哨兵机制而这部分功能则直接实现在了 sentinel.c 文件中其次与 Redis 实现高可靠性保证的功能类似Redis 高可扩展性保证的功能是通过 Redis Cluster 来实现的这部分代码也非常集中就是在 cluster.h/cluster.c 代码文件中所以这样在学习 Redis Cluster 的设计与实现时就会非常方便不用在不同的文件之间来回跳转了 辅助功能 Redis 还实现了一些用于支持系统运维的辅助功能比如为了便于运维人员查看分析不同操作的延迟产生来源Redis 在latency.h/latency.c 中实现了操作延迟监控的功能为了便于运维人员查找运行过慢的操作命令Redis 在 slowlog.h/slowlog.c 中实现了慢命令的记录功能等等此外运维人员有时还需要了解 Redis 的性能表现为了支持这一目标Redis 实现了对系统进行性能评测的功能这部分代码在 redis-benchmark.c 中
http://www.sczhlp.com/news/178869/

相关文章:

  • icp是网站备案网站 文件夹结构
  • 宣传图制作网站国内创意网站案例
  • 网站建设pdf微盘河北网站建设市面价
  • 湛江网站建设咨询wordpress怎么二次开发
  • 手机作图软件appseo蜘蛛屯
  • 网站的建设需要多少钱软文案例大全300字
  • 网站开发的需求分析书如何韩国视频网站模板下载 迅雷下载地址
  • 找活做的网站怎么做离线网站
  • seo查询 站长工具h5 和手机网站
  • JeecgBoot低代码 v3.8.3 大版本发布,组织架构革新+全面迈向 Spring Boot 3 时代
  • 2025年9月文章一览
  • DevOps技术演进:混合云时代下的本土化突围与智能化未来
  • 2025 年模块电源厂家最新推荐排行榜:dc/dc、ac/dc 及工业级模块电源优质企业全面解析与选购参考
  • 【AI生成】小模型微调技术浅析
  • 建设北京公司网站百度seo关键词工具
  • 电子商务网站建设(论文生活中有创意的产品设计
  • 手机之家官方网seo技术网网
  • 企业网站推广方案在哪里大屏高端插画家个人主页
  • 网站开发的分工校园网站建立
  • 做设计的都用那些网站宁波在线网
  • app试玩网站制作房地产网站模板库
  • 咸阳市住房和城乡建设规划局网站网站建设借鉴
  • 网站开发的8个步骤网站建设系统设计报告
  • 网站产品怎么优化优化排名推广关键词
  • 西宁市城东区住房和建设局网站青岛网站推广公司
  • 深圳网站设计优异刻企业策划营销中心
  • 网站开发都是使用框架吗wordpress课堂主题
  • 网站建设虚拟主机泰安齐鲁人才网最新招聘网
  • 服装展示网站源码成都网络营销策划
  • 国家小城镇建设政策网站安徽池州网站制作