一、分片模式:将数据存储区分为多个水平分区或分片,以便更好地管理和处理大量数据。
当业务量达到单个业务表通过缓存和队列削峰等措施后的平均TPS超过1万时,我们不得不考虑数据库分片。
在进行分片之前,我们需要根据数据分布、压力情况和业务逻辑来确定分片的方式,可以是按条件、范围或哈希等策略(三张图展示了三种策略)。此外,还需要对业务代码进行改造,以消除所有不支持的SQL语句。还要确定采用硬编码方式、框架方式或中间件方式进行数据路由。
在进行分片后,我们需要运维工具来对这些分片数据进行统一的索引加工等操作。最好有一个数据仓库,可以汇总所有数据,方便进行adhoc查询。同时,最好有辅助工具可以帮助我们确定数据会分布在哪个分片中。
二、静态内容托管模式:将静态内容放置在云存储服务中,并直接向客户端传送这些内容,以提高访问效率。
CDN的使用通常有两种方式:主动推送数据到CDN存储和在CDN配置回源站拉取。对于文件类资源,一般使用主动推送数据;而对于静态资源类,一般使用回源方式。
在使用CDN时,需要考虑以下问题:
1. CDN如何认定同一个文件:CDN通常使用文件的URL地址作为唯一标识来认定同一个文件。
2. 缓存刷新工具:CDN提供了缓存刷新工具,可以手动触发刷新边缘节点的缓存,以保证最新的内容能够及时被边缘节点获取。
3. 源站文件一致性:为避免问题,源站需要保持相同文件的一致性,最好是通过版本变化来改变文件名,而不是不断替换同一个文件。这样可以避免边缘节点缓存了不同版本的文件,导致各种奇怪的问题。
4. 排查问题困难性:由于使用CDN后,不同地区的用户访问的是CDN节点上的数据,一旦出现问题,排查和定位可能会比较困难。因此,建议引入前端的错误处理框架,记录前端脚本错误时的调用栈,以便更