Kafka

总结:消息队列

不想你离开。 提交于 2020-10-07 05:30:34
一、为什么要使用消息队列? 1、 削峰 当有大并发产生的时候,数据会堆积在MQ中,消费端保持平稳的消费能力,不会给后端服务造成太大压力; 2、解耦 传统模式: 传统模式的缺点: 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 中间件模式: 中间件模式的的优点: 将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。 3、异步 异步可以大大提高响应的速度; 二、使用消息队列的缺点? 1、一定程度上降低了系统的可用性 在不使用第三方组件的情况下,只有部署服务的机器挂了,进程才会出问题; 但是使用第三方消息队列,增加了一种宕机的可能,就是消息队列服务挂了也会导致进程出问题; 2、系统复杂性增加 代码复杂:需要引入第三方服务相关代码;本来只是一个方法调用而已。 需要考虑消息队列服务的一些问题, 如何保证消息不被重复消费?如何保证保证消息可靠传输? 三、消息队列的选型 来一个对比表: 特性 ActiveMQ RabbitMQ RocketMQ kafka 开发语言 java erlang java scala 单机吞吐量 万级 万级 10万级 10万级 时效性 ms级 us级 ms级 ms级以内 可用性 高(主从架构) 高(主从架构) 非常高(分布式架构) 非常高(分布式架构)

Tungsten Fabric知识库丨更多组件内部探秘

杀马特。学长 韩版系。学妹 提交于 2020-10-07 05:04:31
在上一篇文章中,我们和您一起了解了 vRouter的内部结构和进程 ,今天继续Tungsten Fabric其它组件的内部探秘旅程。 作者:Tatsuya Naganawa 译者:TF编译组 - control内部 - IFMAP-SERVER弃用 在R4.0之后,不建议使用ifmap-server,当前控制节点直接从cassandra接收配置信息。 https://github.com/tungstenfabric/tf-specs/blob/master/deprecating-discovery-4.0.md 话虽如此,但是在内部,它仍然使用ifmap结构来存储vrf、interface、logical-router等的拓扑数据。 为了直接从cassandra中拾取数据,对ifmap客户端进行了一些更改,这些更改由control使用。 https://bugs.launchpad.net/juniperopenstack/+bug/1632470 最初,ifmap客户端包含很多逻辑来从ifmap-server提取数据,但是目前它仅包含一种逻辑,从cassandra获取json文件,并用该数据填充ifmap结构。 https://github.com/Juniper/contrail-controller/tree/R2002/src/ifmap/client https:/

No tests found for given includes: [com.xxx.smm.kafka.KafkaTopicCountMonitorTest.test](filter.inc

 ̄綄美尐妖づ 提交于 2020-10-07 04:23:42
idea 在 springboot + Gradle test时报错:No tests found for given includes 解决图 Gradle: IntelliJ IDEA使用Gradle作为默认测试运行器 。结果,在持续集成(CI)服务器上获得相同的测试结果。此外,在命令行中运行的测试将始终在IDE中运行。 IntelliJ IDEA:选择此选项可将测试过程委派给IntelliJ IDEA。在这种情况下,IntelliJ IDEA使用 JUnit 测试运行器,并且由于增量编译,测试运行得更快。 来源: oschina 链接: https://my.oschina.net/u/4369588/blog/4586615

Spring boot集成Kafka消息中间件

ぃ、小莉子 提交于 2020-10-07 00:49:30
一.创建Spring boot项目,添加如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --> <dependency> <groupId>org.apache.kafka</groupId> <artifactId

【消息队列 005】RocketMQ概要

被刻印的时光 ゝ 提交于 2020-10-06 21:07:49
文章目录 一、前言 二、 RocketMQ简介 2.1 RocketMQ是阿里的开源消息中间件,现为Apache顶级开源项目 2.2 RocketMQ处理高并发做了两件事情 2.3 RocketMQ:优点 + 缺点 + 业务用途(可以作为一个面试问题) 2.4 RocketMQ项目结构 三、RocketMQ面试知识 3.1 Rocket的分布式架构(高并发、高效率、高可用的保证) 3.2 详细四个部分 3.2.1 第一,NameServer 3.2.2 第二,Producer 3.2.3 第三,Broker 3.2.4 第四,Consumer 四、RocketMQ消息领域模型 五、其他问题 六、面试金手指 七、小结 一、前言 二、 RocketMQ简介 2.1 RocketMQ是阿里的开源消息中间件,现为Apache顶级开源项目 RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里参考Kafka特点研发的一个队列模型的消息中间件(RocketMQ是阿里开源其自研的第三代分布式消息中间件),后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。 RocketMQ英文直译:Rocket火箭、MQ message queue 消息队列 Apache基金会中的342个项目中,暂时还只有Kylin

聊一聊高并发高可用那些事

只谈情不闲聊 提交于 2020-10-06 07:38:33
目录 为什么需要消息队列 1.异步 :一个下单流程,你需要扣积分,扣优惠卷,发短信等,有些耗时又不需要立即处理的事,可以丢到队列里异步处理。 2.削峰 :按平常的流量,服务器刚好可以正常负载。偶尔推出一个优惠活动时,请求量极速上升。由于服务器 Redis,MySQL 承受能力不一样,如果请求全部接收,服务器负载不了会导致宕机。加机器嘛,需要去调整配置,活动结束后用不到了,即麻烦又浪费。这时可以将请求放到队列里,按照服务器的能力去消费。 3.解耦 :一个订单流程,需要扣积分,优惠券,发短信等调用多个接口,出现问题时不好排查。像发短信有很多地方需要用到, 如果哪天修改了短信接口参数,用到的地方都得修改。这时可以将要发送的内容放到队列里,起一个服务去消费, 统一发送短信。 高吞吐、高可用 MQ 对比分析 看了几个招聘网站,提到较多的消息队列有:RabbitMQ、RocketMQ、Kafka 以及 Redis 的消息队列和发布订阅模式。 Redis 队列是用 List 数据结构模拟的,指定一端 Push,另一端 Pop,一条消息只能被一个程序所消费。如果要一对多消费的,可以用 Redis 的发布订阅模式。Redis 发布订阅是实时消费的,服务端不会保存生产的消息,也不会记录客户端消费到哪一条。在消费的时候如果客户端宕机了,消息就会丢失。这时就需要用到高级的消息队列,如 RocketMQ

021. 分布式消息中间件设计篇

风格不统一 提交于 2020-10-06 02:01:31
1. 单体架构 2. 分布式系统架构 3. 基于消息中间件的分布式系统架构 4. 消息中间件概述 1. 什么是消息中间件 利用高效可靠的消息传递机制进行平台无关的数据交流。 并基于数据通信来进行分布式系统的集成。 通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 2. 消息中间件的应用场景 跨系统数据传递。 高并发流量削峰。 数据异步处理。 ... 3. 常用的消息中间件 ActiveMQ RabbitMQ Kafka RocketMQ 5. 消息中间件核心设计 1. 本质 一种具有接收数据、保存数据、发送数据等功能的网络应用。 和一般网络应用程序的区别是它主要负责数据的接收和传递,所以性能一般都高于普通程序。 2. 5 大核心组成 协议 持久化机制 消息分发机制 高可用设计 高可靠设计 6. 协议 1. 协议是什么 协议是计算机之间通信时共同遵守的一组约定,都遵守相同的约定,计算机之间才能相互交流。 是对数据格式和计算机之间交互数据时必须遵守的规则的正式描述。 协议三要素: 语法:即数据与控制信息的结构或格式; 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应; 时序(同步):即事件实现顺序的详细说明。 2. 常见协议 HTTP 三要素举例: 语法:http 规定了请求报文和响应报文的具体格式。 语义:客户端主动发起的操作称为请求。 时序

PHP实现多个关键词搜索查询功能示例

丶灬走出姿态 提交于 2020-10-06 01:51:37
本文实例讲述了PHP实现多个关键词搜索查询功能。分享给大家供大家参考,具体如下: PHP对于数据库的搜索主要通过使用SQL语句中的 like 子句来实现。如果同时搜索多个关键词,可以使用 union 子句来将搜索结果合并起来。以下代码实现了一个搜索页面 <?php require_once ( '' Connections / conn . php '' ); ?> <?php $colname_rs = $_GET [ '' key '' ]; //获得用户输入 $result = explode ( '' , '' , $_GET [ '' key '' ]); //分解用户输入的多个关键词,存入$result数组 mysql_select_db ( $database_conn , $conn ); //连接数据库 //根据多个关键词构建SQL语句 $query_rs = "SELECT * FROM (" ; for ( $i = 0 ; $i < count ( $result ); $i ++ ) //根据每个搜索关键词构建SQL语句 { if ( $i == 0 ) //对第一个关键词,不使用UNION $query_rs .= "SELECT * FROM searchtable WHERE title LIKE ''% $result[0] %'' OR

Go语言(二十)日志采集项目(二)Etcd的使用

坚强是说给别人听的谎言 提交于 2020-10-05 17:01:44
日志采集项目(二)Etcd的使用 ETCD 介绍 概念: 高可用的分布式key-value存储,实现配置共享和服务发现 类似项目: zookeeper和consul 开发语言: Go 接口: 提供restful的http接口,使用简单 实现算法: 基于raft算法的强一致性,高可用的服务存储目录 ETCD的应用场景 服务发现和注册 配置中心 分布式锁 master选举 ETCD环境搭建 下载地址: https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz 启动方式: bin/etcd 可以直接启动 [root@centos7-node1 etcd]# nohup ./etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 & #启动etcd etcdctl使用 [root@centos7-node1 ~]# cd /opt/application/etcd/ [root

说一下 Dubbo 的工作原理?

戏子无情 提交于 2020-10-05 13:53:37
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ、ES、Redis、Dubbo,上来先问你一些 思考性的问题 、 原理 ,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架等等。 那既然开始聊分布式系统了,自然重点先聊聊 dubbo 了,毕竟 dubbo 是目前事实上大部分公司的分布式系统的 rpc 框架标准,基于 dubbo 也可以构建一整套的微服务架构。但是需要自己大量开发。 当然去年开始 spring cloud 非常火,现在大量的公司开始转向 spring cloud 了,spring cloud 人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用 dubbo,所以 dubbo 肯定会是目前面试的重点,何况人家 dubbo 现在重启开源社区维护了,捐献给了 apache,未来应该也还是有一定市场和地位的。 既然聊 dubbo,那肯定是先从 dubbo 原理开始聊了,你先说说 dubbo 支撑 rpc 分布式调用的架构啥的,然后说说一次