转一份阐述怎么从架构上优化的邮件

转一份阐述如何从架构上优化的邮件

慢在哪里:写Redis HBase 线程切换等

优化思路:无法提高RedisHBase的写入速度,那么就减少写入量吧;减少写入量的办法:1,减少冗余写入,2,延长缓存时间。减少线程切换,尽量批量提交。

 

1,减少冗余数据写入:

目前的逻辑:缓存一分钟的数据然后定时刷入Redis或者HBase。问题是:各台机器会缓存相同的商品,导致同一个商品在一分钟内被写入了多次。

机器越多,冗余越大,不能横向扩展。所以需要减少接收数据的机器数量,同时将数据按照指定维度路由到相同的机器处理。

 

2,延长缓存时间:

如果解决了1中的问题,那么每台机器在一定时间内的写入量变成了可控。这时为了保护存储,可以延长缓存时间来减少写入量。

 

3,减少线程切换:

数据采集器和数据处理器切换为类似Disruptor的无所队列,批量提交数据给一个线程。(这个可选,短板应该在12

 

方案:图略

 

 

在当前的架构下,增加数据路由器模块,按照指定的维度类似一致性hash的办法将数据路由到指定数据处理器。

具体想了一个简单的方案,回头和大家一起讨论一下,看看有没有更好办法: