摘要:1、背景 Flink:1.4.0+ Kakfa:0.11+ 使用场景:flink的source和sink都是kafka,这里的source和sink不限于kafka,可以使用任何一种提供了类似协调机制(2PC)的sink/source。 关键点: Kafka source支持重新消费,手动commi 阅读全文
posted @ 2020-07-21 16:17 阿凡卢 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1、背景 日志系统接入的日志种类多、格式复杂多样,主流的有以下几种日志: filebeat采集到的文本日志,格式多样 winbeat采集到的操作系统日志 设备上报到logstash的syslog日志 接入到kafka的业务日志 以上通过各种渠道接入的日志,存在2个主要的问题: 格式不统一、不规范、标 阅读全文
posted @ 2020-06-27 12:33 阿凡卢 阅读(820) 评论(8) 推荐(1) 编辑
摘要:Kafka 0.11.x版本(对应 Confluent Platform 3.3),该版本引入了exactly-once语义。 精确一次确实很难实现(Exactly-once is a really hard problem) Mathias Verraes说,分布式系统中最难解决的两个问题是: 消 阅读全文
posted @ 2020-06-05 11:00 阿凡卢 阅读(339) 评论(0) 推荐(0) 编辑
摘要:背景 我们的系统基本都是前后端分离架构,后端服务主要框架是基于java的spring boot,为了快速的构建新项目,将平时做后端的东西抽出一个开发脚手架。 技术栈 java 8 spring-boot 2.2.7.RELEASE swagger 2.9.2 guava 29.0-jre mybai 阅读全文
posted @ 2020-06-04 10:02 阿凡卢 阅读(292) 评论(0) 推荐(0) 编辑
摘要:LSM简介 Log Structured Merge Tree,下面简称 LSM。2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase, Apache 阅读全文
posted @ 2020-06-01 14:29 阿凡卢 阅读(218) 评论(0) 推荐(0) 编辑
摘要:简单介绍下flink、spark和storm的backpressure机制。 1、storm 反压 实现原理 Storm 是通过监控 Bolt 中的接收队列负载情况来实现反压: 如果一个executor发现recv queue负载超过高水位值(high watermark)就会通知反压线程(back 阅读全文
posted @ 2020-05-29 14:51 阿凡卢 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一、应用场景 在需求开发过程中,我们经常会遇到一些类似下面的场景:1)外卖订单超过15分钟未支付,自动取消2)使用抢票软件订到车票后,1小时内未支付,自动取消3)待处理申请超时1天,通知审核人员经理,超时2天通知审核人员总监4)客户预定自如房子后,24小时内未支付,房源自动释放 那么针对这类场景的需 阅读全文
posted @ 2020-05-14 11:00 阿凡卢 阅读(282) 评论(0) 推荐(0) 编辑
摘要:原理 一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》中 阅读全文
posted @ 2020-03-26 13:06 阿凡卢 阅读(129) 评论(0) 推荐(0) 编辑
摘要:如何提高 Flink 任务性能 一、Operator Chain 为了更高效地分布式执行,Flink 会尽可能地将 operator 的 subtask 链接(chain)在一起形成 task,每个 task 在一个线程中执行。将 operators 链接成 task 是非常有效的优化:它能减少线程 阅读全文
posted @ 2019-12-29 13:06 阿凡卢 阅读(1590) 评论(0) 推荐(1) 编辑
摘要:一、简介 开源流式处理系统在不断地发展,从一开始只关注低延迟指标到现在兼顾延迟、吞吐与结果准确性,在发展过程中解决了很多问题,编程API的易用性也在不断地提高。本文介绍一下 Flink 中的核心概念,这些概念是学习与使用 Flink 十分重要的基础知识,在后续开发 Flink 程序过程中将会帮助开发 阅读全文
posted @ 2019-12-14 16:21 阿凡卢 阅读(417) 评论(0) 推荐(0) 编辑
摘要:一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per 阅读全文
posted @ 2019-11-03 18:12 阿凡卢 阅读(744) 评论(0) 推荐(0) 编辑
摘要:本文简单介绍下后端服务开发中常用的一些性能优化策略。 1、代码 优化代码实现是第一位的,特别是一些不合理的复杂实现。如果结合需求能从代码实现的角度,使用更高效的算法或方案实现,进而解决问题,那是最简单有效的。 2、数据库 数据库的优化,总体上有3个方面: 1) SQL调优:除了掌握SQL基本的优化手 阅读全文
posted @ 2019-10-28 20:01 阿凡卢 阅读(1888) 评论(0) 推荐(0) 编辑
摘要:什么是Apache Storm Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。通过Storm可以并行地对实 阅读全文
posted @ 2019-07-07 13:47 阿凡卢 阅读(472) 评论(0) 推荐(0) 编辑
摘要:版本配置: ES版本:6.2.4 OS内存64G。 一、安装部署: 1.ES jvm内存31G,预留一半的物理内存给文件系统缓存(file system cache)。 2.禁止内存交换: 修改/etc/sysctl.conf 中 vm.swappiness = 1 elasticsearch.ym 阅读全文
posted @ 2019-04-20 20:24 阿凡卢 阅读(1251) 评论(0) 推荐(1) 编辑
摘要:1、简介 Elasticsearch在5.3版本中引入了Cross Cluster Search(CCS 跨集群搜索)功能,用来替换掉要被废弃的Tribe Node。类似Tribe Node,Cross Cluster Search用来实现跨集群的数据搜索。 2、配置Cross Cluster Se 阅读全文
posted @ 2018-10-28 14:00 阿凡卢 阅读(3625) 评论(0) 推荐(0) 编辑
摘要:一、索引管理 1、 创建索引 PUT test-2019-03 { "settings": { "index": { "number_of_shards": 10, "number_of_replicas": 1, "routing": { "allocation": { "include": { 阅读全文
posted @ 2018-08-25 10:42 阿凡卢 阅读(2385) 评论(0) 推荐(0) 编辑
摘要:ES版本:6.2.4 集群环境:7台机器,每台部署一个master节点。其中3台部署2个hot节点,另外4台部署2个warm节点。共21个节点。 1. 挂盘 按实际情况分盘,一个机子上的2个data节点均分数据磁盘。 通过UUID挂盘,以防止以后换盘,盘符移动(这里拿3个盘举例)。 2. 创建用户, 阅读全文
posted @ 2018-08-11 15:36 阿凡卢 阅读(1262) 评论(1) 推荐(0) 编辑
摘要:一 分布式系统特点 现今互联网界,分布式系统和微服务架构盛行。业界著名的CAP理论也告诉我们,在设计和实现一个分布式系统时,需要将数据一致性、系统可用性和分区容忍性放在一起考虑。 1、CAP理论 在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Par 阅读全文
posted @ 2018-04-14 17:09 阿凡卢 阅读(12051) 评论(1) 推荐(2) 编辑
摘要:背景 前几个月,使用Vertx重构了公司的一个子系统,该系统负责公司核心数据subscriber的采集、处理、存储和搜索。这里介绍下重构该系统时的一些关键点。 架构 重构前系统部署图: 重构前系统主要有2部分组成,这2部分都会对Subscriber数据操作: Java APP: 是个定时任务触发的A 阅读全文
posted @ 2018-04-10 17:09 阿凡卢 阅读(1386) 评论(0) 推荐(0) 编辑
摘要:什么是ThreadLocal变量 ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意: 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 阅读全文
posted @ 2018-04-08 14:29 阿凡卢 阅读(30770) 评论(7) 推荐(10) 编辑