Kafka

冰眼冷链物流监控平台学习总结

前提是你 提交于 2020-09-29 08:37:51
冰眼冷链物流监控平台学习总结 采用的的主要技术有: netty、springboot、springcloud、 kafka、flink、redis、druid/ vue等 资料: https://pan.baidu.com/s/1KZf1Gj4-UGleJjWiLfStSw 提取码:8wyv 解决方案: 监控部分采用分布式微服务架构,同时针对海量物联网数据的统计和查询引入了专门的解决方案。 基于物联网及大数据实时计算技术.... 来源: oschina 链接: https://my.oschina.net/u/4351890/blog/4626607

消息队列之事务消息,RocketMQ 和 Kafka是如何做的?

放肆的年华 提交于 2020-09-29 07:03:24
作者 | 是Yes呀 责编 | 郑丽媛 来源 | yes的练级攻略(ID:yes_java ) 每个时代,都不会亏待会学习的人。 大家好,我是 yes。 今天我们来谈一谈消息队列的事务消息,一说起事务相信大家都不陌生,脑海里蹦出来的就是 ACID。 通常我们理解的事务就是为了一些更新操作要么都成功,要么都失败,不会有中间状态的产生,而 ACID 是一个严格的事务实现的定义,不过在单体系统时候一般都不会严格的遵循 ACID 的约束来实现事务,更别说分布式系统了。 分布式系统往往只能妥协到最终一致性 ,保证数据最终的完整性和一致性,主要原因就是实力不允许...因为可用性为王。 而且要保证完全版的事务实现代价很大,你想想要维护这么多系统的数据,不允许有中间状态数据可以被读取,所有的操作必须不可分割,这意味着一个事务的执行是阻塞的,资源是被长时间锁定的。 在高并发情况下资源被长时间的占用,就是致命的伤害,举一个有味道的例子,如厕高峰期,好了懂得都懂。 对了, ACID是什么还不太清楚的同学,赶紧去查一查,这里我就不展开说了。 分布式事务 那说到分布式事务,常见的有 2PC、TCC 和事务消息,这篇文章重点就是事务消息,不过 2PC 和 TCC 我稍微提一下。 2PC 2PC就是二阶段提交,分别有协调者和参与者两个角色,二阶段分别是准备阶段和提交阶段。

这可能是最中肯的Redis规范了

雨燕双飞 提交于 2020-09-28 00:00:11
来自:小姐姐味道 redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 业务数据分离 不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。 消息大小限制 由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。 连接数限制 连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机当机。请确保使用了正确的 Redis 客户端连接池配置。 缓存 Key

redis里通过命名空间存储缓存,根据结构生成树型

大兔子大兔子 提交于 2020-09-27 13:57:34
一般为了方便管理 redis 缓存,我们通过 : 来分隔不同的 key 来进行存储缓存,这样方便查看。 例如: game:upload_role:1000 game:member_info:2000 game:member_info:state_info:3000 上面的这种结构在 Redis Desktop Manager 中就会显示如下: 我们可以通过 keys 命令来获取 redis 里的所有 key。但这些 key 是没有层次的,如何生成? 只能通过 : 分隔符来处理各 key 的上下层关系。 代码如下: function relationCache($keys, &$index, &$index_tree) { $result = []; if ($keys) { foreach ($keys as $key) { $arr = explode(':', $key); $len = count($arr); for ($ix = 0; $ix < $len; $ix++) { $cur_key = implode(':', array_slice($arr, 0, $ix + 1)); if (!isset($index_tree[$cur_key])) { $index_tree[$cur_key] = $index++; $pid = 0; if ($ix >= 1)

2020年5月中旬面试总结,至今最全的Java程序员高频面试知识点解析笔记

旧时模样 提交于 2020-09-27 13:56:30
就目前大环境来看,跳槽成功的难度比往年高很多。总结一下面试的感受:无论一面还是二面,都很考验Java程序员的技术功底!! 最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java程序员高频面试解析及知识点体系笔记.pdf(实际上比预期多花了不少精力),包含 集合,JVM,并发编程、Spring,MyBatis,微服务,Redis,Dubbo,设计模式,数据结构,分布式等!,由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示每部分的目录和答案截图,完整学习文档在文末有免费领取方式! 这份Java面试解析和知识点体系文档内容包括: Java 篇主要包含 Java集合 Hashmap、JVM、GC、锁、多线程、并发、代理、NIO 等。 MySQL数据库主要包含索引、B+ 树、SQL 优化相关。 分布式存储篇主要包含 Redis 架构相关、MongDB 分布式中间件主要包含 Kafka,RabbitMQ相关面试题 微服务Spring Boot、Spring Cloud、Dubbo 篇。 系统架构设计篇,根据几个开放性题目来设计系统。 框架篇主要包含 Spring MyBatis、SpringMVC,netty与RPC 设计模式篇 数据结构与算法篇 相信它会给大家带来很多收获。 Java程序员高频面试解析及知识点体系笔记 JVM篇——JVM知识点体系笔记 JVM篇

Java Kafka producer send 发送数据到Kafka,可能在Kafka的topic中消费不到的原因

陌路散爱 提交于 2020-09-27 10:04:18
一般发送数据到Kafka,就是new一个producer,然后简单到send就好了,就可以在kafka里面看到数据了,可以使用命令行的消费模式,但是你在写测试代码的时候,想看看数据是否真的写到kafka服务器了的时候,就发现,额,好像数据没发送到kafka服务器上似的,代码也看似没问题哦。Java代码如下: private void produceOnce(String toTopic) { Properties conf = new Properties(); conf.setProperty(BOOTSTRAP_SERVERS_CONFIG, "192.168.1.191:9092"); conf.put(ACKS_CONFIG, "all"); conf.put(KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); conf.put(VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> producer = new KafkaProducer<>(conf); List

PHP设计模式之访问者模式(Visitor)代码实例大全(32)

回眸只為那壹抹淺笑 提交于 2020-09-26 04:55:57
目的 访问者模式可以让你将对象操作外包给其他对象。 这样做的最主要原因就是关注(数据结构和数据操作)分离。但是被访问的类必须定一个契约接受访问者。 (详见例子中 Role::accept 方法) 契约可以是一个抽象类也可以就是一个接口。在此情况下,每个访问者必须自行选择调用访问者的哪个方法。 UML图 ★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货 代码 RoleVisitorInterface.php <?php namespace DesignPatterns\Behavioral\Visitor; /** * 注意:访问者不能自行选择调用哪个方法, * 它是由 Visitee 决定的。 */ interface RoleVisitorInterface { public function visitUser(User $role); public function visitGroup(Group $role); } RoleVisitor.php <?php

打造高性能 Kafka队列

為{幸葍}努か 提交于 2020-09-26 01:49:05
目录 一、原理简述 二、Producer 原理 三、Producer 端参数详解 四、Kafka Server 基本原理 五、KafkaServer 主分区与副本数据同步原理 六、KafkaServer 零拷贝原理 七、KafkaServer Leader 选举 八、KafkaConsumer 原理 九、KafkaConsumer 参数详解 十、性能优化方案 一、原理简述 【1】 Producer 将消息进行分组分别发送到对应 leader 节点; 【2】 Leader 将消息写入本地 log ; 【3】 Followers 从 Leader pull 最新消息,写入 log 后向 Leader 发送 ack 确认; 【4】 Leader 收到所有 ISR 中的 Follower 节点的 ACK 后,增加 HW ,标记消息已确认全部备份完成,最后返回给 Producer 消息已提交成功; 【5】消费端从对应 Leader 节点 poll 最新消息并消费,消费完成后将最新的 offset 位置提交至 Topic 为 _consumer_offsets 的主节点中保存。 二、Producer 原理 初始化 KafkaProducer,会创建一个后台线程 KafkaThread ,会循环的判断缓存中的数据是否需要提交。同时会发送消息,主要指定 Topic和 Value,不建议指定

生产实践 | 基于 Flink 的短视频生产消费监控

梦想的初衷 提交于 2020-09-25 18:43:20
本文详细介绍了实时监控类指标的数据流转链路以及技术方案,大多数的实时监控类指标都可按照本文中的几种方案实现。 短视频生产消费监控 短视频带来了全新的传播场域和节目形态,小屏幕、快节奏成为行业潮流的同时,也催生了新的用户消费习惯,为创作者和商户带来收益。而多元化的短视频也可以为品牌方提供营销机遇。 其中对于垂类生态短视频的生产消费热点的监控分析目前成为了实时数据处理很常见的一个应用场景,比如对某个圈定的垂类生态下的视频生产或者视频消费进行监控,对热点视频生成对应的优化推荐策略,促进热点视频的生产或者消费,构建整个生产消费数据链路的闭环,从而提高创作者收益以及消费者留存。 本文将完整分析垂类生态短视频生产消费数据的整条链路流转方式,并基于 Flink 提供几种对于垂类视频生产消费监控的方案设计。通过本文,你可以了解到: 垂类生态短视频生产消费数据链路闭环 实时监控短视频生产消费的方案设计 不同监控量级场景下的代码实现 flink 学习资料 项目简介 垂类生态短视频生产消费数据链路流转架构图如下,此数据流转图也适用于其他场景: 链路 在上述场景中,用户生产和消费短视频,从而客户端、服务端以及数据库会产生相应的行为操作日志,这些日志会通过日志抽取中间件抽取到消息队列中,我们目前的场景中是使用 Kafka 作为消息队列;然后使用 flink 对垂类生态中的视频进行生产或消费监控

大数据 —— 常见问题及答案

社会主义新天地 提交于 2020-09-25 11:01:02
linux + shell 常用的高级命令 top iotop df -h grep sed awk netstat halt ps 查看进程、查看端口号、查看磁盘使用情况 top ps netstat df -h 常用工具 sed awk cut sort 写过哪些shell 脚本 集群启动停止脚本(zk.sh kf.sh xcall.sh myjps.sh xsync.sh) #! /bin/bash case $1 in "start" ) { for I in hadoop102 hadoop103 hadoop104 do ssh $I "绝对路径 start" done } ; ; "stop" ) { } ; ; esac 数仓层级导入 ods -> dwd -> dws 5步 #!/bin/bash 定义变量 hive/opt/module/hive/bin/hive APP = gmall 定义时间 sql = " 遇到表,前面加上数据库名称; 遇到时间, $do_date " hive -e " $sql " 数仓与mysql 的导入和导出 – 主要sqoop 二、Hadoop 入门 端口号: 2.x hadoop访问50070 yarn8088 19888 9000 3.x hadoop访问9870 yarn8088 19888 8020 需要的配置文件 2