消息中间件Kafka(PHP版本)

PHP小白搭建Kafka环境以及初步使用rdkafka 提示:windows环境安装失败,Linux环境安装成功(以下并没有windows安装示例) 阅读详情

        小编最近需要用到消息中间件,有需要要复习一下以前的东西,有需要的自取,强调一点,如果真的想了解透彻,一定要动手,脑袋会了不代表就会写了

        Kafka是由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息

Kafka 的特性

高吞吐、低延迟:kakfa 最大的特点就是收发消息非常快,kafka 每秒可以处理几十万条消息,它的最低延迟只有几毫秒。
高伸缩性: 每个主题(topic) 包含多个分区(partition),主题中的分区可以分布在不同的主机(broker)中。
持久性、可靠性: Kafka 能够允许数据的持久化存储,消息被持久化到磁盘,并支持数据备份防止数据丢失,Kafka 底层的数据存储是基于 Zookeeper 存储的,Zookeeper 我们知道它的数据能够持久存储。
容错性: 允许集群中的节点失败,某个节点宕机,Kafka 集群能够正常工作
高并发: 支持数千个客户端同时读写

Kafka 的使用场景

活动跟踪:Kafka 可以用来跟踪用户行为,比如我们经常回去淘宝购物,你打开淘宝的那一刻,你的登陆信息,登陆次数都会作为消息传输到 Kafka ,当你浏览购物的时候,你的浏览信息,你的搜索指数,你的购物爱好都会作为一个个消息传递给 Kafka ,这样就可以生成报告,可以做智能推荐,购买喜好等。
传递消息:Kafka 另外一个基本用途是传递消息,应用程序向用户发送通知就是通过传递消息来实现的,这些应用组件可以生成消息,而不需要关心消息的格式,也不需要关心消息是如何发送的。
度量指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
日志记录:Kafka 的基本概念来源于提交日志,比如我们可以把数据库的更新发送到 Kafka 上,用来记录数据库的更新时间,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
流式处理:流式处理是有一个能够提供多种应用程序的领域。
限流削峰:Kafka 多用于互联网领域某一时刻请求特别多的情况下,可以把请求写入Kafka 中,避免直接请求后端程序导致服务崩溃。

消息:
Kafka中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。
批次:为了提高效率,消息会分批次写入Kafka,批次就代指的是一组消息。

主题:
消息的种类称为主题(Topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。

分区:
主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,
由此来实现 kafka 的伸缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序

生产者:
向主题发布消息的客户端应用程序称为生产者(Producer),生产者用于持续不断的向某个主题发送消息。

消费者:
订阅主题消息的客户端程序称为消费者(Consumer),消费者用于处理生产者产生的消息。

消费者群组:
生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者,
消费者群组(Consumer Group)指的就是由一个或多个消费者组成的群体。

偏移量:
偏移量(Consumer Offset)是一种元数据,它是一个不断递增的整数值,用来记录消费者发生重平衡时的位置,以便用来恢复数据。

broker:
一个独立的 Kafka 服务器就被称为 broker,broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。

broker 集群:
broker 是集群 的组成部分,broker 集群由一个或多个 broker 组成,每个集群都有一个 broker 同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来)。
副本:Kafka 中消息的备份又叫做 副本(Replica),副本的数量是可以配置的,Kafka 定义了两类副本:领导者副本(Leader Replica) 和 追随者副本(Follower Replica),前者对外提供服务,后者只是被动跟随。
重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。

安装

下载地址

librdkafka获取地址:https://github.com/edenhill/librdkafka
kafka获取地址:https://github.com/arnaud-lb/php-rdkafka

安转java环境

下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
下载解压完成之后,设置系统变量:path(路径为:安装目录/bin)
设置环境变量:JAVA_HOME(路径为:安装目录\bin)

查看是否安装成功:java -version

Zookeeper安装

下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
设置环境变量:path(路径为:安装目录\bin)
新建data文件夹,新建logs文件夹
config文件夹:zoo_sample.cfg  新复制一个:zoo.cfg
编辑zoo.cfg文件:
新增(配置路径【一定要配置\\,要不然不识别】:安装路径\\zookeeper\\apache-zookeeper-3.6.4-bin\\):
dataDir= 安装路径\zookeeper\apache-zookeeper-3.6.4-bin\data
dataLogDir=安装路径\zookeeper\apache-zookeeper-3.6.4-bin\log
audit.enable=truezookeeper/conf/zoo.cfg 参数详解

tickTime=2000:
        这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳,单位是毫秒
        
initLimit=10:
        这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒,10秒内要启动集群并出现leader和floower。
syncLimit=5:
        这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒,超出时间认为是死机。
dataDir:
        快照日志的存储路径
dataLogDir:
        事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
clientPort=12181:
        这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

启动zkServer

启动目录:\bin\zkServer.sh

启动命令:zkServer.sh start

查找看到:binding to port .0.0.0.0/0.0.0.2181能表示成功

安装Scala

下载地址:https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi
安装:一键安装(一直next,直到完成)
配置环境变量(这个需要配置):安装目录/bin
判断是否安装完成:scala -version

Kafka安装

下载地址:https://kafka.apache.org/downloads
Kafka安装目录下新建目录logs
编辑config\server.properties文件
log.dirs=安装目录\\logs(注意双斜线,如果是cmd命令出现命令行太长,那就把Kafka安装安装在磁盘的最外面,D盘的最外层)
新增参数:listeners=PLAINTEXT://localhost:9092

启动

一定要先启动zookeeper(命令:zkServer)
然后启动kafka(命令(cmd进入Kafka安装目录):.\bin\windows\kafka-server-start.bat .\config\server.properties)
查找看到:from now on will use node localhost:9092
能表示成功(如果启动不了,删除logs文件夹下的文件)

操作:

创建topics(主题):

kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test


查看主题:

kafka-topics.bat --bootstrap-server localhost:9092 --list

生产者:

cmd进入:安装目录\bin\windows
打开生产者:kafka-console-producer.bat --broker-list localhost:9092 --topic test

消费者:

cmd进入:安装目录\bin\windows
打开消费者:kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

测试:

生产者发送消息,消费者订阅收到消息

注意:
1.一共打开四个窗口,1.zookeeper 2.kafka  3.生产者  4.消费者  (注意,这四个窗口不能关闭,要一直开着)
2.一定是生产者生产消息,消费者才会收到消息(注意,生产者和消费者的topics一定要是一样的,要不然收不到消息)

方法

getOutQlen方法

使用方法:$producer->getOutQLen();
作用:
1.用于获取生产者(Producer)内部队列中等待发送到Kafka broker的消息数量。
2.getOutQLen() 方法允许你查询这个内部队列中当前待发送的消息数量。通常用于监控和调试目的,帮助了解生产者的发送速率和队列积压情况
3.getOutQLen() 返回的是近似值,它可能在调用之间发生变化
输出数据:
int(0)


poll方法

使用方法:
while ($producer->getOutQLen() > 0) {
    $producer->poll(1);
}
作用:
用于从Kafka集群中拉取消息,当消费者调用poll()方法时,如果在规定的时间内没有收到任何消息,它会立即返回,并且没有任何消息被拉取到(轮询一次就相当于拉取一定时间段broker中可消费的数据)


 
flush方法

使用方法:$producer->flush(10000);
作用:将生产者内部缓冲区中的消息强制发送到Kafka broker的过程。


consumerstart方法

使用方法:$topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);
作用:在Kafka中,consumerstart方法是用于启动消费者线程并开始从Kafka集群中拉取消息的方法。


Consume方法

使用方法:$topic->consume(0, 120*10000);
作用:是指Kafka消费者从Kafka集群中读取消息的过程。首先需要从集群中先拉取数据


Purge方法

使用方法:$producer->purge(RD_KAFKA_PURGE_F_QUEUE);
作用:是指清除已完成或已过期的请求,以释放缓存资源。


initTransactions方法

作用:用于初始化一个事务。Kafka从0.11.0.0版本开始支持事务性生产者API,允许生产者将多个消息组合成一个事务,确保这些消息被原子性地写入Kafka。这意味着要么所有消息都成功写入,要么都不写入,保证了消息的一致性


beginTransaction方法

作用:用于开始一个新的生产者事务。Kafka从0.11.0.0版本开始支持事务性生产者API,它允许你将多个消息组合成一个事务,确保这些消息被原子性地写入Kafka。这意味着要么所有消息都成功写入,要么都不写入,这保证了消息的一致性


commitTransaction方法

作用:它用于提交一个事务。当你使用 Kafka 的事务性生产者 API 时,你可以将一系列的消息发送操作组合成一个原子性的事务。这意味着这些操作要么全部成功,要么全部失败,从而确保数据的一致性和顺序性


abortTransaction方法

作用:中止事务,当发送消息或提交事务过程中发生错误时使用

getMetadata方法

使用方法:$producer->getMetadata(false, $topic, 10*1000);

作用:
用于获取Kafka集群的元数据
获取数据包括:1.主题(topics)2.分区(partitions)3.副本(replicas)4.ISR(In-Sync Replicas)等信息。
通常,客户端库(如PHP的php-kafka)会在初始化时或需要时自动执行此操作,以便了解集群的状态和可用主题。


代码:

class Kafka extends CI_Controller {

    //定义变量(分区)
    private $borker_list = "";
    //定义变量(配置)
    private $conf = "";
    //定义变量(主题)
    private $topics = "";
    //定义变量(分组)
    private $topics_group = "";

    //构造
    public function __construct(){
        parent::__construct();
        //初始化数据
        $this->borker_list = "localhost:9092";
        $this->topics = "test";
        $this->topics_group = "test-group";
    }

    //消息生产者
    public function producter(){
        //初始化
        $conf=  new RdKafka\Conf();
        //设置分区
        $conf->set('metadata.broker.list', $this->borker_list);
        //初始化生产者
        $producer = new RdKafka\Producer($conf);
        //设置主题
        $topic = $producer->newTopic($this->topics);
        //产生信息
        for ($i = 0; $i < 10; $i++) {
            $topic->produce(RD_KAFKA_PARTITION_UA, 0, "Message $i");
            $producer->poll(0);
        }
        //消息刷新
        for ($flushRetries = 0; $flushRetries < 10; $flushRetries++) {
            $result = $producer->flush(10000);
            if (RD_KAFKA_RESP_ERR_NO_ERROR === $result) {
                break;
            }
        }
        //刷新结果
        if (RD_KAFKA_RESP_ERR_NO_ERROR !== $result) {
            throw new \RuntimeException('Was unable to flush, messages might be lost!');
        }
    }

    //消息订阅者
    public function consumer(){
        set_time_limit(0);
        //初始化
        $conf = new RdKafka\Conf();
        //设置分区
        $conf->set('metadata.broker.list', $this->borker_list);
        $conf->set('group.id',$this->topics_group);
        //初始化消费者
        $rk = new RdKafka\Consumer($conf);

        //主题配置
        $topicConf = new RdKafka\TopicConf();
        $topicConf->set('auto.commit.interval.ms', 100);
        $topicConf->set('offset.store.method', 'file');
        $topicConf->set('offset.store.path', sys_get_temp_dir());
        $topicConf->set('auto.offset.reset', 'smallest');

        $topic = $rk->newTopic($this->topics, $topicConf);
        $topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);

        while (true) {
            $message = $topic->consume(0, 120*10000);
            switch ($message->err) {
                case RD_KAFKA_RESP_ERR_NO_ERROR:
                    //没有错误打印信息
                    var_dump($message);
                    break;
                case RD_KAFKA_RESP_ERR__PARTITION_EOF:
                    echo "等待接收信息\n";
                    break;
                case RD_KAFKA_RESP_ERR__TIMED_OUT:
                    echo "超时\n";
                    break;
                default:
                    throw new \Exception($message->errstr(), $message->err);
                    break;
            }
        }
    }

    //获取元数据(包括主题(topics)、分区(partitions)、副本(replicas)和ISR(In-Sync Replicas)等信息)
    public function gettest(){
        //初始化
        $conf=  new RdKafka\Conf();
        //设置分区
        $conf->set('metadata.broker.list', $this->borker_list);
        //初始化生产者
        $producer = new RdKafka\Producer($conf);
        $topic = $producer->newTopic($this->topics);
//        $result = $producer->getMetadata(false, $topic, 10*1000);
        $result = $producer->getOutQLen();
        var_dump($result);die;
    }


    //获取元数据
    public function metadata(){
        $conf = new RdKafka\Conf();
        $conf->setDrMsgCb(function ($kafka, $message) {
            file_put_contents("./xx.log", var_export($message, true), FILE_APPEND);
        });
        $conf->setErrorCb(function ($kafka, $err, $reason) {
            printf("Kafka error: %s (reason: %s)\n", rd_kafka_err2str($err), $reason);
        });

        $conf->set('group.id', 'myConsumerGroup');

        $rk = new RdKafka\Consumer($conf);
        $rk->addBrokers("127.0.0.1");

        $allInfo = $rk->getMetadata(true, NULL, 60e3);
        $topics = $allInfo->getTopics();

        //循环输出
        foreach ($topics as $topic) {
            $topicName = $topic->getTopic();
            if ($topicName == "__consumer_offsets") {
                continue ;
            }
            $partitions = $topic->getPartitions();
            foreach ($partitions as $partition) {
                $topPartition = new RdKafka\TopicPartition($topicName, $partition->getId());
                echo  "当前的话题:" . ($topPartition->getTopic()) . " - " . $partition->getId() . " - ";
                echo  "offset:" . ($topPartition->getOffset()) . PHP_EOL;
            }
        }
    }
}

PHP 消息队列 Kafka 使用 安装 Kafka 服务 直接到 kafka 官网 , 下载最新的 wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz 解压,进入目录 tar -zxvf kafka_2.13-2.5.0.tgz cd kafka_2.13-2.5.0 启动 Kafka 服务 使用安装包中的脚本启动单节点 Zookeeper 实例 bin/zookeeper-server-start.sh -daemon confi 阅读详情

相关推荐

消息中间件kafka的php-rdkafka扩展使用教程

一、PHP-rdkafka扩展简介 PHP-rdkafka是一个轻量的librdkafka封装,通过librdkafka提供c的扩展支持PHP对kafka进行开发,提供了一个 PHP 5 / PHP 7 Kafka客户端,它支持高级和低级消费者、生产者,以及元数据API。 librdkafa项目:https://github.com/edenhill/librdkafka php-rdkafka项目:https://github.com/arnaud-lb/php-rdkafka 二、php-rdk

IT- 研究者 3180

PHP操作Kafka

本文对php操作kafka的方法做一个记录,备忘。 一、搭建kafka集群 下载kafka并解压: tar -xzf kafka_2.13-2.7.0.tgz 搭建单机集群: cd kafka_2.13-2.7.0 #创建两个broker配置并修改端口 cp config/server.properties config/server-1.properties cp config/server.properties config/server-2.properties 编辑拷贝.

右手诗的博客 5665

AXI backpressure反压机制代码

本文将xilinx的axi读写代码进行修改,实现吞吐量达到50%

m0_64636251的博客 1764

Kafka简介及使用PHP处理Kafka消息

Producer,consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。Kafka 是一种高吞吐的分布式消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区、多副本、冗余,因此被广泛用于大规模消息数据处理应用。Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers。

分享技术架构、运维、程序开发经验 1114

Verilog中generate for循环的5个实战技巧(附完整代码示例)

本文详细介绍了Verilog中generate for循环的5个高级实战技巧,包括参数化模块实例化、条件化生成、多维硬件结构实现等,并附有完整代码示例。这些技巧能显著提升FPGA开发效率,特别适合中级Verilog开发者学习应用。

weixin_28725949的博客 187

抖音短连接v.douyin.com/xxx 如何生成?

最近公司有个需求,在抖音里如何宣传自己的网站,并且不要有拦截域名的提示,截图如下。 通过ida反编译抖音的app后,将下载后的ipa文件用解压缩软件(如7zip等)解压,从解压后的目录Payload/Aweme.app/找到Aweme可执行文件,拖入ida进行反编译,ida可以检测objective-c语法。 然后进入主题,既然是聊天发消息,就尝试在ida里搜索"message",看看能否找到对...

kakuapi的博客 3万+

php实现kafka

【代码】php实现kafka。

0_0 884

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 572

php调用ua_PHP操作使用消息中间件Kafka

简单测试环境:Centos6.4,PHP7,kafka服务器IP:192.168.9.154,PHP服务器:192.168.9.157在192.168.9.157创建目录和文件。//生产者 <?php require './modules/kafka.php'; $rk = new kafka(); $rk->send(['hello my kafka']); echo 'OK~'; ...

weixin_42639633的博客 206

从零开始的立绘拆包教程

蓝毒小天使天下第一! 本文拆包教程不限于明日方舟,在后面也会给出其他手游的拆包教程,例如少女前线 首先拆包最简单的无非就是拆取游戏资源,例如游戏立绘,音频,视频等,再深层次一点有拆取游戏配置文件,apk反编译得到部分源码 在本文,我们只介绍拆取游戏资源和对游戏资源的后期处理(因为另外两个讲道理我也没太搞懂,虽然可以提取游戏配置文件,但似乎大部分重要的数据都有加密,反编译出来的源码也只是部分,...

Conyrol的博客 9万+

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 503

kafdrop和php,消息中间件Kafaka - PHP操作使用Kafka

Centos版本:Centos6.4,PHP版本:PHP7。在上一篇文章中使用IP为192.168.9.154的机器安装并开启了Kafka进行了简单测试,充当了Kafka服务器。本篇文章新开启一台IP为192.16.9.157的机器给PHP开启扩展。找到github的扩展下载地址,这里是php-rdkafka,虽然php有一个扩展是php-kafka,但是php-rdkafka要比php-kafk...

weixin_29165725的博客 381

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

php 创建json对象_PHP操作使用消息中间件Kafka

简单测试环境:Centos6.4,PHP7,kafka服务器IP:192.168.9.154,PHP服务器:192.168.9.157在192.168.9.157创建目录和文件。//生产者 <?php require './modules/kafka.php'; $rk = new kafka(); $rk->send(['hello my kafka']); echo 'OK~'; ...

weixin_39917811的博客 165

广东省低应变题库

11.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,采用低应变法对混凝土预制桩进行检测时,地基基础设计等级为甲级的桩基工程抽检桩数不应少于总桩数的30%,其余桩基工程抽检桩数不应少于总桩数的20%,且不得少于10根;16.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,当对某桩的桩身完整性判定为III类时,可认为该桩不满足验收条件,不用进一步确定该桩桩身缺陷对桩身结构承载力的影响程度。2.地基基础检测所用计量器具均应在检定(校准、验证)的有效期内,性能符合相关技术要求。

ZShy001238的博客 318

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php 消息中间件,消息中间件Kafka的安装搭建

Apache Kafka是 一个分布式流处理平台:1.可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。2.可以储存流式的记录,并且有较好的容错性。3.可以在流式记录产生时就进行处理。Kafka适合什么样的场景?它可以用于两大类别的应用:构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)构建实时流式应用程序,对这些流数据进行转换或者...

weixin_36302350的博客 142

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php 安装kafka扩展

1.kafka php扩展下载地址 https://github.com/arnaud-lb/php-rdkafka //php-rdkafka下载地址 2.在安装php-rdkafka之前需要给系统安装一个库,librdkafka。 https://github.com/edenhill/librdkafka //librdkafka地址 两个包都下载完之后,首先进行librdkafka的解压安装 # unzip librdkafka-master.zip # cd librdkafk

Bug制造者 698

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

php 消息中间件,PHP操作使用消息中间件Kafka

/*** 基于redis的queue队列*/class Queue {private static $_models;public $queue_max_length = array();public static function model($className=__CLASS__) {$model=null;if (isset(self::$_models[$className]))$mod...

weixin_42515331的博客 267

php操作kafka

消息中间件Kafaka - PHP操作使用Kafka PHP 消息中间件 消息队列 Kafka ** PHP使用Kafka 安装libkafka 安装rdkafka php操作kafka PHP使用Kafka ** 我们需要安装libkafka和rdkafka 安装libkafka 下载 去GitHub上克隆下来 git clone https://github.com/ede...

weixin_43677889的博客 769

浅谈Kafka2.8+在Windows下的搭建与使用

前言: 周末空闲时间无意找到了一套个性化推荐的源码,整体项目运用了SSH,HDFS,Flume,Hive,Kafka,Spark,Scala等。运行时,本来通过spark计算业务埋点数据时,却发现本地没有Kafka。因为我一直也没使用过Kafka,所以也作为新人,浅谈以下Kafka的环境安装与分别在PHP,Scala中的使用。 对比: 1. 横向,相比其他中间件。 关于kafka与其他消息中间件的比较,网上很多的博主,不管是从运行原理还是中间件架构都有很详细...

北桥苏的博客 2373

windows环境下给PHP增加rdkafka扩展

因为工作需要kafka作为消息中间件,所以在本地开发环境进行测试的时候需要给PHP添加rdkafka扩展,使用PHP作为producer或者cosumer,在此纪录一下rdkafka的安装过程。 扩展下载地址:http://pecl.php.net/package/rdkafka 根据自身PHP版本选择相应的包,使用phpinfo()函数可以很方便的查看自己PHP版本: 我的是...

aiwu6183的博客 128

PHPrdkafka扩展的安装Windows

因为工作需要kafka作为消息中间件,所以在本地开发环境进行测试的时候需要给PHP添加rdkafka扩展,使用PHP作为producer或者cosumer,在此纪录一下rdkafka的安装过程。 扩展下载地址:http://pecl.php.net/package/rdkafka 根据自身PHP版本选择相应的包,使用phpinfo()函数可以很方便的查看自己PHP版本: windows版的扩展包下载下来之后是一个压缩文件,解压之后得到一堆文件 将其中rdkafka.dll放入php目录下的ext文件夹

记得微笑的博客 451

Kafka 消息中间件

提供路由并保证消息的传送;如果发送消息时接收者不可用,消息对列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的。 二消息中间件特点1)解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2)冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用

hudeyong926的专栏 4792

消息中间件.为什么选择了Kafka

Kafka 可以治 三高: 高并发,高性能,高可用 我先结合我们公司为什么选择Kafka. 一、我们公司是一个房地产的大数据公司;Kafka截止目前,算是大数据消息中间件传输的业界标杆.所以选择它一定没有错! 二、公司团队有 PHP(1/2) ,python(1/4), java(1/8),golang(1/8)... 数据量巨大,语言众多,让我们选择更简单的Kafka,而不是Roc...

du_denglan的专栏 467

Windows下Kafka环境搭建

前言周末空闲时间无意找到了一套个性化推荐的源码,整体项目运用了SSH,HDFS,Flume,Hive,Kafka,Spark,Scala等。运行时,本来通过spark计算业务埋点数据时,却发现本地没有Kafka。因为我一直也没使用过Kafka,所以也作为新人,浅谈以下Kafka的环境安装与分别在PHP,Scala中的使用。...

weixin_40765570的博客 480
上一篇: PHP操作Mongodb
下一篇: Python 之 Flask框架(进阶版)
masterphp
博客等级 码龄5年 247粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值