高并发系统设计-其它知识(一)

全局唯一ID

如果系统有使用数据库,最常想到的全局唯一ID是利用数据库的自增字段来保证唯一性。这种方法生成的长度不同,并且与数据为交互,性能较差。
其它两个常用的两个算法是: UUID与snowflake

  • UUID
    通用唯一识别码,不依赖中央机构的注册和分配,32位字符,提供5个算法实现,具体算法可以网上搜索。
  1. 算法1,2可以保证唯一性;
  2. 算法3、5除了利用的hash算法不同外,其它都相同,可以保证局部唯一,有极小的概率重复,可忽略不计。
  3. 算法4,使用伪随机算法,不建议使用
  • Snowflake
    twitter开源的分布式ID生成算法,64位由若干部分组成,每一部分都存储有特定含义的数据,比如说时间戳、机器 ID、序列号等等,最终生成全局唯一的有序 ID。如下图:
    image

  • 两种实现方式

  1. 嵌入到业务代码中,不涉及服务调用性能更高,但机器ID数有限制,过多会有重复
  2. 作为服务提供,可以通过服务数,来降低机器ID数,可以用多余的位表示其它信息。
  • 特点
  1. 全局唯一
  2. 单调递增
  3. 包含业务含义ID
  • 缺点:
  1. 依赖于系统的时间戳,一旦系统时间不准,就有可能生成重复的 ID,要防止系统时间回跳。

NOSQL

NOSQL区别于关系型数据库系统,不使用SQL查询语言,提供优秀的横向扩展能力和读写性能,非常适合于高并发大数据的系统。
常见的:redis, leveldb这样的KV存储;Hbase、Cassandra列式存储数据库(关系数据库是行式);MongoDB、CouchDB文档型数据库。
NOSQL虽然有很多优点,但它不能完全替换关系型数据库,每种都有其适应的场景,可以与关系统数据库做到互补。

  • 提高写入性能
    大部份NoSql会使用LSM 树做为存储引擎来提高写入性能,将随机写改为顺序写。
  • NoSQL 数据库的支持全文搜索功能,可以很好的支持关系型数据库这方面的不足;
  • 在扩展性方面,NoSQL 数据库天生支持分布式,支持数据冗余和数据分片的特性。

缓存

在平常的开发过程中,对于IO的性能的优化,较常想到的方式就是增加缓存。

  • 缓存
  1. 从概念上讲,缓存是一种存储数据的组件,可以让对数据的请求更快地返回。由于设备之间读写性能差距较大,能过将数据放入读写性能较高的设备中,提高读写性能。
  2. 常见的缓存场景有:系统内存的分配、视频网站的缓存、静态网页的缓存。
  • 分类
  1. 静态缓存:从字面意思就是对静态数据的缓存,常见的静态页面缓存就属于这类,一般位于负载均衡层。
  2. 分布式缓存:支持动态数据,能过在服务前部署分布式缓存来提高服务性能,一般位于应用层与数据层之间。
  3. 本地缓存,位于应用层,在应用中直接实现。
  • 缓存并不能解决所有问题,一般适应于读多写少的场景,数据最好带有热点属性。缓存会带来系统的复杂性,并且可能会出现数据不致的性况。会带来一定的运维成本。在系统的设计中,需要全局考虑,才能带来优势最大化的效果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值