从支持异步并发编程的Web后端框架到数据存储服务的分布式一致性哈希路由

原创 2016年06月01日 21:42:02
 异步并发框架应该可以解决web后端开发的IO性能问题,比如node、go?、tornado、openresty?,剩下的就是数据存储如何做切分和LB了,当然,可以考虑使用内存数据库,这样数据存储不需要管持久化


关键的持久化仍然可以使用mysql,要么做主从分离,要么做jdbc前端转发,但是mysql的水平切分仍然是个技术活(对于业务逻辑复杂的情况)


假如不考虑索引需求,所有的索引全部走lucene/es,不考虑连接/分布式连接,而是增加冗余存储;那么核心存储可以只需要关心如何做LB/高级切分,每个物理存储可以自己用B树实现一个简单点的


但是不论是哪一种LB/数据切分,理论上某个物理分块节点都可能过载,这个时候就需要进一步的分裂,不幸的是,在要求服务可用性、一致性、多副本等等的前提下,这个分裂过程不容易做好

当然可以使用DHT:假设一个经过水平切分后的节点物理存储仍然过载,此时需要调整整个存储网络的拓扑/容量,然后相当于做下面的逻辑操作:将此节点从网络中detach分离,将节点上的数据以最小单位重新put回去


说起来好像很简单,但是做起来复杂:detach过载节点的前提是网络先扩容,扩容之后原有的DHT机制可能不再适用,那么如何保证这个扩容不需要调整现有的存储节点呢?一般使用Hash到虚拟节点,虚拟节点再映射到物理节点,这就是所谓的一致性hash。问题是这个其实并不能保证前面的“调整过程”是IO代价最小的

相关文章推荐

分布式数据存储temp.z52

  • 2017年03月08日 11:17
  • 59MB
  • 下载

分布式数据存储temp.z55

  • 2017年03月08日 12:31
  • 59MB
  • 下载

关于如何提高Web服务端并发效率的异步编程技术

最近我研究技术的一个重点是java的多线程开发,在我早期学习java 的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只...

分布式数据存储temp.z47

  • 2017年03月08日 10:45
  • 59MB
  • 下载

分布式数据存储temp.z56

  • 2017年03月08日 12:34
  • 59MB
  • 下载

[Java]如何提高Web服务端并发效率的异步编程技术?

【编者按】在Java里开发多线程最强有力的实践就是做服务端的并发处理,本文作者阐述了实施多线程的具体实践方法,要真的掌握某种技术你就必须要知其所以然。笔者转发至此,希望对Web开发者有所帮助。 ...

分布式数据存储temp.z53

  • 2017年03月08日 11:20
  • 59MB
  • 下载

分布式数据存储temp.z57

  • 2017年03月08日 12:36
  • 59MB
  • 下载

提高Web服务端并发效率的异步编程技术

最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知...

分布式数据存储temp.z112

  • 2017年03月10日 09:53
  • 59MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从支持异步并发编程的Web后端框架到数据存储服务的分布式一致性哈希路由
举报原因:
原因补充:

(最多只允许输入30个字)