Netlog拥有4000万活跃用户,每个月有超过5000万的独立用户访问网站,每个月有5亿多的PV。数据量应该算是比较大的。作者是Jurriaan Persyn,他从一个开发者角度而非DBA或者SA角度来谈Netlog是如何通过数据切分来提高网站
性能,横向扩展数据层的
第一阶段:读写同在一台数据库服务器
第二阶段:读写分离(可以解决读写比例均衡或者读居多的情况,但是带入了数据复制同步的问题)
第三阶段:部分数据独立部署结合读写分离。(部分数据根据其业务独立性情况,可以将所有的数据独立存储到数据库服务器,分担数据读写压力,前提是要求数据具有较高的业务独立性)
第四阶段:数据分拆结合读写分离(三阶段的增强)
第五阶段:问题出现,分拆也无法解决数据爆炸性增长,同时读写处于同等比例
解决问题两种方式:DB Scale up ,DB Scale out。前者投入以及后期扩展有限,因此需要进行数据切分
上图就是将photo的数据切分到了10台数据库服务器上。
切分数据的两个关键点:
1. 如何根据存储的数据内容判断数据的存储归属,也就是什么是内容的分区主键。
2. 采用什么算法可以根据不同的主键将内容存储到不同的分区中。
分区主键的选择还是要根据自身的业务场景来决定,Netblog选择的是用户ID。
采用什么方式将分区主键映射到对应的分区可以通过以下四种方式:
1. 根据数据表来切分。(前提就是数据独立性较强,和前面提到的三阶段类似)
2. 基于内容区间范围的分区。(就好比前1000个用户的信息存储在A服务器,1000-2000存储在B服务器)
3. 采用Hash算法结合虚拟节点的方式。(这类在memcached等等分布式场景中最常见,其实也是一个难点),缺点就是在于动态增加存储节点会导致数据部分或者全部失效。
4. 目录式的分区。最简单也是最直接的方式,key和分区的对应关系被保存,通过查找目录可以得到分区信息。适合扩展,就是增加查询损耗。
如何将数据分布的尽量均匀,如何平衡各个服务器之间的负载,如何在新增存储机器和删除存储机器的时候不影响原有数据,同时能够将数据均摊,都是算法的关键。在分布式系统中DHT(Distribute Hash Table)被很多人研究,并且有很多的论文是关于它的。
数据的横向切分给应用带来的问题:
1. 跨区的数据查询变得很困难。(对于复杂的关联性数据查询无法在一个请求中完成)
2. 数据一致性和引用完整性较难保证。(多物理存储的情况下很难保证兼顾效率、可用性、一致性)
3. 数据分区之间的负载均衡问题。(数据本身的不均衡性,访问和读写的不均衡性都会给数据分区的负载均衡带来困难)
4. 网络配置的复杂性。(需要保证服务器之间的大数据量频繁的交互和同步)
5. 数据备份策略将会变得十分复杂。
解决这些问题当前已经有的一些开源项目:
1. MySql Cluster,解决读写分离问题已经十分成熟。
2. MySql Partitioning,可以将一个大表拆分为很多小表,提高访问速度,但是限制与这些小表必须在同一台服务器上。
3. HSCALE和Spock Proxy都是建立与MySql Proxy基础上的开源项目,MySql Proxy采用LUA脚本来进行数据分区。
4. HiveDB是MySql分区框架的java实现。
5. 另外还有HyperTable,HBase,BigTable\oracle等等。
相关推荐
DCBI-NetLog上网行为日志系统用户手册 Netlog常见问题集 netlog设备后台恢复出厂的方法 神州数码NETLOG快速入门
DCBI-NetLog上网行为日志系统用户手册-v6.0
netlog网页版中文帮助手册
从syslog服务器中读取日志,并对日志进行解析,转入数据库中,从而实现对日志信息的统计。
它是由 Uri Wilensky在1999年发起的,由连接学习和计算机建模中心(CCL )负责持续开发。...建模人员能够向成百上千的独立运行的“主体”(agent) 发出指令。这就使得探究微观层面上的个体行为与宏观模式之间的联系成为...
Netlog - 一个轻量级,HTTP-centric,基于日志(Kafka风格)的消息队列
打开网页的音乐后,就是从该网页退出,该播放器仍然在播,不受影响。
可以看到RTL芯片的光猫的串口打印的telnet工具。集成log会话保存功能。用于RTL光猫问题定位
asp.netLog4(日志)asp.netLog4(日志)asp.netLog4(日志)
c# 实现百万级别日志打印,打印输出可DEBUG、INFO、WARN、ERROR级别。多线程安全运行。
net-Internals事件查看器和相关功能已从Chrome中删除,因此此扩展名可以显示NetLog转储 使用chrome创建:// net-export 原始项目: https://chromium.googlesource.com/catapult/+/master/netlog_viewer/
第一题在 DCBI-netlog 上配置,设备部署方式为旁路模式,并配置监控接口与管理接口 第二题在 DCBI-netlog 上配置,监控周一至周五 9:00-
Netlog是用Perl编写的用于Linux的简单网络流量监视器。 它非常易于使用,适用于工作站和服务器。 它可以记录不同接口上的流量以及受控计算机的正常运行时间。
DCBI 最新版本安装指导手册,包括在AS 系统上安装/调试DCBI软件的基本步骤、DCBI软件升级步骤、Netlog安装调试步骤、DCBA软件升级方法故障排除等内容
网络日志记录附加程序(例如log4nets UdpAppender)的实时客户端。 它是用C#编写的,并且受Java应用程序“ Chainsaw”的启发。
网志 通过互联网进行登录。 Arquitetura Decidi utilizar umaversãosimplifica da estrutura proposta pelo framework获得套件: 服务 终点 运输 服务 Écamada que possui as regras denegócio。...
#资源达人分享计划#
EF2KEngine组件使用说明,用于二次开发必须的资料
100人以下的免费版行为管理软件,多余100人管控要收费,但是可以选择只管控100人就没事