- 博客(36)
- 资源 (9)
- 收藏
- 关注
原创 Druid大数据实时处理的开源分布式系统——Coordinator
Druid技术笔记整理第4篇,关于Druid CoordinatorCoordinator 主要完成如下功能:1. loading new segments2. dropping outdated segments3. managing segment replication4. balancing segment loadCoordin
2017-10-23 11:45:05
1499
2
原创 Druid大数据实时处理的开源分布式系统——Broker
第三篇,关于Druid的Broker节点Broker节点接收来自外部客户端的查询,并将这些查询转发到Realtime和Historical节点。当Broker节点收到结果,它们将合并这些结果并将它们返回给调用者。由于了解拓扑,Broker节点使用Zookeeper来确定哪些Realtime和Historical节点的存在。Broker 主要完成如下功能:1. Forward
2017-10-23 11:38:12
2167
原创 Druid大数据实时处理的开源分布式系统——Historical Node
最近开始整理有关Druid的技术知识。以下是第二篇关于Historical Node。Historical 主要完成如下功能:1. Loading and ServingSegments2. Loading and ServingSegments From CacheHistorical Node的职责单一,就是负责加载Druid中非实时窗口内且满足加载规则的所
2017-10-23 11:25:10
1289
原创 关于高并发支付、秒杀的一些设计思路
于高并发支付、秒杀的一些设计思路 一、问题描述高并发支付和秒杀的场景有很多,Amazon黑色星期五、天猫双11促销、京东618等情况都是如此。假如Amazon某件低价商品只有100个,库存也就是这100份,不会再变了。在00:00秒杀开抢的那一刻,会涌入非常多的流量进程查询(Read)和下单支付(Write)操作。这就是一个非常典型的秒杀支付场景。 由于支付业务开发中,和钱
2017-10-22 14:02:42
6661
原创 Druid大数据实时处理的开源分布式系统——介绍
AbstractDruid 是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。以下将详细阐述Druid的架构,如何支持快速聚合、灵活的过滤、和低延迟数据导入。1. 介绍Druid是一个用于大数据实时查询和分析的高容错、高性能
2017-10-22 13:13:20
5487
原创 Flink新一代流式计算框架的体系架构及应用
近期在海数据社区的组织下,做了一次flink的技术分享,现在将技术分享的ppt和会议纪要做一个link。https://www.hibigdata.cn/a/info/1/201.html
2017-10-22 13:04:22
1638
原创 原生Quartz 使用与配置
内容列表使用流来遍历集合。从集合或数组创建流。聚合流中的值。1. 使用流来遍历集合简介:Java的集合框架,如List和Map接口及Arraylist和HashMap类,让我们很容易地管理有序和无序集合。集合框架自引入的第一天起就在 持续的改进。在Java SE 8中,我们可以通过流的API来管理、遍历和聚合集合。一个基于流的集合
2015-10-16 17:04:01
921
原创 Java中的static关键字解析
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。Web负载均衡Web负载均衡(Load Balancing),简单地说就是给我们的服务
2015-10-16 16:58:23
1443
3
转载 Java线程池架构原理和源码解析(ThreadPoolExecutor)
使用Executors最常用的莫过于是使用:Executors.newFixedThreadPool(int)这个方法,因为它既可以限制数量,而且线程用完后不会一直被cache住;那么就通过它来看看源码,回过头来再看其他构造方法的区别:在《java之JUC系列-外部Tools》文章中提到了构造方法,为了和本文对接,再贴下代码:public static Execut
2015-10-16 16:52:26
535
原创 Timer定时任务
1. kingshard的应用场景现在很多互联网公司还是在大量使用MySQL来存储各种类型的关系型数据。随着访问量和数据量的增长,开发者不得不考虑一些MySQL相关的新问题:读写分离问题。由于前端应用访问量增加,单台MySQL不足以支撑整个系统的写入和查询操作。这时候,我们不得不将一些耗时的查询操作分散到多个slave上。单表容量问题。如果在系统设计之初,没有考
2015-10-16 16:48:37
1015
转载 Quartz集群配置与原理解析
概述日志技术为产品的质量和服务提供了重要的支撑。JDK 在 1.4 版本以后加入了日志机制,为 Java 开发人员提供了便利。但这种日志机制是基于静态日志级别的,也就是在程序运行前就需设定下来要打印的日志级别,这样就会带来一些不便。在 JDK 提供的日志功能中,日志级别被细化为 9 级,用以区分不同日志的用途,用来记录一个错误,或者记录正常运行的信息,又或是记录详细的调
2015-10-16 16:45:19
1263
1
原创 Heron 新一代流处理框架详解
最近公司需要开发新的流式ETL框架,我负责调研和测试Storm/Heron框架。Storm已经是非常成熟的流式处理框架了,在很多公司都在用,但是它在设计上也有诸多诟病,于是Twiter又开发了新的框架来代替Strom,这就是Strom2.0的Heron框架。 既然是要深入研究一个新的框架,于是我这花了一个星期将Heron和Strom的官方文档翻译了一遍,以及一篇非常重要
2015-10-16 16:36:44
2682
1
原创 mysql大数据量下的操作以及优化
一、为什么要迁移MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。生产环境中,有以下情况需要做迁移工作,如下:1、磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺;
2015-10-16 16:34:51
4325
原创 mysql的锁机制总结
缓存机制在我们的实际研发工作中,被极其广泛地应用,通过这些缓存机制来提升系统交互的效率。简单的总结来说,就是在两个环节或者系统之间,会引入一个cache/buffer做为提升整体效率的角色。而 有趣的是,这种缓存机制令人惊奇并且优美的遵循着“几何分形”的规律,也就是几何分形学中的“自相似性”:从整体上看遵循某种组成规律或者特性,同时从每 一个局部看,仍然遵循某种组成的规律或者特性。我们的这
2015-10-16 16:19:36
610
转载 如何用消息系统避免分布式事务
HashMap是一种用哈希值来存储和查找键值对(key-value pair,也称作entry)的一种数据结构。为了正确使用HashMap,选择恰当的Key是非常重要的。Key在HashMap里是不可重复的。1、什么是可变对象可变对象是指创建后自身状态能改变的对象。换句话说,可变对象是该对象在创建后它的哈希值可能被改变。在下面的代码中,对象MutableKey的键在
2015-10-16 16:13:15
514
转载 系统分布式情况下最终一致性方案梳理
前言目前的应用系统,不管是企业级应用还是互联网应用,最终数据的一致性是每个应用系统都要面临的问题,随着分布式的逐渐普及,数据一致性更加艰难,但是也很难有银弹的解决方案,也并不是引入特定的中间件或者特定的开源框架能够解决的,更多的还是看业务场景,根据场景来给出解决方案。根据笔者最近几年的了解,总结了几个点,更多的应用系统在编码的时候,更加关注数据的一致性,这样系统才是健壮的。基础
2015-10-16 16:05:54
930
转载 分布式系统的事务处理
当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通
2015-10-16 16:03:27
619
原创 Mongodb Cluster
高吞吐量系统举一个例子,我们做项目需要安排计划,每一个模块可以由多人同时并行做多项任务,也可以一个人或者多个人串行工作,但始终会有一条关键路径,这条路径就是项目的工期。系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间。关键路径由 CPU 运算、IO、外部系统响应等等组成。对于一个系统的用户来说,从用户点击一个按钮、链接或发出一条指令开始,到系统
2015-10-12 17:27:37
1582
转载 每秒处理10万订单的支付架构
抢购业务介绍抢购、闪购,从国外风靡后,国内各类网站都开始做相似的业务,我们耳熟能详的唯品会、淘宝、京东都有这类业务。抢购,更多出现在电商网站。那么,今天和大家一起学习下抢购业务形态的业务架构设计。我们常见的抢购业务分两种: 限时抢购、限量抢购,我简单分了下这些case,如下图:想必小米的抢购运营的最火爆了,每发一款新品,都限量发售,每次搞的大家心里痒痒的。记得之
2015-09-21 14:45:38
7361
原创 Redis学习笔记
根据公司redis的使用经验,把自己的一些理解总结成笔记。分布式系统:其实就是有多个数据库,需要进行垮裤操作的分布式应用。分布式分系统为何产生:第一,比如互联网环境的应用系统,业务需求复杂,必须进行系统级别的垂直拆分,保证各个业务的业务清晰,各自部署对外提供服务。第二,针对的用户群体广泛,就必然存在着高并发的问题,就会给我们单个节点(物理机器)的服务器造成非
2015-09-09 13:31:32
1299
转载 全文检索框架Lucene——Demo应用
前面两篇博文介绍了Lucene的原理思想和架构,这篇博文就写一下实际开发中如何使用Lucene,下面先用一个最简单的例子描述一下。1. 建立索引为了简单起见,我们下面为一些字符串创建内存索引:1234567891011StandardAna
2015-09-06 17:14:27
5674
转载 全文检索框架Lucene——架构
Lucene总的来说是:一个高效的,可扩展的,全文检索库。全部用Java实现,无须配置。仅支持纯文本文件的索引(Indexing)和搜索(Search)。不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。在Lucene in action中,Lucene 的构架和过程如下图,说明Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜
2015-09-06 16:28:19
2323
转载 全文检索框架Lucene——原理
一、总论根据http://lucene.apache.org/java/docs/index.html 定义:Lucene 是一个高效的,基于Java 的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据 和非结构化数据 。结构化数据: 指具
2015-09-06 16:26:18
5738
原创 分布式系统中的ID生成策略
HTTP 协议是所有web开发的基础,现在来总结一些HTTP中经常被混淆的知识点。1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且
2015-09-06 10:19:29
1160
原创 Rest API Design
本人最近负责Zuora Rest API的设计工作,总结了一下Restful设计的规范。1. 给API加上版本API版本应该是必备的。这样API不会随时间过时。一种方法是把版本放到URL里(/api/v1...)另一个巧妙的花招是使用 Accept HTTP header,来传递需要的版本,正如github所做的。(https://developer.github.
2015-08-31 23:21:43
861
原创 Mysql Table Partition (表分区)
大纲微博平台主要负责微博基础功能。接下来将会介绍平台的作用,以及服务提供的形式平台Web服务的部署平台Web框架简介背景目前整体架构大体上分为三层展现层:手机端,主站和第三方应用,承担相关业务的前端展示适配层:负责服务端和多个展示端的接口适配服务层:提供基础功能服务,包括Feed服务,用户关系,
2015-08-31 23:15:58
3335
原创 Java并发:synchronized
Java并发:synchronized的使用一.线程安全 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、 一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题: 由于每个线程执行的过程是不可控的,所以很可能导致最终的结果与
2015-08-31 23:13:36
522
原创 Java并发:Lock
Java并发:Lock一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。但是有严重缺陷 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1)获取锁的线程执
2015-08-31 23:08:54
591
原创 Kafka史上最详细原理总结
KafkaKafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Li
2015-08-31 23:04:51
61807
26
原创 传统Active MQ与大数据下的分布式Kafka
本人在Zuora工作的时候,几乎所有的异步业务逻辑都使用ActiveMQ,对AMQ也算颇为熟悉。现如今每天和Kafka打交道,对kafka也算驾驭的不错。现在基于这两者做个小比较。首先,Active MQ与Kafka的相同点只有一个,就是都是消息中间件。其他没有任何相同点。关于consumeActive mq是完全遵循JMS标准的。amq无论在standal
2015-08-31 22:58:39
3433
原创 Timer定时任务与其缺陷
微博作为当今中国最大的社交媒体平台,每天都有上亿人访问。而Feed作为微博最为核心的功能,每天有高达数十亿的请求,高峰期每秒的请求量上万。如何设计高可用的Feed系统,来应对如此高并发的访问,极具挑战。下面,我们将具体探讨微博Feed系统的架构,希望通过这次讲解,大家能够掌握微博Feed系统架构的基本知识。
2015-08-31 22:42:16
1233
原创 OGNL使用详解一:原理与常用语法方式
OGNL使用详解一:原理与常用语法方式 OGNL:Object-Graph Navigation Language,一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 以上关于OGNL
2014-05-11 23:36:01
1374
原创 Google Custom Search API使用详解
最近工作不是很忙,利用业余时间学习了google的文档。Google对外提供的API功能十分强大,由于篇幅有限,这里仅说一下Google Custom Search API。这个api提供了搜索的功能,可以搜索图片和文字信息,并以Json的形式返回结果。我们在实际开发中无需引入任何Jar包,仅需调用google的服务即可,非常的好用,下面我会以一个demo项目的形式。首先Google的东西
2014-03-30 22:08:35
17292
20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人