Kafka

把 4个消息队列都拉到一个群里后,他们吵起来了

时光毁灭记忆、已成空白 提交于 2020-10-20 04:38:06
从事软件开发的同学,一定都听过或用过消息队列,比如 RabbitMQ,Kafka。消息队列简单来说就是生产者将很多消息放到一个队列结构中,由其他消费者来消费。想了解更多 队列 的知识,看下我之前写的 18 个 Queue 的文章,保证整的明明白白。 传送门: 45张图庖丁解牛18种Queue 。 那如果把常见的四大消息队列拉到一个群里,会碰出哪些火花呢? 被嫌弃 四大队列被 中间件大队长 拉到了一个群里面。 群名:悟空聊架构群。 成员数:25 个。 管理员:中间件大队长。 群主:神秘悟空哥。 大家来感受下他们的聊天界面吧~ 👇👇👇 群聊画面 1 RabbitMQ 单独找中间件大队长聊天的画面。 单聊画面 1 涉及的故事: Erlang 是啥? 并非一门新语言,出现于 1987 年。并不是面向对象语言。 函数式编程,基于进程并发,高并发、分布式是它的优势。 由爱立信制造商专门为通信应用设计,在国内主要是游戏领域用到。 Erlang 为啥会被其他队列嫌弃? 因为 RocketMQ、ActiveMQ 都是用 Java 实现的,Kafka 是用 Scale 和 Java 实现的,这三种消息队列从语言实现上都有些类似。 在国内现如今超流行的 Java 的技术生态中,懂 Java 又懂 Erlang 的就比较少了,愿意花时间和精力在 Erlang 上面的就更少了。 快和慢 群聊画面 2

kafka中的acks参数

社会主义新天地 提交于 2020-10-19 10:26:22
首先acks参数,是在kafkaProducer,也就是在生产者客户端里设置的也就是说,你往kafka写东西的时候,就可以设置这个参数。 这个参数实际上有三种值可以设置,分别是0,1,和all. 第一种选择是把参数设置成0 我的kafkaProducer在客户端,只要把消息发送出去,不管那条数据有没有在哪怕Partition Leader上落到磁盘,就不管他了,直接认为这个消息发送成功。 如果你采用这种设置的话,那么你必须注意的一点是,可能你发送出去的消息还在半路。结果呢,Partition Leader所在Broker就直接挂了,然后结果你的客户端还认为消息发送成功了,此时就会导致这条消息就丢失了。 第二种选择是设置acks=1 只要Partition Leader接收到消息而且写入本地磁盘了,就认为成功了,不管其他的Follower有没有同步过去这条消息了。 这种设置其实是kafka默认的设置方式 也就是说默认情况下,要是不设置这个参数,只要Partition Leader写成功就算成功。 但是这里有一个问题,万一Partition Leader刚刚接收到消息,Follower还没来得及同步过去,结果Leader所在的broker宕机了,此时也会导致这条消息丢失,因为人家客户端已经认为发送成功了。 最后一种情况就是设置为all Partition Leader接收到消息之后

廖雪峰大数据团队研发的"开车宝典"再次曝光,手慢删!

心不动则不痛 提交于 2020-10-18 15:30:43
想什么呢!是廖雪峰老师送福利! 众所周知,大数据改变了我们的生产生活,目前已被广泛应用于电商、交通、工业、金融、政务、医疗等行业,而大数据工程师也成为各行业炙手可热的岗位 。 但同样地大数据工程师技能要求也不低,不仅要熟练 Hadoop、Presto 及 Spark、Storm 等核心框架,还要会搭建系统架构,解决实际业务问题等。但不少初入大数据的人往往摸不着头脑,对 Spark、Flume、Hbase、Kafka 等框架底层源码更是一知半解,更不要说提升系统性开发能力,成为精通的高手了。 因此,今天给大家推荐一个 免费 福利—— 廖雪峰 最新研磨的 实战宝典 《 如何将大数据开发做到优秀 》 首次开放! 内容出自开课吧 vip 课程 “大数据高级开发实战班” ,为帮助大家特殊时期职场走得更加顺畅,现决定将这套价值 788元 的体系化学习宝典免费送给粉丝朋友。 如果你是刚转行大数据不久的 Java、PHP 等程序员或 入行新人 ,这套学习宝典能帮你迅速摆脱工作困扰,巩固掌握优秀工程师的必会技能: 缺乏工作经验,想短时期内接触学习大数据开发项目; 接触不到核心技术,不懂底层源码,不会搭建系统架构,提升太难; 业务逻辑欠缺,想丰富实战经验,进大厂冲击高薪。 一、高薪大数据工程师必备——实战项目经验 本部分选取 当下各企业应用最广的 项目 ,基于 大厂脱敏数据 ,以 Spark

半夜给老婆讲微服务架构,她听完了之后连叹“别停!”

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-17 09:03:58
前言 最近几年,微服务可谓是大行其道。在业务模型不完善,超大规模流量的冲击的情况下,许多企业纷纷抛弃了传统的单体架构,拥抱微服务。这种模式具备独立开发、独立部署、可扩展性、可重用性的优点的同时,也带来这样一个问题:开发、运维的复杂性提高。有人感觉微服务越做越不方便管理。 然而,随着 Docker 容器技术和自动化运维等相关技术发展,微服务变得更容易维护。因此,未来微服务的发展只会越来越完善,成为将来大中型企业业务架构的发展方向。 但微服务架构包含了 N 多优化、N 多细节,对于一些 coding 的朋友,由于接触不到一线实战架构设计,眼看别人都在向微服务架构转型,自己却只能日复一日地重复造轮子。 最近整理了一套微服务实战文档,讲解很透彻。今天分享给大家。这份资料尤其适合以下人群: 1.没有用过微服务技术,只会用传统的 SSM 框架 2.用过 Spring Cloud、Dubbo等技术,但是只限于使用,遇到问题基本无法解决 3.从来没有系统学习微服务架构,觉得架构设计是遥不可及的 4.对于微服务技术有所了解,但尚没有设计高可用高并发的实践经历 看完这份文档你将获得哪些收获? 理解当下最火热的微服务架构原理及其开源框架; 触及一线大厂所配备的微服务核心技术内幕知识; 对照自己掌握知识点进行查漏补缺,帮助扫除知识盲区、重构知识体系。 此书籍具体内容有: 基础知识 微服务构建(Spring

基于PHP+Redis令牌桶限流

萝らか妹 提交于 2020-10-17 08:44:01
一 、场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1 分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100 次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。 服务接口的流量控制策略:分流、降级、限流等。本文讨论下限流策略,虽然降低了服务接口的访问频率和并发量,却换取服务接口和业务应用系统的高可用。 二、常用的限流算法 1、漏桶算法 漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.示意图如下: 可见这里有两个变量,一个是桶的大小,支持流量突发增多时可以存多少的水(burst),另一个是水桶漏洞的大小(rate)。 因为漏桶的漏出速率是固定的参数,所以,即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使流突发(burst)到端口速率.因此,漏桶算法对于存在突发特性的流量来说缺乏效率. 2、令牌桶算法 令牌桶算法(Token Bucket)和 Leaky Bucket 效果一样但方向相反的算法

奈学教育《大数据开发工程师》课程大纲

时光毁灭记忆、已成空白 提交于 2020-10-16 05:09:09
本课程针对企业不同数据规模技术方案进行讲解,紧贴企业热门需求,深入讲解企业级大数据技术的数据存储技术、数据采集技术、数据处理技术、任务调度技术等;课程针对知识点进行企业级案例式教学,理论结合实战,从0到1构建大数据生态技术的方方面面,内容涵盖大数据平台、Spark、Flink、OLAP等核心技术;用真实的企业级实时数仓项目、离线数仓项目、PB级实时用户行为分析系统、千亿级实时广告系统等多个大型项目,把大数据生态技术知识串连起来,让学员形成自己的技术栈,真正成为企业级的大数据开发工程师! 阶段一:小规模数据处理篇 第一单元 掌握Python基础语法 集合类型 条件,循环 文件操作 函数和函数式编程 面向对象 第二单元 掌握NumPy进行数据分析 NumPy基本使用 Numpy进阶知识 第三单元 掌握Pandas进行数据分析 Pandas基础知识 Series数据结构 DataFrame数据结构 综合案例演示 阶段二:中等规模数据处理篇 第四单元 掌握Elastichsearch核心设计 Elastichsearch总体架构设计 Elastichsearch核心流程分析 Elastichsearch核心概念详解 第五单元 掌握Elastichsearch API使用与调优 Elastichsearch语法详解 Elastichsearch容错原理剖析

实战解析耳听八方的Redis拓展应用——Stream,大厂腾飞不是梦

放肆的年华 提交于 2020-10-15 09:06:24
前言 Redis5.0 增加了很多新的特色功能。而 Redis5.0 最大的新特性就是多出了一个数据结构 Stream ,它是一个新的强大的支持多播的可持久化的消息队列,Redis Stream 狠狠地借鉴了 Kafka 的设计。 今天,咱们就来深度剖析Redis的拓展应用—— Stream 基本介绍 Redis Stream 的结构如上图所示,它有一个消息链表,将所有加入的消息都串起来,每个消息都有一个唯一的 ID 和对应的内容。消息是持久化的,Redis 重启后,内容还在。 每个 Stream 都有唯一的名称,它就是 Redis 的 key,在我们首次使用 xadd 指令追加消息时自动创建。 每个 Stream 都可以挂多个消费组,每个消费组会有个游标 last_delivered_id 在 Stream 数组之上往前移动,表示当前消费组已经消费到哪条消息了。每个消费组都有一个 Stream 内唯一的名称,消费组不会自动创建,它需要单独的指令 xgroup create 进行创建,需要指定 从 Stream 的某个消息 ID 开始消费,这个 ID 用来初始化 last_delivered_id 变量。 每个消费组 (Consumer Group) 的状态都是独立的,相互不受影响。也就是说同一份 Stream 内部的消息会被每个消费组都消费到。 同一个消费组 (Consumer

使用ogg实现oracle到mysql的数据传输

心已入冬 提交于 2020-10-15 07:19:55
​ 作者介绍 梁铭图, 新炬网络首席架构师,十多年数据库运维、数据库设计、数据治理以及系统规划建设经验,拥有Oracle OCM、Togaf企业架构师(鉴定级)、IBM CATE等认证,曾获dbaplus年度MVP以及华为云MVP等荣誉,并参与数据资产管理国家标准的编写工作。在数据库运维管理和架构设计、运维体系规划、数据资产管理方面有深入研究。 概述 Oracle GoldenGate,是由Oracle官方提供的用于解决异构数据环境中数据复制的一个商业工具。相比于其它迁移工具OGG的优势在于可以直接解析源端Oracle的redo log,因此能够实现在不需要对原表结构做太多调整的前提下完成数据实现同步,甚至可以将数据变化 实时抽取并推送到kafka等消息中间件。 本篇文章主要介绍如何使用OGG实现Oracle到MySQL数据的传输。 OGG逻辑架构 在OGG使用过程中主要涉及以下进程及文件: Manager进程: 需要源端跟目标端同时运行,主要作用是监控管理其它进程。 Extract进程: 运行在源端,主要是捕获数据的变化,负责全量、增量数据的抽取。 Trails文件: 临时存放在磁盘上的数据文件。 Data Pump进程: 运行在数据库源端,属于Extract进程的一个辅助进程。 Collector进程: 接收源端传输过来的数据变化,并写入本地Trail文件中。

大数据简介,技术体系分类整理

独自空忆成欢 提交于 2020-10-15 00:44:48
本文源码: GitHub·点这里 || GitEE·点这里 一、大数据简介 1、基础概念 大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据技术则主要用来解决海量数据的存储和分析。 2、特点分析 大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 3、发展过程 Google在2004年前后发表的三篇论文,分别是文件系统GFS、计算框架MapReduce、NoSQL数据库系统BigTable。海量数据文件,分析计算,并存储,确立了大数据的基本原理和思路。 天才程序员DougCutting,也是Lucene、Nutch项目发起人。根据Google论文原理初步实现类似GFS和MapReduce的功能,后来发展成为大名鼎鼎的Hadoop。 再后来,Hadoop经过高速的发展,已经形成一个生态体系,基于Hadoop之上,有实时计算,离线计算,NoSQL存储,数据分析,机器学习等一系列内容。 从这一系列事情发展看技术规律:Google业务实践中创造性的提出论文作为基础,业务的成长和需求,迫使技术不断更新换代。所以业务是技术不断发展的关键。 二、Hadoop框架

PB级大规模Elasticsearch集群运维与调优实践

别等时光非礼了梦想. 提交于 2020-10-14 21:57:04
导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析、结构化数据分析、全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与方法,希望与大家一同交流。文章作者:bellen,腾讯云大数据研发工程师。 ​ 一、背景 某中型互联网公司的游戏业务,使用了腾讯云的 Elasticsearch 产品,采用 ELK 架构存储业务日志。 因为游戏业务本身的日志数据量非常大(写入峰值在 100w qps ),在服务客户的几个月中,我们踩了不少坑。经过数次优化与调整,最后将客户的 ES 集群调整得比较稳定,避免了在业务高峰时客户集群的读写异常,并且降低了客户的资金成本和使用成本。 二、与客户的初次交锋 解决方案架构师A:bellen, XX公司要上线一款新游戏,日志存储决定用 ELK 架构,他们决定在 XX云和我们之间二选一,我们首先去他们公司和他们交流一下,争取拿下! bellen: 好,随时有空! 随后和架构师一起前往该公司,跟负责底层组件的运维部门的负责人进行沟通。 XX公司运维老大:不要讲你们的PPT了,先告诉我你们能给我们带来什么! bellen:呃,我们有很多优势,比如可以灵活扩缩容集群,还可以一键平滑升级集群版本,并且提供有跨机房容灾的集群从而实现高可用...... XX公司运维老大:你说的这些别的厂商也有