96SEO 2026-02-19 20:54 37
/opt/app/kafka/bin]$./kafka-topics.sh

pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
/opt/app/kafka/bin]$./kafka-topics.sh
pxj62:2181,pxj63:2181,pxj64:2181
java.lang.IllegalArgumentException:
kafka.admin.TopicCommand$.kafka$admin$TopicCommand$$ensureTopicExists(TopicCommand.scala:484)at
kafka.admin.TopicCommand$ZookeeperTopicService.describeTopic(TopicCommand.scala:390)at
kafka.admin.TopicCommand$.main(TopicCommand.scala:67)at
kafka.admin.TopicCommand.main(TopicCommand.scala)(kafka.admin.TopicCommand$)
/opt/app/kafka/bin]$./kafka-console-producer.sh
pxj62:9092,pxj63:9092,pxj64:9092
/opt/app/kafka/bin]$./kafka-console-consumer.sh
pxj62:9092,pxj63:9092,pxj64:9092
org.apache.kafka.clients.producer.KafkaProducer;
org.apache.kafka.clients.producer.Producer;
org.apache.kafka.clients.producer.ProducerRecord;import
Properties();props.put(bootstrap.servpackage
org.apache.kafka.clients.consumer.ConsumerRecord;
org.apache.kafka.clients.consumer.ConsumerRecords;
org.apache.kafka.clients.consumer.KafkaConsumer;import
Properties();props.setProperty(bootstrap.servers,
pxj62:9092,pxj63:9092,pxj64:9092);
kafka地址props.setProperty(group.id,
idprops.setProperty(enable.auto.commit,
是否开启自动提交数据的偏移量props.setProperty(auto.commit.interval.ms,
自动提交的间隔时间props.setProperty(key.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);
设置key反序列类props.setProperty(value.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);//
创建kafka消费者对象KafkaConsumerString,
KafkaConsumer(props);//2.设置消费者监听那些Topicconsumer.subscribe(Arrays.asList(test02));//3.
参数表示等待(超时)的时间ConsumerRecordsString,
consumer.poll(Duration.ofMillis(100));for
从哪个分区读取的数据System.out.println(偏移量:
pxj62:9092,pxj63:9092,pxj64:9092);
指定消息确认方案props.put(key.serializer,
org.apache.kafka.common.serialization.StringSerializer);//
key序列化类props.put(value.serializer,
org.apache.kafka.common.serialization.StringSerializer);
ProducerRecord(test02,Integer.toString(i));producer.send(producerRecord);}//3.
org.apache.kafka.clients.consumer.ConsumerRecord;
org.apache.kafka.clients.consumer.ConsumerRecords;
org.apache.kafka.clients.consumer.KafkaConsumer;import
Properties();props.setProperty(bootstrap.servers,
pxj62:9092,pxj63:9092,pxj64:9092);
kafka地址props.setProperty(group.id,
idprops.setProperty(enable.auto.commit,
是否开启自动提交数据的偏移量props.setProperty(auto.commit.interval.ms,
自动提交的间隔时间props.setProperty(key.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);
设置key反序列类props.setProperty(value.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);//
创建kafka消费者对象KafkaConsumerString,
KafkaConsumer(props);//2.设置消费者监听那些Topicconsumer.subscribe(Arrays.asList(test02));//3.
参数表示等待(超时)的时间ConsumerRecordsString,
consumer.poll(Duration.ofMillis(100));for
从哪个分区读取的数据System.out.println(偏移量:
org.slf4j.impl.StaticLoggerBinder.
http://www.slf4j.org/codes.html#StaticLoggerBinder
1生产者只管发送到broket端需要等待对应接受分片的主副本接收到数据后给予响应认为数据发送成功
-1:ALL生产者只管发送到broket端需要等待对应接受分片所有的
props.put(“acks”,all)6.3如果broker端迟迟没有给予响应如何解决
采用先等待超时时间再重试的策略一般重试3次如果重试后依然没有给予响应此时让程序直接报错。
通知相关人员处理即可
可以引入缓存池采用异步发送方案生产者将数据在发送数据时候底层会将这个数据保存到缓存池中当池子中数据达到一批数据大小后将达一批数据直接发送到broker此时broker针对这一批数据给予一次性响应即可批量发送数据6.5
采用批量发送数据如果发送一批数据到broker端broker端又没有给予响应此时缓存池中数据满了如何解决呢
1.丢弃缓存池中数据报异常适用于数据不重要或者可以重读的消息总数据
2.在写入缓冲池的时候需要将数据在其他的地方也持久存储一份发送成功一批数据将持久化地方数据删除一部分以保证在出现此问题后数据依然存在下次启动的时候优先从持久化容器中读取即可七、安装
JAVA_HOME/usr/java/jdk1.8.0_141
ZOOKEEPER_HOME/opt/app/zookeeper
PATH${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:${KE_HOME}/bin:$PATH[pxjpxj62
使用vi打开conf目录下的system-config.propertie
kafka.eagle.zk.cluster.aliascluster1
cluster1.zk.listpxj62:2181,pxj63:2181,pxj64:2181
#cluster2.zk.listxdn10:2181,xdn11:2181,xdn12:2181
######################################
######################################
#kafka.eagle.driverorg.sqlite.JDBC
#kafka.eagle.urljdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.passwordwww.kafka-eagle.org######################################
######################################
kafka.eagle.drivercom.mysql.jdbc.Driver
kafka.eagle.urljdbc:mysql://pxj63:3306/ke?useUnicodetruecharacterEncodingUTF-8zeroDateTimeBehaviorconvertToNull
JAVA_HOME/usr/java/jdk1.8.0_1417.5授权运行
/opt/app/kafka-eagle/bin]$chmod
/opt/app/kafka-eagle/bin]$./ke.sh
org.apache.kafka.clients.producer.KafkaProducer;
org.apache.kafka.clients.producer.ProducerRecord;import
Properties();props.put(bootstrap.servers,
pxj62:9092,pxj63:9092,pxj64:9092);
指定消息确认方案props.put(key.serializer,
org.apache.kafka.common.serialization.StringSerializer);//
key序列化类props.put(value.serializer,
org.apache.kafka.common.serialization.StringSerializer);
value序列化类//构造生产者KafkaProducerString,String
get支持自定义超时的时间try{producer.send(producerRecord).get();}catch
e){e.printStackTrace();}}producer.close();}
org.apache.kafka.clients.producer.*;import
Properties();props.put(bootstrap.servers,
pxj62:9092,pxj63:9092,pxj64:9092);
指定消息确认方案props.put(key.serializer,
org.apache.kafka.common.serialization.StringSerializer);//
key序列化类props.put(value.serializer,
org.apache.kafka.common.serialization.StringSerializer);
i_22);producer.send(producerRecord,
编写发送失败的处理业务逻辑代码System.err.println(发送消息失败
e.getStackTrace());}if(metadata!null){if
org.apache.kafka.clients.consumer.ConsumerRecord;
org.apache.kafka.clients.consumer.ConsumerRecords;
org.apache.kafka.clients.consumer.KafkaConsumer;import
设置消费者的配置信息props.setProperty(bootstrap.servers,
pxj62:9092,pxj63:9092,pxj64:9092);
kafka地址props.setProperty(group.id,
idprops.setProperty(enable.auto.commit,
是否开启自动提交数据的偏移量props.setProperty(key.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);
设置key反序列类props.setProperty(value.deserializer,
org.apache.kafka.common.serialization.StringDeserializer);//
KafkaConsumer(props);consumer.subscribe(Arrays.asList(test01));while(true){ConsumerRecordsString,String
recordsconsumer.poll(Duration.ofMillis(100));for
从哪个分区读取的数据System.out.println(偏移量:
会造成大量的重复消费问题consumer.commitSync();
__consumer_offset此topic具有50个分区,
log.segment.bytes1073741824十二、kafka的数据查询机制
先确定这条消息在那个segment片段中到对应片段中找index文件,
根据offset查询消息数据在log文件的那个物理偏移量位置根据从index查询到的偏移量信息,
顺序读写效率远远高于随机读写十三、kafka中生产者的数据分发策略
stickyPartitionCache.partition(topic,
cluster.partitionsForTopic(topic);int
Utils.toPositive(Utils.murmur2(keyBytes))
stickyPartitionCache.partition(topic,
然后根据key进行hash取模ListPartitionInfo
cluster.partitionsForTopic(topic);int
Utils.toPositive(Utils.murmur2(keyBytes))
这种分区方案称为粘性分区策略粘性分区是kafka2.4.x及以上版本支持的一种全新的分区策略
分别对应不同的分片,将各个小批次的数据发送给对应的分片下即可,
org.apache.kafka.clients.producer.internals.DefaultPartitioner通过生产者的properties对象,
这种分区方案称为粘性分区策略粘性分区是kafka2.4.x及以上版本支持的一种全新的分区策略
分别对应不同的分片,将各个小批次的数据发送给对应的分片下即可,
一个消费只能被一个消费者所接收让所有监听这个topic的消费者都属于同一个消费者组内即可发布订阅:
一个消息可以被多个消费者所接收让所有监听这个topic的消费者都属于不同的消费者组内即可作者潘陈pxj
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback