新年10个Flag实现中~
访问量
1.8M
文章数
147
运行天
1117
Kafka中,必须要知道的概念就是消息和日志段。一、V0和V1消息在0.11之前,消息被称为Message,一批以数组形式保存的消息被称为消息集合(MessageSet)。消息集合只是简单的聚合,消息集合中的每条消息都有自己的元信息(Metadata),这个并没有聚合。0.10前Messageversion=0,0.10~0.11版本Messageversion=1,这个Messageversion被存储为魔术数字(MagicNumber),放在消息里面。1.1V0消息  V0版本的结构都比较简单:attribute:1字节,低3位是压缩类型,0=NONE,1=GZIP,2=Snappy,3=LZ4(LZ4需要kafka0.9.x以上)key:key可以为null,如果为
一、Kafka的基本框架在Kafka中,发布和订阅的对象称为主题(Topic),主题可以有多个。向主题发布消息的应用称为生产者(Producer),订阅这些主题消息的称为消费者(Consumer)。生产者可以有多个,可以在不同的系统;消费者也可以有多个,同样也可以在不同的系统。生产者和消费者都称为客户端(Clients),这个概念与Kafka服务器(Server)对应。 Kafka服务端可以有多个实例构成集群,每个实例都称为一个消息代理(Broker),这些实例可以分布在一台机器上,也可以分布在多台机器上以达到高可用的目的。你可以在消息中间件中经常看到Broker这个词,例如MQTTBroker等,Broker的本意是“经纪人”、“代理人”等等,中间件正是这样一个中间代理的角色。K
一、系统间的通信方式分布式系统常常需要进行系统间通信:常见的系统间通信方式有两种:远程过程调用(RemoteProcedureCall,RPC)消息队列(MessageQueue,MQ)对于RPC,我们可以同步请求(请求、等待;处理、响应),也可以异步请求(请求、标记请求、等待;处理、完成;释放标记/超时处理)。然而RPC有很多缺点:(1)任何一方出现故障,都可能会造成消息丢失。当然你也可以通过应用/框架重试+多实例来缓解,但只要任何一方全部挂掉,消息必然丢失。(2)平台、协议、开发语言等差异导致对接复杂度高。虽然GRPC也是跨平台跨语言的,但并非所有的系统都会引入GRPC,protobuf也不能完全包含所有的开发语言。(3)服务器性能差异,导致消息堆积。上游数据源(比如上游服务器、或者作为
一、Kafka的名字是怎么来的我一直就怀疑是不是初中学的小说家“弗朗茨·卡夫卡”,没错就是。JayKreps(工作于LinkedIn,Kafka创始人之一):我想既然Kafka是为了写数据而产生的,那么用作家的名字来命名会显得更有意义。我在大学时期上过很多文学课程,很喜欢FranzKafka。况且,对于开源项目来说,这个名字很酷。不过,名字和应用本身基本没有太多联系。  ——《Kafka权威指南》P13二、Kafka和Scala、Java是什么关系?Kafka是使用Java开发的应用程序。 ——《Kafka权威指南》P14 截至本书写作时,Kafka的版本是0.9.0.1,对应的Scala版本是2.11.0。——《Kafka权威指南》P17 
前言最近在系统地学习知识,因此5月~6月的目标是完成Zookeeper和Kafka的学习(以前高考都还有老师给你一份提纲要学什么东西,现在自己给自己定义提纲才发现是很痛苦的事情)。学习提纲初步定义的框架如下:1、Kafka原理和源码动物书《Kafka权威指南》(ISBN978-7-115-47327-1):了解正确的基本知识和术语,不会被网文骗…Kafka官网文档:主要关注0.9.0(重大变化,低于该版本的没有意义了)、2.2.1(目前使用到的)、最新版本(最新的特性)。有关如何选择版本学习,我也是参考的商业的软件一般会选择什么版本的Kafka,比如AWS的MSK服务,它提供的版本是1.1.1、2.2.1、2.3.1、2.4.1,说明这几个版本是有特殊的地方的,比如十分稳定,或者支持了什么重
由于目前没有专门的页面致谢,因此将在这里致谢打赏的同学。感谢各位的关注和支持。 时间  信息  金额  备注  2019.11.21 匿名 0.45  2019.12.18 Tiam  2.33多谢!第一次尝试感觉很好!  2020.02.06 *星河  0.01   2020.04.04 *锦程  0.01  2020.04.28 *得旺 2 感谢博主,微不足道,收下&nbs
一、背景分布式压测1台主控机,15台从机,每台测试机1W长连接客户端,进行混合场景MQTT稳定性PubSub测试,发现服务器在跑了一天以后被重启了。(1)排除GC问题之前的PET测试中,发现偶尔会有长时间的FullGC,导致ServiceMesh探针几次没有响应而强行重启了服务器(那个是由于OpenTracing批量kafka消费的时候没有通过try-resource来释放资源造成堆内存泄漏)。因此看了下GC,发现FullGC耗时很短,次数很少,而且堆内存并没有爆炸。(2)发现内存增长有问题通过观察由Prometheus提供数据、Grafana绘制的图像,发现内存以1MB/分钟的速度几乎是线性增长到8G,然后由于达到了k8s的pod限制,被强行重启了。这种不正常的现象明显就是有内存泄漏,那么
一、发现现象在用Java编写一个项目时,使用了AES作为数据库某些字段的加密方式,在Windows上正常运行,在Linux上调用AWS加密,抛出异常:Noinstalledprovidersupportsthiskey:javax.crypto.spec.SecretKeySpec二、问题根源Java的政策文件限制了密钥长度。JCE(JavaCryptographyExtension)是Java的加密扩展包,由于美国对某些国家有进出口限制,因此低版本Java默认限制了密钥长度,比如AES加密只能使用16位AES-128,超过16位就会报这个错。JDK8文档描述:UnlimitedStrengthJavaCryptographyExtensionDuetoimportcontrolrestri
12345... 16下一页