分布式
Kevin照墨
这个作者很懒,什么都没留下…
展开
-
大数据-排序、查重、第k大
1. 排序、top k含有重复值:桶排序(将数据映射到有序桶中),每个桶再进行排序。其次还可以结合堆来实现 top k不含重复值:直接使用BitMap来做,每一个bit位都代表一个数字,比如若数字为 32,就可以 有bitSet.set(32),代表第32个bit位上有数字。——可以推出,16亿数字只会消耗 16*10^9个bit,即只会占用2G空间2. 包含统计信息的排序、top k...原创 2020-03-15 16:15:10 · 536 阅读 · 0 评论 -
分布式负载均衡算法——一致性Hash、Hash槽
1、总述分布式负载均衡算法的主要目的就是为了缓解集群服务器的压力,让客户端的请求尽可能均匀分散在各个服务器节点中。下面主要分析一致性Hash和Hash槽两种算法。参考链接:https://blog.csdn.net/majunzhu/article/details/100173943https://blog.csdn.net/Saintyyu/article/details/1000563...原创 2020-02-09 17:31:00 · 1246 阅读 · 0 评论 -
6.824——实验二:Raft
1.介绍这是构建KV存储系统一系列实验的第一个实验。而对于分布式数据库而言,首先要解决两个重大的问题:容错、一致性。所以这个实验当中,需要实现Raft协议(一个复制状态机协议)以解决这两个首要问题。一个可靠性服务需要通过存储其状态副本(比如数据等)到多个副本服务器上来实现容错。即使一些服务器节点失败了,其它副本服务器仍可以运行该服务。但问题的关键是,失败的服务节点会造成数据不一致。下一个实验...原创 2019-10-31 16:22:49 · 1448 阅读 · 0 评论 -
Thrift步骤
1.定义Thrift服务即编写.thrift文件:struct User { 1: i32 ID 2: string Name } service UserService { User GetUserByID(1:i32 userID) list<User> GetAllUser() } 2.编译Thrift用thrift工具编译上面...原创 2019-10-30 16:07:38 · 272 阅读 · 0 评论 -
分布式学习前瞻
1.概念分布式首先要关注两方面:一是分布式系统计算框架,二是分布式存储,三是分布式概念本身计算框架:目前来说基本上都是基于MapReduce的,可以说是开山鼻祖存储:存储又分为两方面文件系统:决定了数据在磁盘上的存储模式,以及系统对文件数据的操作——比如GFS、HDFS等数据库(这里主要是K-V数据库):以结构化的形式存储数据、管理数据(因为对于文件系统而言存储的都是二进制数据...原创 2019-10-24 21:08:53 · 242 阅读 · 0 评论 -
GFS
1.GFS 的主要需求在学习 GFS 的原理前,首先我们应当了解 GFS 在设计时所面对的需求场景。简单概括,GFS 的设计主要基于以下几个需求:节点失效是常态。系统会构建在大量的普通机器上,这使得节点失效的可能性很高。因此,GFS 必须能有较高的容错性、能够持续地监控自身的状态,同时还要能够顺畅地从节点失效中快速恢复存储内容以大文件为主。系统需要存储的内容在通常情况下由数量不多的大文件构...原创 2019-10-23 16:00:43 · 1612 阅读 · 1 评论 -
RPC的实现原理(thrift/dubbo比较)
1.概念我们知道RPC的目的就是让Client像本地方法一样去调用远程(即Server)服务,而完成这一功能,从上至下,Server需要完成方法的包装序列化,以及负责实现网络通信和方法的具体实现;同样Client调用,首先也得持有方法对象,然后将方法以及参数序列化后,和Server通信,交由Server具体实现,最后Server返回响应的结果。总结一下,RPC框架需要解决的问题:1. 网络通...原创 2019-10-11 12:19:50 · 4132 阅读 · 0 评论 -
6.824——实验一Part IV: Handling worker failures
//// schedule() starts and waits for all tasks in the given phase (mapPhase// or reducePhase). the mapFiles argument holds the names of the files that// are the inputs to the map phase, one per map...原创 2019-10-07 20:55:35 · 252 阅读 · 0 评论 -
6.824——实验一Part III: Distributing MapReduce tasks
1.任务Your current implementation runs the map and reduce tasks one at a time. One of Map/Reduce’s biggest selling points is that it can automatically parallelize ordinary sequential code without any e...原创 2019-09-30 18:35:59 · 228 阅读 · 0 评论 -
操作系统——多线程同步互斥
1. 思维导图Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量、信号量和读写锁。下面是思维导图:2. 各种解决方法的比较从上面可以看出,在Linux内核中有互斥锁、条件变量、读写锁、信号量4种机制用于解决线程间的同步问题,那这四种机制有何区别?2.1 互斥锁互斥量有两种状态–解锁和加锁。当一个线程(或进程)需要访问临界区时,它调用互斥锁。如果该互斥量当前是解锁的(...原创 2019-09-28 14:39:19 · 1012 阅读 · 0 评论 -
Linux网络编程——socket详解
1. socket数据报和流式套接字的工作过程2.socket流程2.1 创建socketint socket (int domain, int type, int protocol);domain:表示此socket的通信域(协议族),决定此socket到底是用于哪个域中的,网络PC间通信还是本地PC不同进程的通信等比如,AF_UNIX,表示本地通信,其具体的绑定形式为...原创 2019-09-18 16:03:58 · 435 阅读 · 0 评论 -
6.824——实验一Part II: Single-worker word count
这部分很简单,前面我们是调用的代码已经写好的mapF函数和reduceF,所以这一部分就相当于要我们自己实现自定义的map和reduce函数,map函数用来生成键值对序列,reduce函数用来统计词频。map函数func mapF(filename string, contents string) []mapreduce.KeyValue { // Your code here (Par...原创 2019-09-17 12:08:20 · 198 阅读 · 0 评论 -
6.824——实验一Part I: Map/Reduce input and output
这一部分实验主要就是完成map原始文件(input)到中间文件(intermediateFile),然后reduce中间文件到输出文件(output)1.doMapfunc doMap( jobName string, // the name of the MapReduce job mapTask int, // which map task this is inFile string...原创 2019-09-17 09:36:41 · 294 阅读 · 0 评论 -
分布式——MapReduce
1.总述我们知道分布式的主要作用是拆分任务,分发给集群中的pc来并行处理。对于这个功能而言,于是引起了如下几个问题或者说分布式系统需要实现的几个功能点:如何分发任务——那必然设计到多机通讯的RPC功能如何处理高并发场景下的并行计算——那必然设计到并发控制、负载均衡、多线程等如何面临子任务失败的问题——那必然涉及到复制容错的实现如何处理大批量数据——大数据下,内存肯定存不下,必然涉及到存...原创 2019-09-12 17:45:47 · 439 阅读 · 0 评论