flashflight的专栏

was a coder, is a coder, to be a coder!

ZooKeeper源码解析(六):ZooKeeper的三种选举算法

zookeeper中有三种选举算法,分别是LeaderElection,FastLeaderElection,AuthLeaderElection, FastLeaderElection和AuthLeaderElection是类似的选举算法,唯一区别是后者加入了认证信息, FastLeader...

2017-05-03 00:52:13

阅读数 2855

评论数 0

开发一款开源爬虫框架系列(六):爬虫分布式化RPC

    最近终于有部分时间继续开发爬虫,主要的任务是客户端和服务器端分离,这就涉及到远程调用的问题,所以研究了RPC,主要对象是Hessian、JMI、Dubbo、Thrift。进而想用几篇博文分享一下几种远程调用协议的一些东西,以后再接着聊爬虫。有兴趣可以访问我的爬虫项目:https://git...

2018-05-22 13:38:56

阅读数 279

评论数 0

Lombok 安装、入门 - 消除冗长的 java 代码

转载自:http://www.blogjava.net/fancydeepin/archive/2012/07/12/lombok.html 前言:     逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下。     lombok 提供了简单的注解的形式来帮助我们简化消除一...

2017-09-12 14:05:55

阅读数 332

评论数 0

微服务架构二三事:总论

以前工作中基于dubbo的SOA架构用得比较多,现在微服务概念的兴起,尤其是Spring Boot+Spring Cloud的兴起使我产生了研究一下微服务架构的兴趣(与SOA)对比,总体上感觉微服务其实就是SOA的一个特别版,它更强调REST风格(HTTP+JSON),更强调业务的细分和接口单一职...

2017-08-10 01:09:52

阅读数 620

评论数 0

读书笔记:分布式系统系统与概念(图灵丛书)

书的第一章作者介绍了分布式系统的概念,分布在网络的不同组件并相互传递消息协调的系统,其特征是组件的并发性(这是说可以很多进程或线程可以同时运行,充分利用硬件资源)、缺乏全局时钟(网络上没有一个共有的时钟来同步不同节点上的操作)、故障的独立(故障具有隔离性)。然后讲了分布式系统的例子,以及趋势包括分...

2017-07-30 17:06:50

阅读数 538

评论数 1

《微服务架构与实践》读书笔记

这本书主要回答了关于微服务的三个问题:微服务怎么来的,微服务是什么样的,微服务怎么做的。      第一部分介绍了单体架构和微服务架构的区别,单体架构易于开发、测试、部署、水平扩展,微服务架构优势在于易于扩展、持续交付部署能力、进程隔离有效提升鲁棒性、对新人的培养成本更低,同时它也带来了降低系统...

2017-07-17 00:45:50

阅读数 434

评论数 0

ZooKeeper源码解析(五):server端如何运行

server的启动机制: class ZooKeeperServerMain.runFromConfig 创建了连接工厂后开始启动server。 class NIOServerCnxnFactory.startup 其中start()函数会启动一个acceptThre...

2017-05-03 00:45:53

阅读数 668

评论数 0

ZooKeeper源码解析(四):client如何和server连接

客户端使用ClientCnxn和服务器端的ServerCnxn连接 客户端 sendThread负责向集群服务器发送请求,我们来看看它做了什么? sendThread的run方法的关键代码: 我们再来看看eventThread的run方法 通过以上的分析我们不难发现客户端...

2017-05-03 00:40:32

阅读数 981

评论数 0

ZooKeeper源码解析(三):Watcher如何监控ZNode

Watcher是一个接口类,有一个接口方法: 由用户来实现,后续我们会讲它如何配合ZooKeeper和ClientCnxn来监控节点。上图ZooKeeper中的watchManager实际上是ZKWatchManager,它实现了ClientWatchManager,内部有三个主要成员变...

2017-04-27 23:57:12

阅读数 890

评论数 0

ZooKeeper源码解析(二):用户如何和ZooKeeper交互

zookeeper涵盖的方法很多此处捡重要的说。 首先是构造函数,这是我们使用zookeeper时第一个要使用到的方法 ZooKeeper类重载了多个构造函数,上面的仅仅是最简单的一个。 参数主要由连接字符串,session超时时间设置,监听器watcher,只读属性。其中的watcher能...

2017-04-27 23:47:48

阅读数 811

评论数 0

ZooKeeper源码解析(一):ZooKeeper概述

zk主要的架构图 zk主要的包结构 如上图所示,zk大概涵盖了以下的包以及功能: Admin包: 它里面只有一个继承了ZooKeeper类的ZooKeeperAdmin类,用以承担管理zk集群的任 务,例如重新注册集群 Cli包:接收并执行用户输入的各种命令 ...

2017-04-27 01:00:55

阅读数 2097

评论数 0

python3.5+django1.10:selenium.common.exceptions.WebDriverException->moveto did not match a known com

在运行webdriver调用ActionChains(driver).click_and_hold(on_element=element).perform()时抛出selenium.common.exceptions.WebDriverException异常,firefox版本51.0.1,在st...

2017-02-17 11:32:24

阅读数 1219

评论数 0

用golang写的一个链表

近期专门研究了一下golang语言,这个语言还比较新,语法上结合了很多优点,比如动态绑定,多返回值,支持函数对象,如果有C/C++,java,js或python语言基础的朋友应该能很快能迁移到这个新语言上来,goroutine机制帮助我们能更好的写并发程序,总之,golang确实是很有前途的语言,...

2017-02-14 14:26:25

阅读数 2511

评论数 0

开发一款开源爬虫框架系列(五):爬虫架构的一些新思路

爬虫开源项目地址:http://git.oschina.net/coliza/MongooCrawler     以前的思路是由客户端完成所有的下载网页,解析等功能,服务器端负责从内存队列中拿到数据并将获取的对象输出到存储层。现在发现一个很麻烦 的问题,不同的网站需要定制不同的抓取策略,如果部署爬...

2016-11-25 01:34:49

阅读数 2397

评论数 0

开发一款开源爬虫框架系列(四):设计fetcher

这一期我们来聊聊怎么设计fetcher,既然说到设计,我们首先要明确设计的目的。fetcher的主要功能是根据传入的url获取网页内容,同时我们还面临如下一些问题: 1、使用什么工具发出http请求下载网页? 【答】使用最新的httpclient 2、怎么提高下载的性能? 【答】因为性能消耗主要在...

2016-11-11 02:01:30

阅读数 826

评论数 0

开发一款开源爬虫框架系列(三):聊聊并发包中的队列(Queue)

说到队列尤其是阻塞队列,不得不说jdk的并发包(java.util.concurrent)中的相关数据结构,今天我们就来对java中的队列做一个总结。 1、Queue 队列接口,定义了队列基本的接口方法    前两个方法是往队列塞数据,在队列空间不足的情况下add会抛出异常,而offer会返回...

2016-11-04 01:32:58

阅读数 1156

评论数 0

开发一款开源爬虫框架系列(二):设计爬虫架构

既然是构建分布式爬虫架构,分布式说明爬虫能在多台机器同时运行,所以一定是多客户端的,多客户端就有可能运行在不同的操作系统不同的语言环境,所以我们让它暂时支持java和scala两种依赖jvm的语言,不用区分平台。提到客户端也一定意味着有服务端的存在,服务端和客户端使用netty进行通讯。那么问题来...

2016-09-09 14:18:40

阅读数 2292

评论数 0

开发一款开源爬虫框架系列(一):分析nutch,scrapy的爬虫设计

nutch的架构分析    injector首次会从url.txt中取出url然后将url分配给hadoop中的不同job进行url标准化和校验,并构造对象。generator会利用hadoop中不同的job进行url过滤、打分和计算hash值,然后将信息存入ParseSegment,fetch...

2016-09-07 01:48:24

阅读数 3288

评论数 0

数据库中间件Mycat源码解析(四):Mycat的心跳管理

MyCat的服务端在启动时会执行node.startHeartbeat()去设置每个node的heartbeat的状态为DBHeartbeat.OK_STATUS,然后针对每个node节点启动一个线程去对对应的node发送heartbeat sql(比如select user())进行心跳检测。 ...

2016-08-31 00:53:07

阅读数 2618

评论数 0

数据库中间件Mycat源码解析(三):Mycat的SQL解析和路由

mycat对sql的解析分为两部分,一个是普通sql,另一个是PreparedStatment。 首先解析普通sql,sql从客户端发过来后server接收后会调用FrontendCommandHandler的handle方法,这个方法会调用FrontendConnection的query方法,接...

2016-08-29 00:35:55

阅读数 8841

评论数 -1

提示
确定要删除当前文章?
取消 删除
关闭
关闭