kafka认证
『壹』 求助,关于利用SSL进行Kafka安全认证的一些问题
Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成
『贰』 求再见!绝望先生人物简介~
糸色 望
故事的主角,2年へ组班主任,任教国语科(即日文科),亦有教导数学科及伦理科的画面出现过(但不明原因),是个超级消极的教师,毫无教学热诚。经常自杀,但又极度怕死。口头禅有“绝望啦!我对○○绝望啦!”、“死了的话怎么办?”等等。
在家排行第四,常以襦袢配行灯袴(明治时期起流行的日本古装式样之一)示人。日常用的物品亦充满日式怀旧风格(接近昭和初年的风格)。但在家乡,不用面对学生时,就会穿得吊儿郎当。喜欢阅读、玩弹珠机、还有甜食,最爱看太宰治的《人间失格》(作者也爱看)。
除了负面思考之外,还相当孩子气。他不愿对人打开心扉,自喻为“锁国”;也很记仇,将过去人们对他不好的地方记在一本叫“长恨歌”的笔记簿内。另外也有依赖他人、撒娇的一面。另外,虽然嘴里不说,不过他很易屈服于权威及一般社会的价值观之下。
将名字横写的时候会变成“绝望”,因此被称为“绝望老师”。但在中学的时候,已有人称他作“绝望”。
女学生
风浦可符香(ふうら かふか)(笔名)
2年へ组的女生,学生编号是15号。在第10话中被误记为14号。是个超积极少女。
善于交际,擅长深入并解读他人的心理阴影。另外亦擅长调查活动,拥有不明的情报网络。爱为身边的人与物改名(似是用作增添气氛)。
口头禅是“不可能有那样的(东西、情况、物件),全都是○○喔。”(例:我的身边不可能有那样躲在家的人喔,那应该是座敷童子才对呢。”)
经常就望的负面话题,提出正面的独特观点。这些观点往往会将故事的节奏逆转,令原先主导话题的望变成被牵著走的一方。最近所使用的字词均广泛地带有形而上的强烈狂热(マニアック,maniac)意味。
家庭背景复杂,父母曾多次吊颈自杀,叔叔也曾坐牢。但是意外地可符香在这环境下,能够养成极度正面思考的性格。
在幼年曾与日塔奈美在幼稚园同班。小二时转校到名古屋后,曾与音无芽留同级,其后曾与小节浴同级。
有时会扮作望的女大学生邻居,那位女大学生对他很好,会请他吃煮多了的咖哩饭(虽然后来证实那是过期了的食物)。望好像很在意她,她的照片也不时在他的家中出现,但不知道她的真实身份。
虽然作品中没有明显描写,但能够看得出可符香在多重意义中里,是个与望对立的角色。这种正面思考的模式,可说是与《妄想改造人改蔵》中的部长彩园铃(彩园すず)近似的角色,不过彩园的正面思考是因为改蔵的言行而来,而非自发性的。
由于校方认为要多加注意她,因此望在点名簿上注明“要注意”字样。
名字的由来是捷克的小说家弗兰兹·卡夫卡(Franz Kafka)。另一个获得考虑的源由是村上春树的小说《海边的卡夫卡》的男主角,在作品内使用“田村卡夫卡”(田村カフカ)的假名。
关于本名的推测
在第一集单行本中,风浦可符香的名字上标著“笔名”的记号。
不清楚她从事哪种创作活动,但偶尔会见到她的名字,出现在附录漫画的作者名一栏上。
她可能是其中一个期末考的成绩中,班上排名的三位“没有名字”的人。
幼稚园时候的照片中,曾被唤作“小杏”(杏ちゃん)(参照第10话)。依照日文五十音顺序,原本应排在音无芽留的学号17号后面的可符香,却排前至15号。新井老师在点学号16的木津千里前,先点了一位叫赤木的同学(参照第9话)。依上述证据推测,她的本名可能是赤木杏(あかぎ あん),与《红发安妮》(《赤毛のアン》)谐音。可是点名簿上她的本名仍然给糊成一团,可见这说法还未得到作品内的文字证实,只能暂定为假说。
音无芽留(おとなし める)
2年へ组的女生,学生编号是17号。在第10话中,被误记为16号。是个毒舌电邮少女。
由于极度害羞,因此只能靠手提电话的电邮与外界沟通,但在电邮内的言语则极度尖酸。
持续用不到手提电话的时候,她的精神会变得不安定、对白亦变成难以理解的文字(符号)。因此,手提电话的通讯盲点是她的天敌。
为了确保通讯无碍,她的校服上衣内侧藏起了很多后备用电,以备不时之需。另外在座位上亦有设置相应的充电器。
她不用电话来通话, 所以紧急连络网中也找不到她。
在打电邮时,旁边会有“めるめる・・・”的日文拟态词。这是在前作《妄想改造人改蔵》时,作者自创的词语。作者希望能将这词语在漫画界广泛应用,故表示“这是自由版权的,请大家(放心)使用它”(虽然实际上仍未广泛被采用)。
初期设定中,有位外观与常月缠的相同,但特征为歌德萝莉(Gothic lolita, 简称ゴスロリ)的学生。而该学生在本篇没有登场,但她的双马尾发型就由现在的芽留继承。
点名簿中标记著“拒绝接听”(着信拒否)。
姓氏的由来是乖乖的(大人しい(おとなしい),名字是电邮(メール, mail)。
加贺爱(かが あい)
2年へ组的女生,学生编号是18号。是个加害妄想少女。
因为自我评价过低,因此对周围的环境异常敏感,常常认为自己麻烦到别人,也认为自己的存在令所有事变得更糟。
经常自省,面对责任时愿一力承担。
具同理心,常将他人的痛苦视作自己的痛苦,亦不忍心放下困窘者不管。
由于性格使然,她经常躲在一旁,因此出场率极低。
名字的由来是“加害”(かがい),另外也有可能取自“加护亚衣”。
木津千里(きつ ちり)
2年へ组的女生,学生编号是17号。是个一板一眼的死硬派少女。
由于灰色地带的存在,她被同学们称作“班长”(委员长)。虽然事实上她并不是班长,但由于那种作风的关系,一直被人这样的称呼著。她的正职为茶道社社长。
由于自己对理想及完美的追求,将本来相当卷的长曲发电直,并将之正中分界。但是当头发被触碰或摇晃,发型就会受到破坏。她的阔额头上,能使用“千里眼”(这是从她的名字引申而来的)。
她的上围属A罩杯(75厘米),但她穿著的是B罩杯内衣,中间的空隙则收藏了一把刀。皮肤年龄测定为28岁。除此之外,她还拥有“一级水平测定” 的证明(第8话)。因误会而迫望跟自己结婚,但望对于女性关系的反抗意识非常强。未有寻求固中真相的她,对望抱有相当的好感,但往往拙于表达。
当未能将事情弄得有条理、清清楚楚时,会演变成失控的状态(猎奇性格);同时,眼睛会变成菱形。而这种性格与‘妄想改造人改蔵’中的名取羽美最为相近,不过相对羽美失控的机会比较多,千里多数以平常方式对答而已。不过她有可能是继承羽美特质的角色,因为她在模仿班内杀人的诙谐(ネタ)时,曾表示自己“经验丰富”。
与藤吉晴美似是老朋友的样子,但她不承认晴美的作画;因为晴美的漫画以Yaoi为主,Yaoi的由来“没有高潮、没有结果、没有意义”违反了千里的宗旨。另外她还限制晴美绘画“清清楚楚”的四格漫画,否则就否定她的漫画作品;不过看来她在意的只是形式,却不太理会漫画内容。
日文的原作中,只有千里的“きっちり”(意指“(请弄)清楚”)对白才有标点符号(,。)。而一般在少年Magazine中连载的作品,除了感叹式标点如“……”“!”“?”外,并不会在对白中使用其他标点符号。
点名簿上标著“应该没犯过错”。
名字的由来是“清清楚楚”(きっちり)。
木村卡爱拉(木村 カエレ/きむら かえれ)
2年へ组的女生,学生编号是21号。是个人格多国化(人格バイリンガル)的归国子女。(但在中文版单行本上的译法是双语人格少女。)
她属于精英班中的“国外班”学生,但是不清楚是从哪个国家回来的。由于以往经常转校,未能融入各国文化,因此很多人叫她“木村回去!”(木村帰れ)。最终变成拥有传统知性的日本人性格(此时名叫木村枫),及过激的外国人性格的多重人格者,通称为“人格多国化少女”。其后有木村卡爱罗(木村カエロ)、木村卡爱尔娜木村カエルナ)等多重人格出现,显示她有解离型认同异常(英)的症状。
人格在“卡爱拉”的状态下,动辄起诉他人。在每集单行本的卷末,均收录了她在故事进行期间所发出的起诉书(告诉书)。相反的“枫”则以和为贵,将情感寄托在望的身上。但是作品内,“枫”的性格很少出现,大多数都是以外国人性格(卡爱拉)出现,并批评望。
她的制服跟其他女生不同。由于她是女生中身形最好的,因此谁都认为她是提供走光场面(少年漫画常见的读者服务)的人选。虽然她曾提出不满,最终都会尽义务提供该种场面。
歌声极难听,但本人从无自觉。因玛太郎的一句“好烂的歌喉”而告她“侵害名誉罪”及“妨害营业罪”(参照第三集的卷末诉讼)。
原本她应是为了提升全班成绩而来的“国外班”学生,但在学期末考试的成绩却只得全班第30名(因为考试时中途离场)。
点名簿上注明“伟大的子女”(子女様)及“已和解”(示谈済み)。
名字的由来是英日混血儿的摇滚乐歌手木村カエラ(日)(Kaela Kimula)及“回去”(帰れ)。
小节浴(小节 あびる/こぶし あびる)
2年へ组的女生,学生编号是22号。是个喜欢尾巴,疑似遭到家庭暴力虐待(家暴)的少女。
出场的时候,常常带著满身伤痕,褢紧绷带及贴满胶布,样子甚是疼痛。实际上只是由于喜欢捉弄动物的尾巴,而引起的伤痕而已。
她除了喜欢捉弄动物尾巴外,更是尾巴的收集狂。另外她很积极地帮绝望老师找寻适合的尾巴,并强行装上。
小时候因左眼受伤而接受过角膜移植手术,但为免看到角膜捐赠者所遗下的残余映像,因此她的左眼经常包裹著(打开的话会看见异色瞳孔(オッドアイ)。
她的尾巴收集活动,实际上高调地违反濒临绝种野生动植物国际贸易公约,但这种描写仍能在作品内见到。
因有著浓厚的兴趣,于是在动物园做兼职。
但在小学的时候,她饲养的小鸡“小皮”(ピヨちゃん)被猫吃掉了,自此之后她对鸡肉有了痛苦的回忆。
别人见到她伤痕累累的外观,以为她是经常做运动的人,事实上她是运动白痴。相反,她在学期末考试得到全班第一名。
除了“尾巴迷”的特性以外,她在女生中时常保持冷静的态度。相比起日塔奈美,她大多能直入话题核心。但当接触到关于动物的话题时,能见到她愉快的表情。
初期出场时,所有人(包括绝望老师)均以为她是被父亲施以家庭暴力,事实刚好相反。(参见第30话“黑暗火锅”)
在初期设定中,她是没有辫子的。
点名簿上注明“DV?”(即“疑似家暴?”,后被消去)“强装尾巴”(しっぽ强要)
名字的由来是“沐浴于暴力中”(拳(を)浴びる)。
小森雾(こもり きり)
2年へ组的女生,学生编号是21号。是个闭门不出的少女。
对于心仪对象,她不会有直接而积极的行动,但会在背后默默付出。
由一年级开始就窝在家里的逃学学生。何时都用毛巾布(冬天时用被褥)包裹著自己,比起校服,较爱穿体育服上衣作制服。经过可符香的“座敷童子作战”后,终回到学校上课,却变成了“不放学”少女。
在“座敷童子作战”的事件后,她原有的家已被破坏,因此除了现在藏身的课室以外,已经没有居所了。又,初出场时言词粗暴的性格,在事件后亦变得温顺了。
由于她藏身的地方并不是へ组的课室,而平常都不到自己的班级上课,因此学业较差,期末考成绩只得第24名。
对白数量因出场机会少而减低,但当自己有所主张的时候,就会现身。
日常的生活井井有条。望与糸色交的宿职室生活开始后,家事由她全盘代理。这类型的情节可能与‘喜欢无赖男 (だめんず・うぉ~か~)’相似。
最初构思本作时,作者想创作关于不上学少女“奈美”与不放学少年“宇都宫”之间的恋爱故事。而这位不放学少年的设定后来演变成小森雾的设定蓝本。
名字的由来是“结束家里蹲的生活”(笼もりきり)。
关内・玛丽亚・太郎(関内・マリア・太郎/せきうつ・マリア・たろう)
2年へ组的女生,学生编号是8号。是个非法进校.难民少女。通称玛太郎。
虽拥有浅黑的亚洲型肤色,但国藉不明。因为故乡发生战争,由某个亚洲国家经货柜非法入境。她的户籍及学号均向关内太郎买回来的(名字中的“玛丽亚”是由日本的神父取的)。
由于在故乡野外长大的关系,她拥有优秀的体力、视力及嗅觉。因为讨厌穿鞋子跟内裤的感觉,所以经常不穿内裤及光著脚跑来跑去(冬天亦如是)。动静与‘DEATH NOTE’的L相似,例如抱膝蹲坐在椅子上。
与其他女生不同,她没有出场用的便服,将校服当便服用。而且,她相当珍惜还能使用的物品,纵使一般城市人认为它们已是垃圾。这种态度让大家都想保护她,最终蕴酿成“班上的国际救援活动”(クラス内ODA),木村卡爱拉命名)。
即使极度贫穷亦坚强地生活著,日常生活所需由班上的援助得来。不足时靠拾回来的食物及将大型垃圾循环再用,维持生活。
在她初出场时,绝望老师因出外搜集资料而请假了,因此老师对她一无所知,并在点名簿上注明“谁啊?”。但老师对此并无深究之意。
基于学藉是从男生买回来的,学号设定等方面,均有男性化处理的描写。
贫困而食量大的特征,可说跟《妄想改造人改蔵》中的山田先生相似。
名字的由来是“卖掉身份吧”(籍、売ったろう),但表面的说法是“迁移身份吧”(籍、移たろう)。
常月缠(常月 まとい/つねつき まとい)
2年へ组的女生,学生编号是25号。是个超恋爱性格・跟踪狂少女。
拥有丰富的异性交往经验,常因过剩的感情而发展成跟踪狂的行为(至于详细的原因有待说明,事实上本人对此问题并无自觉)。她很容易堕入情网,并配合心仪对象改变打扮。现在的衣著是和式女学生服装(类似明治时代女学生流行的上学装束)。台词方面变成了古式日语语法(歴史的仮名遣い(日))(在日文原文中才能看到)。
视绝望先生为跟踪目标后,每一话中都能见到她隐藏在某处;但绝望先生本人并不知情。因此每次她出场时,总是被老师问道:“你在这里的吗?”(いたんですか?”)
由于保持跟踪狂的姿态,平常在班上甚少发言;不过在谈及有关恋爱的话题时,她会积极地提出意见。
点名簿上注明“重视爱情”(爱が重い)。
名字的由来是“经常离不开”(常(に)付き缠い)。
日塔奈美(ひとう なみ)
2年へ组的女生,学生编号是27号。是个普通(平凡)少女。
可符香的幼年朋友,常被形容为普通的人,原本是个有心理阴影、说著“普通”说话的逃学少女。初出场时,为引起各方注意而故意不上学、说著(本该) 会让人担心的说话(恐怕只是谎言)。由于相比同班同学,她是个价值观与言行最中庸并符合一般人常识的人,因此未得到各方注意而受到打击。
为了展现奈美“普通”的特征,台词会用“普通”的字句,她的故事也是“普通”地展开。这种角色的存在其实算是本作的异数,但由于没有限制出场次数的要素,因此她的出场频率极高。意外地上围丰满。她会使用个人电脑及麦金塔(但她被认为是以平价购入,并属于轻量用户)。成绩也是平平,家庭也是很普通。但是她讨厌被人认为“普通”。
在杂志的访问中,作者曾表示本作的初期构想,是由奈美作女主角,与不放学少年的恋爱故事。
名字的由来是“普通人”(人并み)。
藤吉晴美(ふじよし はるみ)
2年へ组的女生,学生编号是28号。是个喜欢耳朵(迷)・配对连结中毒少女。
热心的御宅族少女,对于眼镜及猫耳非常执著。曾强行在绝望老师的头上装上狸猫耳朵。
对男男配(男性角色配对)抱有强烈兴趣,亦对此有深入的认识。除此之外,对全套高达系列的认识相当深厚。从她的画作和家中的同人志存货可以发现,支持的配对包括钢弹SEED的迪亚卡X伊萨克(ディアイザ),并曾经公开发言表示支持阿斯兰X 卡佳里(アスカガ)。对于不接受的配对表现得相当抗拒,例如议长X雷(ギルレイ),也曾经因为配对问题和朋友翻脸,可说是标准的同人女。
她一直有参加同人志的制作,主题以yaoi为主,但拙于绘画正常向漫画(指异性恋的漫画故事)。过去曾创作过同人杂志“ヂャンプ”(少年JUMP的谐仿)与町内会报中连载的四格漫画(单行本上好像有刊载过)。
家里有三位就读于萌萌木动画学院,而三兄是逃学生(不登校),但晴美对此相当介意,从没向他人提及过。
姓氏的由来是腐女子(ふじょし), 名字的由来是晴海(はるみ),日本Comic Market举行的地区。
三珠 真夜(みたま まよ)
2年へ组的女生,学生编号是30号。是个人如其貌的少女。
样子长得很像会做坏事的人,但由于大家迂回的思考方式,即使她做了坏事,人们也认为不是她做的。
特别喜欢欺负喜欢的事物,对其他人却保持无差别的对待方式。
不知何故地喜欢在绝望老师的住所放火。
她在施行恶作剧时,将幼木棒插进狗的肛门中,这头被称为“棒犬”的小狗后来变成了每集都有出现的标志之一。
名字的由来是“人如其貌”(みたま まよ)。
小琴琴(ことのん)
2年へ组的女生,本名与学生编号不明。是个网络偶像。
现实中的身形肥胖,网页上的相片都是经过电脑绘图软件的修改的。好像在网络上受欢迎的样子。
持有Photoshop认证资格。
喜以歌德萝莉(ゴスロリ)装束示人。
名字的由来可能是日本声优三石琴乃(みついし ことの)。
丸井、三角、正方
茶道部部员,学年、班级、学号均不明。
由于部长木津千里强制执行,三人的发型都被分成对称的中分式样。
由于茶道部室的名牌并没有注明哪个名字对应哪位部员,因此并不清楚三人之间,谁人用哪个名字。
男学生
臼井 影郎(うすい かげろう)
2年へ组的男生,学生编号是3号。他是班长,头发与存在感同样稀簿。
原本担当著班长的职务,但由于存在感稀簿,令同学们都想不起他是班长的事实。当人们见到头上的地中海时,他的存在感才稍有增加。
在作品内的登场次数颇多。为表达稀簿的存在感,绘画他的线条比其他角色来得幼细。
他利用存在感稀簿的特性进行偷窥,亦有恋足癖。
现在暗恋著小节浴,可是未能传达心意。但是,让人不可置信地,当小节浴养的小鸟死了以后,就在翌日邀请她去烧鸡店吃东西。另外也发生过因偷取数百对小节浴的鞋子而被捕的事情。
他的角色定位与《妄想改造人改蔵》初期的地丹相似,但臼井的角色原型是《太阳战士Bokaboka》的客席角色臼井ひろし。
名字的由来是“影子是薄的”(影が薄い),以及狮蚁(日文名为ウスバカゲロウ)。名字“影郎”可能取材自日本官能小说家“睦月影郎(日)”。
久藤准(くどう じゅん)
2年へ组的男生,学生编号是6号。是个天才说书人,能将任何事说成童话并感动人心。
喜爱阅读,学校图书馆内大部份的书都已借阅过,梦想能读遍天下的书。作为读书家,对书籍的评价相当严厉。文学取向方面,有著古式写实主义的倾向。学业成绩也很优秀。
性格温柔沉静,在女生中颇受欢迎。
名字的由来是ジュンク堂书店,以及该书店的创办人兼社长・工藤恭孝的父亲“工藤淳”。
教师
新井智惠(あらい ちえ,当使用日文的训读时,会变成にい ちえ)
学生辅导室的女教师。
处事有条理而冷静,能以静默震慑人心。言词精辟,而且毫不客气,但却让人很受落。
这种有话说说的性格,延伸出施虐者的倾向,可见其SM女王特质的一面。
作品内曾暗示她做过风月场所兼职(运用其SM女王的特质)的事情,但真相未明。
名字的由来是德国哲学家弗里德里希·尼采(日文略称作ニーチェ)。
甚六先生
绝望先生的同事,中年男子。初期单行本的人物介绍中列有他的名字。
喜欢玩弹珠机,从年轻时已迷上视觉系音乐,现时热中于乐队(ミュージシャン) Nightmare(日)的音乐。
与老实的外表相反,背上有刺青,似是拥有相当激烈的过去,但详细未明。
名字的由来是螺江小姐(サザエさん)的伊佐坂甚六(家中长男,过著流浪人的生活)。
糸色家
是信州县蔵井泽市的望族。
江户时代是领主家族,到了明治时期成为财阀家族,因此现今对地方上仍有强大的影响力。
将姓氏的二字合并后,就成为了“绝”字,只要加上名字,就可以构成许多妙趣横生的词语。
糸色大
望的父亲,亦是糸色家的当家。是位地方议员。
性格爽快,尤其当遇到好玩的事的时候。
曾于久藤准的想像图出现过。
名字合并后,会变成“绝大”一词。
糸色妙
望的母亲,除了家族图以外,暂未在作品的其他地方出现过。
名字合并后,会变成“绝妙”一词。
糸色縁
家中长子,不知何故与父亲断绝了关系,有一子。
名字合并后,会变成“绝缘”一词。
可符香称他作“绝缘老师”(原文“绝缘先生”),可是原因未明。
糸色景
家中次子,终极的自我完结型艺术家。
极端的自我中心,无视他人的说话。即使是客观的论调,也会用自己的主观压倒一切,行为乖僻。但与弟弟们不同,他的思考极度正面。
艺术作品看来受到好评,不时举行展览。拥有创作室(atelier)‘景’,里面有他的太太“由香”。
名字合并后,会变成“绝景”一词。
糸色命
家中三子,是个医生,经营“糸色医院”,但因为“绝命医生”之名而乏人问津。
无论何时都穿著白色医生袍。平常知性而冷静,但当听到人们说“绝命医生”(原文“绝命先生”)时就会暴走,因此在他面前这是禁语。
性格方面,比起其他兄弟,他较为好强要胜。尤其是对弟弟望,态度更为明显。
名字合并后,会变成“绝命”一词。可符香称呼他为“绝命医生”。
糸色望
四子,详情请参阅前文
糸色伦
家中长女,是位年仅17岁的糸色流花道教师,拥有三千弟子;另外亦拥有优秀的剑道技术。
由于以淑女的方式培育,因此她的言行具有古风贵族小姐的风范,金钱的概念亦与一般人不同。
憧憬贫穷的生活,故不时来到东京的糸色望住所游玩,平时住在家乡。
名字合并后,会变成“绝伦”一词。可符香称呼她为“绝伦老师”。因此她跟兄长一样,讨厌自己的姓氏,并希望藉著出嫁,脱离“糸色”的姓氏。::名字合并后,会变成“绝伦”一词。可符香称呼她为“绝伦老师”。
糸色交
缘的儿子,由于在街上错认糸色望作父亲,因而后来住在一起。
由于在家族以外的地方长大,故用词较少,但没有恶劣的感觉。但是他有轻微的自杀倾向。又,由于现正处于对外界事物好奇而敏感的年龄,同时受到一连串的惊吓(由绝望老师及2年へ组同学的骚动所造成的),因此对事物的心理阴影逐渐增加。
名字合并后,会变成“绝交”一词。因此可符香称呼他为“绝交弟弟”。
时田
糸色家的管家,全名不明,现经常伴随糸色伦出入。
性格沉著,忠诚度高,擅长情报收集、贴身调查、以及秘密工作等活动。
角色的参考为《无敌钢人泰坦3》出场的“时田管家”。作者让他出场的理由是“为了对抗现有的管家漫画”。针对负债管家么?
其他
以下是每话经常出现的隐藏图像
(括号标明开始成为隐藏图像的话数)
常月缠(第5话)
视绝望先生为跟踪目标后,差不多每话都有躲在绝望老师附近。
女性裙底走光的场面(パンチラ)(第7话)
由木村卡爱拉负责。
皇帝企鹅(第21话)
首次出场后,成为绝望先生家中的宠物,同时亦成为每话封面内隐藏的图像之一。
鹤(第42话)
被喻为送子(糸色交)的仙鹤。
樱井良子(樱井よしこ)(第13话)
棒犬
被三珠真夜虐待的小狗。
麻生太郎(第59话)
手上会拿著不同的读物,首度出场时在阅读蔷薇少女(Rozen Maiden)。
囧死的日本外相的客串
黑色的眼泪(第53话)
『叁』 kafka server.properties怎样配置
Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成,其中Spark Streaming作为后端流引擎配合Kafka作为前端消息系统正成为当前流处理系统的主流架构之一。
然而,当下越来越多的安全漏洞、数据泄露等问题的爆发,安全正成为系统选型不得不考虑的问题,Kafka由于其安全机制的匮乏,也导致其在数据敏感行业的部署存在严重的安全隐患。本文将围绕Kafka,先介绍其整体架构和关键概念,再深入分析其架构之中存在的安全问题,最后分享下Transwarp在Kafka安全性上所做的工作及其使用方法。
Kafka架构与安全
首先,我们来了解下有关Kafka的几个基本概念:
Topic:Kafka把接收的消息按种类划分,每个种类都称之为Topic,由唯一的Topic Name标识。
Procer:向Topic发布消息的进程称为Procer。
Consumer:从Topic订阅消息的进程称为Consumer。
Broker:Kafka集群包含一个或多个服务器,这种服务器被称为Broker。
Kafka的整体架构如下图所示,典型的Kafka集群包含一组发布消息的Procer,一组管理Topic的Broker,和一组订阅消息的Consumer。Topic可以有多个分区,每个分区只存储于一个Broker。Procer可以按照一定的策略将消息划分给指定的分区,如简单的轮询各个分区或者按照特定字段的Hash值指定分区。Broker需要通过ZooKeeper记录集群的所有Broker、选举分区的Leader,记录Consumer的消费消息的偏移量,以及在Consumer Group发生变化时进行relalance. Broker接收和发送消息是被动的:由Procer主动发送消息,Consumer主动拉取消息。
然而,分析Kafka框架,我们会发现以下严重的安全问题:
1.网络中的任何一台主机,都可以通过启动Broker进程而加入Kafka集群,能够接收Procer的消息,能够篡改消息并发送给Consumer。
2.网络中的任何一台主机,都可以启动恶意的Procer/Consumer连接到Broker,发送非法消息或拉取隐私消息数据。
3.Broker不支持连接到启用Kerberos认证的ZooKeeper集群,没有对存放在ZooKeeper上的数据设置权限。任意用户都能够直接访问ZooKeeper集群,对这些数据进行修改或删除。
4.Kafka中的Topic不支持设置访问控制列表,任意连接到Kafka集群的Consumer(或Procer)都能对任意Topic读取(或发送)消息。
随着Kafka应用场景越来越广泛,特别是一些数据隐私程度较高的领域(如道路交通的视频监控),上述安全问题的存在犹如一颗定时炸弹,一旦内网被黑客入侵或者内部出现恶意用户,所有的隐私数据(如车辆出行记录)都能够轻易地被窃取,而无需攻破Broker所在的服务器。
Kafka安全设计
基于上述分析,Transwarp从以下两个方面增强Kafka的安全性:
身份认证(Authentication):设计并实现了基于Kerberos和基于IP的两种身份认证机制。前者为强身份认证,相比于后者具有更好的安全性,后者适用于IP地址可信的网络环境,相比于前者部署更为简便。
权限控制(Authorization):设计并实现了Topic级别的权限模型。Topic的权限分为READ(从Topic拉取数据)、WRITE(向Topic中生产数据)、CREATE(创建Topic)和DELETE(删除Topic)。
基于Kerberos的身份机制如下图所示:
Broker启动时,需要使用配置文件中的身份和密钥文件向KDC(Kerberos服务器)认证,认证通过则加入Kafka集群,否则报错退出。
Procer(或Consumer)启动后需要经过如下步骤与Broker建立安全的Socket连接:
1.Procer向KDC认证身份,通过则得到TGT(票证请求票证),否则报错退出
2.Procer使用TGT向KDC请求Kafka服务,KDC验证TGT并向Procer返回SessionKey(会话密钥)和ServiceTicket(服务票证)
3.Procer使用SessionKey和ServiceTicket与Broker建立连接,Broker使用自身的密钥解密ServiceTicket,获得与Procer通信的SessionKey,然后使用SessionKey验证Procer的身份,通过则建立连接,否则拒绝连接。
ZooKeeper需要启用Kerberos认证模式,保证Broker或Consumer与其的连接是安全的。
Topic的访问控制列表(ACL)存储于ZooKeeper中,存储节点的路径为/acl/<topic>/<user>,节点数据为R(ead)、W(rite)、C(reate)、D(elete)权限的集合,如/acl/transaction/jack节点的数据为RW,则表示用户jack能够对transaction这个topic进行读和写。
另外,kafka为特权用户,只有kafka用户能够赋予/取消权限。因此,ACL相关的ZooKeeper节点权限为kafka具有所有权限,其他用户不具有任何权限。
构建安全的Kafka服务
首先,我们为Broker启用Kerberos认证模式,配置文件为/etc/kafka/conf/server.properties,安全相关的参数如下所示:
其中,authentication参数表示认证模式,可选配置项为simple, kerberos和ipaddress,默认为simple。当认证模式为kerberos时,需要额外配置账户属性principal和对应的密钥文件路径keytab.
认证模式为ipaddress时,Procer和Consumer创建时不需要做任何改变。而认证模式为kerberos时,需要预先创建好相应的principal和keytab,并使用API进行登录,样例代码如下所示:
public class SecureProcer extends Thread {
private final kafka.javaapi.procer.Procer<Integer, String> procer;
private final String topic;
private final Properties props = new Properties();
public SecureProcer(String topic) {
AuthenticationManager.setAuthMethod(“kerberos”);
AuthenticationManager.login(“procer1″, “/etc/procer1.keytab”);
props.put(“serializer.class”, “kafka.serializer.StringEncoder”);
props.put(“metadata.broker.list”,
“172.16.1.190:9092,172.16.1.192:9092,172.16.1.193:9092″);
// Use random partitioner. Don’t need the key type. Just set it to Integer.
// The message is of type String.
procer = new kafka.javaapi.procer.Procer<Integer, String>(
new ProcerConfig(props));
this.topic = topic;
『肆』 连接在一个安全的Kerberos认证蜂巢集群使用keytab问题,怎么解决
扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成,其中Spark
Streaming作为后端流引擎配合Kafka作为前端消息系统正成为当前流处理系统的主流架构之一。
然而,当下越来越多的安全漏
洞、数据泄露等问题的爆发,安全正成为系统选型不得不考虑的问题,Kafka由于其安全机制的匮乏,也导致其在数据敏感行业的部署存在严重的安全隐患。本
文将围绕Kafka,先介绍其整体架构和关键概念,再深入分析其架构之中存在的安全问题,最后分享下Transwarp在Kafka安全性上所做的工作及
其使用方法。
Kafka架构与安全
首先,我们来了解下有关Kafka的几个基本概念:
Topic:Kafka把接收的消息按种类划分,每个种类都称之为Topic,由唯一的Topic Name标识。
Procer:向Topic发布消息的进程称为Procer。
Consumer:从Topic订阅消息的进程称为Consumer。
Broker:Kafka集群包含一个或多个服务器,这种服务器被称为Broker。
Kafka的整体架构如下图所示,典型的Kafka集群包含一组发布消息的Procer,一组管理Topic的Broker,和一组订阅消息的
Consumer。Topic可以有多个分区,每个分区只存储于一个Broker。Procer可以按照一定的策略将消息划分给指定的分区,如简单的
轮询各个分区或者按照特定字段的Hash值指定分区。Broker需要通过ZooKeeper记录集群的所有Broker、选举分区的Leader,记录
Consumer的消费消息的偏移量,以及在Consumer Group发生变化时进行relalance.
Broker接收和发送消息是被动的:由Procer主动发送消息,Consumer主动拉取消息。
然而,分析Kafka框架,我们会发现以下严重的安全问题:
网络中的任何一台主机,都可以通过启动Broker进程而加入Kafka集群,能够接收Procer的消息,能够篡改消息并发送给Consumer。
网络中的任何一台主机,都可以启动恶意的Procer/Consumer连接到Broker,发送非法消息或拉取隐私消息数据。
Broker不支持连接到启用Kerberos认证的ZooKeeper集群,没有对存放在ZooKeeper上的数据设置权限。任意用户都能够直接访问ZooKeeper集群,对这些数据进行修改或删除。
Kafka中的Topic不支持设置访问控制列表,任意连接到Kafka集群的Consumer(或Procer)都能对任意Topic读取(或发送)消息。
随着Kafka应用场景越来越广泛,特别是一些数据隐私程度较高的领域(如道路交通的视频监控),上述安全问题的存在犹如一颗定时炸弹,一旦内网被黑客
入侵或者内部出现恶意用户,所有的隐私数据(如车辆出行记录)都能够轻易地被窃取,而无需攻破Broker所在的服务器。
Kafka安全设计
基于上述分析,Transwarp从以下两个方面增强Kafka的安全性:
身份认证(Authentication):设计并实现了基于Kerberos和基于IP的两种身份认证机制。前者为强身份认证,相比于后者具有更好的安全性,后者适用于IP地址可信的网络环境,相比于前者部署更为简便。
权限控制(Authorization):设计并实现了Topic级别的权限模型。Topic的权限分为READ(从Topic拉取数据)、WRITE(向Topic中生产数据)、CREATE(创建Topic)和DELETE(删除Topic)。
Broker启动时,需要使用配置文件中的身份和密钥文件向KDC(Kerberos服务器)认证,认证通过则加入Kafka集群,否则报错退出。
Procer(或Consumer)启动后需要经过如下步骤与Broker建立安全的Socket连接:
Procer向KDC认证身份,通过则得到TGT(票证请求票证),否则报错退出
Procer使用TGT向KDC请求Kafka服务,KDC验证TGT并向Procer返回SessionKey(会话密钥)和ServiceTicket(服务票证)
Procer
使用SessionKey和ServiceTicket与Broker建立连接,Broker使用自身的密钥解密ServiceTicket,获得与
Procer通信的SessionKey,然后使用SessionKey验证Procer的身份,通过则建立连接,否则拒绝连接。
ZooKeeper需要启用Kerberos认证模式,保证Broker或Consumer与其的连接是安全的。
Topic的访问控制列表(ACL)存储于ZooKeeper中,存储节点的路径为/acl/<topic>/<user>,
节点数据为R(ead)、W(rite)、C(reate)、D(elete)权限的集合,如/acl/transaction/jack节点的数据为
RW,则表示用户jack能够对transaction这个topic进行读和写。
另外,kafka为特权用户,只有kafka用户能够赋予/取消权限。因此,ACL相关的ZooKeeper节点权限为kafka具有所有权限,其他用户不具有任何权限。
构建安全的Kafka服务
首先,我们为Broker启用Kerberos认证模式,配置文件为/etc/kafka/conf/server.properties,安全相关的参数如下所示:
其中,authentication参数表示认证模式,可选配置项为simple, kerberos和ipaddress,默认为simple。当认证模式为kerberos时,需要额外配置账户属性principal和对应的密钥文件路径keytab.
认证模式为ipaddress时,Procer和Consumer创建时不需要做任何改变。而认证模式为kerberos时,需要预先创建好相应的principal和keytab,并使用API进行登录,样例代码如下所示:
public class SecureProcer extends Thread {
private final kafka.javaapi.procer.Procer<Integer, String> procer;
private final String topic;
private final Properties props = new Properties();
public SecureProcer(String topic) {
AuthenticationManager.setAuthMethod("kerberos");
AuthenticationManager.login("procer1", "/etc/procer1.keytab");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("metadata.broker.list",
"172.16.1.190:9092,172.16.1.192:9092,172.16.1.193:9092");
// Use random partitioner. Don't need the key type. Just set it to Integer.
// The message is of type String.
procer = new kafka.javaapi.procer.Procer<Integer, String>(
new ProcerConfig(props));
this.topic = topic;
}
. . .
Topic权限管理
Topic的权限管理主要是通过AuthorizationManager这个类来完成的,其类结构如下图所示:
其中,resetPermission(user, Permissions, topic) 为重置user对topic的权限。
grant(user, Permissions, topic) 为赋予user对topic权限。
revoke(user, Permissions, topic) 为取消user对topic权限。
isPermitted(user, Permissions, topic) 为检查user对topic是否具有指定权限。
调用grant或revoke进行权限设置完成后,需要commit命令提交修改到ZooKeeper
Kerberos模式下,AuthorizationManager需要先使用AuthenticationManager.login方法登录,与ZooKeeper建立安全的连接,再进行权限设置。示例代码如下所示:
public class AuthzTest {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("authentication", "kerberos");
props.setProperty("zookeeper.connect", "172.16.2.116:2181,172.16.2.117:2181,172.16.2.118:2181");
props.setProperty("principal", "kafka/host1@TDH");
props.setProperty("keytab", "/usr/lib/kafka/config/kafka.keytab");
ZKConfig config = new ZKConfig(props);
AuthenticationManager.setAuthMethod(config.authentication());
AuthenticationManager.login(config.principal(), config.keytab());
AuthorizationManager authzManager = new AuthorizationManager(config);
// reset permission READ and WRITE to ip 172.16.1.87 on topic test
authzManager.resetPermission("172.16.1.87",
new Permissions(Permissions.READ, Permissions.WRITE), "test");
// grant permission WRITE to ip 172.16.1.87 on topic test
authzManager.grant("172.16.1.87", new Permissions(Permissions.CREATE), "test");
// revoke permission READ from ip 172.16.1.87 on topic test
authzManager.revoke("172.16.1.87", new Permissions(Permissions.READ), "test");
// commit the permission settings
authzManager.commit();
authzManager.close();
}
}
ipaddress认证模式下,取消和赋予权限的操作如下所示:
public class AuthzTest {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("authentication", "ipaddress");
props.setProperty("zookeeper.connect",
"172.16.1.87:2181,172.16.1.88:2181,172.16.1.89:2181");
ZKConfig config = new ZKConfig(props);
// new authorization manager
AuthorizationManager authzManager = new AuthorizationManager(config);
// reset permission READ and WRITE to ip 172.16.1.87 on topic test
authzManager.resetPermission("172.16.1.87",
new Permissions(Permissions.READ, Permissions.WRITE), "test");
// grant permission WRITE to ip 172.16.1.87 on topic test
authzManager.grant("172.16.1.87", new Permissions(Permissions.CREATE), "test");
// revoke permission READ from ip 172.16.1.87 on topic test
authzManager.revoke("172.16.1.87", new Permissions(Permissions.READ), "test");
// commit the permission settings
authzManager.commit();
authzManager.close();
}
}
『伍』 kafka发送消息的时候报超时,有人遇到过吗
Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成,其中SparkStreaming作为后端流引擎配合Kafka作为前端消息系统正成为当前流处理系统的主流架构之一。然而,当下越来越多的安全漏洞、数据泄露等问题的爆发,安全正成为系统选型不得不考虑的问题,Kafka由于其安全机制的匮乏,也导致其在数据敏感行业的部署存在严重的安全隐患。本文将围绕Kafka,先介绍其整体架构和关键概念,再深入分析其架构之中存在的安全问题,最后分享下Transwarp在Kafka安全性上所做的工作及其使用方法。Kafka架构与安全首先,我们来了解下有关Kafka的几个基本概念:Topic:Kafka把接收的消息按种类划分,每个种类都称之为Topic,由唯一的TopicName标识。Procer:向Topic发布消息的进程称为Procer。Consumer:从Topic订阅消息的进程称为Consumer。Broker:Kafka集群包含一个或多个服务器,这种服务器被称为Broker。Kafka的整体架构如下图所示,典型的Kafka集群包含一组发布消息的Procer,一组管理Topic的Broker,和一组订阅消息的Consumer。Topic可以有多个分区,每个分区只存储于一个Broker。Procer可以按照一定的策略将消息划分给指定的分区,如简单的轮询各个分区或者按照特定字段的Hash值指定分区。Broker需要通过ZooKeeper记录集群的所有Broker、选举分区的Leader,记录Consumer的消费消息的偏移量,以及在ConsumerGroup发生变化时进行relalance.Broker接收和发送消息是被动的:由Procer主动发送消息,Consumer主动拉取消息。然而,分析Kafka框架,我们会发现以下严重的安全问题:1.网络中的任何一台主机,都可以通过启动Broker进程而加入Kafka集群,能够接收Procer的消息,能够篡改消息并发送给Consumer。2.网络中的任何一台主机,都可以启动恶意的Procer/Consumer连接到Broker,发送非法消息或拉取隐私消息数据。3.Broker不支持连接到启用Kerberos认证的ZooKeeper集群,没有对存放在ZooKeeper上的数据设置权限。任意用户都能够直接访问ZooKeeper集群,对这些数据进行修改或删除。4.Kafka中的Topic不支持设置访问控制列表,任意连接到Kafka集群的Consumer(或Procer)都能对任意Topic读取(或发送)消息。随着Kafka应用场景越来越广泛,特别是一些数据隐私程度较高的领域(如道路交通的视频监控),上述安全问题的存在犹如一颗定时炸弹,一旦内网被黑客入侵或者内部出现恶意用户,所有的隐私数据(如车辆出行记录)都能够轻易地被窃取,而无需攻破Broker所在的服务器。Kafka安全设计基于上述分析,Transwarp从以下两个方面增强Kafka的安全性:身份认证(Authentication):设计并实现了基于Kerberos和基于IP的两种身份认证机制。前者为强身份认证,相比于后者具有更好的安全性,后者适用于IP地址可信的网络环境,相比于前者部署更为简便。权限控制(Authorization):设计并实现了Topic级别的权限模型。Topic的权限分为READ(从Topic拉取数据)、WRITE(向Topic中生产数据)、CREATE(创建Topic)和DELETE(删除Topic)。基于Kerberos的身份机制如下图所示:Broker启动时,需要使用配置文件中的身份和密钥文件向KDC(Kerberos服务器)认证,认证通过则加入Kafka集群,否则报错退出。Procer(或Consumer)启动后需要经过如下步骤与Broker建立安全的Socket连接:1.Procer向KDC认证身份,通过则得到TGT(票证请求票证),否则报错退出2.Procer使用TGT向KDC请求Kafka服务,KDC验证TGT并向Procer返回SessionKey(会话密钥)和ServiceTicket(服务票证)3.Procer使用SessionKey和ServiceTicket与Broker建立连接,Broker使用自身的密钥解密ServiceTicket,获得与Procer通信的SessionKey,然后使用SessionKey验证Procer的身份,通过则建立连接,否则拒绝连接。ZooKeeper需要启用Kerberos认证模式,保证Broker或Consumer与其的连接是安全的。Topic的访问控制列表(ACL)存储于ZooKeeper中,存储节点的路径为/acl//,节点数据为R(ead)、W(rite)、C(reate)、D(elete)权限的集合,如/acl/transaction/jack节点的数据为RW,则表示用户jack能够对transaction这个topic进行读和写。另外,kafka为特权用户,只有kafka用户能够赋予/取消权限。因此,ACL相关的ZooKeeper节点权限为kafka具有所有权限,其他用户不具有任何权限。构建安全的Kafka服务首先,我们为Broker启用Kerberos认证模式,配置文件为/etc/kafka/conf/server.properties,安全相关的参数如下所示:其中,authentication参数表示认证模式,可选配置项为simple,kerberos和ipaddress,默认为simple。当认证模式为kerberos时,需要额外配置账户属性principal和对应的密钥文件路径keytab.认证模式为ipaddress时,Procer和Consumer创建时不需要做任何改变。而认证模式为kerberos时,需要预先创建好相应的principal和keytab,并使用API进行登录,样例代码如下所示:{privatefinalkafka.javaapi.procer.Procerprocer;privatefinalStringtopic;privatefinalPropertiesprops=newProperties();publicSecureProcer(Stringtopic){AuthenticationManager.setAuthMethod(“kerberos”);AuthenticationManager.login(“procer1″,“/etc/procer1.keytab”);props.put(“serializer.class”,“kafka.serializer.StringEncoder”);props.put(“metadata.broker.list”,“172.16.1.190:9092,172.16.1.192:9092,172.16.1.193:9092″);//Userandompartitioner.Don’tneedthekeytype.JustsetittoInteger.//ThemessageisoftypeString.procer=newkafka.javaapi.procer.Procer(newProcerConfig(props));this.topic=topic;}...Topic权限管理Topic的权限管理主要是通过AuthorizationManager这个类来完成的,其类结构如下图所示:其中,resetPermission(user,Permissions,topic)为重置user对topic的权限。grant(user,Permissions,topic)为赋予user对topic权限。revoke(user,Permissions,topic)为取消user对topic权限。isPermitted(user,Permissions,topic)为检查user对topic是否具有指定权限。调用grant或revoke进行权限设置完成后,需要commit命令提交修改到ZooKeeperKerberos模式下,AuthorizationManager需要先使用AuthenticationManager.login方法登录,与ZooKeeper建立安全的连接,再进行权限设置。示例代码如下所示:publicclassAuthzTest{publicstaticvoidmain(String[]args){Propertiesprops=newProperties();props.setProperty(“authentication”,“kerberos”);props.setProperty(“zookeeper.connect”,“172.16.2.116:2181,172.16.2.117:2181,172.16.2.118:2181″);props.setProperty(“principal”,“kafka/host1@TDH”);props.setProperty(“keytab”,“/usr/lib/kafka/config/kafka.keytab”);ZKConfigconfig=newZKConfig(props);AuthenticationManager.setAuthMethod(config.authentication());AuthenticationManager.login(config.principal(),config.keytab());=newAuthorizationManager(config);//.16.1.87ontopictestauthzManager.resetPermission(“172.16.1.87″,newPermissions(Permissions.READ,Permissions.WRITE),“test”);//grantpermissionWRITEtoip172.16.1.87ontopictestauthzManager.grant(“172.16.1.87″,newPermissions(Permissions.CREATE),“test”);//revokepermissionREADfromip172.16.1.87ontopictestauthzManager.revoke(“172.16.1.87″,newPermissions(Permissions.READ),“test”);//.commit();authzManager.close();}}ipaddress认证模式下,取消和赋予权限的操作如下所示:publicclassAuthzTest{publicstaticvoidmain(String[]args){Propertiesprops=newProperties();props.setProperty(“authentication”,“ipaddress”);props.setProperty(“zookeeper.connect”,“172.16.1.87:2181,172.16.1.88:2181,172.16.1.89:2181″);ZKConfigconfig=newZKConfig(props);//newauthorizationmanager=newAuthorizationManager(config);//.16.1.87ontopictestauthzManager.resetPermission(“172.16.1.87″,newPermissions(Permissions.READ,Permissions.WRITE),“test”);//grantpermissionWRITEtoip172.16.1.87ontopictestauthzManager.grant(“172.16.1.87″,newPermissions(Permissions.CREATE),“test”);//revokepermissionREADfromip172.16.1.87ontopictestauthzManager.revoke(“172.16.1.87″,newPermissions(Permissions.READ),“test”);//.commit();authzManager.close();}}总结与展望本文通过介绍Kafka现有架构,深入挖掘其中存在的安全问题,并给出Transwarp在Kafka安全上所做的工作及其使用方式。然而,纵观Hadoop&Spark生态系统,安全功能还存在很多问题,各组件的权限系统独立混乱,缺少集中易用的账户管理系统。某些组件的权限管理还很不成熟,如Spark的调度器缺少用户的概念,不能限制具体用户使用资源的多少。Transwarp基于开源版本,在安全方面已有相当多的积累,并持续改进开发,致力于为企业用户提供一个易用、高效、安全和稳定的基础数据平台。
『陆』 kafka 集群 必须用zookeeper吗
(1)解压为zookeepertar -xf -C /home/myuser/zookeeper/ 复制zookeeper文件夹3份,分别重名名为zookeeperA,zookeeperB,zookeeperC。 并且创建数据快照以及日志存放文件夹,命名为zooA,zooB,zooC。 (2)编辑对应的zookeeper配置文件
『柒』 如何决定kafka集群中话题的分区的数量
如何决定kafka集群中topic,partition的数量,这是许多kafka用户经常遇到的问题。本文列举阐述几个重要的决定因素,以提供一些参考。
分区多吞吐量更高
一个话题topic的各个分区partiton之间是并行的。在procer和broker方面,写不同的分区是完全并行的。因此一些昂贵的操作比如压缩,可以获得更多的资源,因为有多个进程。在consumer方面,一个分区的数据可以由一个consumer线程在拉去数据。分区多,并行的consumer(同一个消费组)也可以多。因此通常,分区越多吞吐量越高。
基于吞吐量可以获得一个粗略的计算公式。先测量得到在只有一个分区的情况下,Procer的吞吐量(P)和Consumer的吞吐量(C)。那如果总的目标吞吐量是T的话,max(T/P,T/C)就是需要的最小分区数。在单分区的情况下,Procer的吞吐量可以通过一些配置参数,比如bath的大小、副本的数量、压缩格式、ack类型来测得。而Consumer的吞吐量通常取决于应用程序处理每一天消息逻辑。这些都是需要切合实际测量。
随着时间推移数据量的增长可能会需要增加分区。有一点需要注意的是,Procer者发布消息通过key取哈希后映射分发到一个指定的分区,当分区数发生变化后,会带来key和分区映射关系发生变化。可能某些应用程序依赖key和分区映射关系,映射关系变化了,程序就需要做相应的调整。为了避免这种key和分区关系带来的应用程序修改。所以在分区的时候尽量提前考虑,未来一年或两年的对分区数据量的要求。
除了吞吐量,还有一些其他的因素,在定分区的数目时是值得考虑的。在某些情况下,太多的分区也可能会产生负面影响。
分区多需要的打开的文件句柄也多
每个分区都映射到broker上的一个目录,每个log片段都会有两个文件(一个是索引文件,另一个是实际的数据文件)。分区越多所需要的文件句柄也就越多,可以通过配置操作系统的参数增加打开文件句柄数。
分区多增加了不可用风险
kafka支持主备复制,具备更高的可用性和持久性。一个分区(partition)可以有多个副本,这些副本保存在不同的broker上。每个分区的副本中都会有一个作为Leader。当一个broker失败时,Leader在这台broker上的分区都会变得不可用,kafka会自动移除Leader,再其他副本中选一个作为新的Leader。Procer和Consumer都只会与Leader相连。
一般情况下,当一个broker被正常关机时,controller主动地将Leader从正在关机的broker上移除。移动一个Leader只需要几毫秒。然当broker出现异常导致关机时,不可用会与分区数成正比。假设一个boker上有2000个分区,每个分区有2个副本,那这样一个boker大约有1000个Leader,当boker异常宕机,会同时有1000个分区变得不可用。假设恢复一个分区需要5ms,1000个分区就要5s。
分区越多,在broker异常宕机的情况,恢复所需时间会越长,不可用风险会增加。
分区多会增加点到点的延迟
这个延迟需要体现在两个boker间主备数据同步。在默认情况下,两个boker只有一个线程负责数据的复制。
根据经验,每个boker上的分区限制在100*b*r内(b指集群内boker的数量,r指副本数量)。
分区多会增加客户端的内存消耗
kafka0.8.2后有个比较好的特色,新的Procer可以允许用户设置一个缓冲区,缓存一定量的数据。当缓冲区数据到达设定量或者到时间,数据会从缓存区删除发往broker。如果分区很多,每个分区都缓存一定量的数据量在缓冲区,很可能会占用大量的内存,甚至超过系统内存。
Consumer也存在同样的问题,会从每个分区拉一批数据回来,分区越多,所需内存也就越大。
根据经验,应该给每个分区分配至少几十KB的内存。
总结
在通常情况下,增加分区可以提供kafka集群的吞吐量。然而,也应该意识到集群的总分区数或是单台服务器上的分区数过多,会增加不可用及延迟的风险。
『捌』 spark读kafka 安全认证 求大神指导,可以支付财富值,也可以支付宝。。
kafka的常用命令
新建一个topic
./bin/kafka-topics.sh --create --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --partition 3 --replication-factor 3 --topic test-0
test-0是topic的名字
replication-factor 3 副本数
topic存储的是元数据,通过它找到真实的数据
改变分区
./bin/kafka-topics.sh --alter --zookeeper 192.168.14.131:2181,192.168.14.131:2182,192.168.14.131:2183 --partition 5 --topic test03
分区信息查询
./bin/kafka-topics.sh --describe --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --topic test-0
结果为:leader主分区(broker Id) replicationfactor副本数 Isr是否存活(存储的顺序)
Topic:test-0 PartitionCount:3 ReplicationFactor:3 Configs:
Topic: test-0 Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
Topic: test-0 Partition: 1 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2
Topic: test-0 Partition: 2 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
查询语句:
bin/kafka-topics.sh --list --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181
删除语句
bin/kafka-topics.sh --delete --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --topic test-0
结果是test-0 - marked for deletion
表示不能真正的删除只是做了个标记要删除取zookeeper去真正删除(这个配置如果设置为true可以真正删除,设置false不能删除)
#删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=false
rmr /brokers/topics/test-0 ,删除client中的brokers中topic对应的
rmr /config/topics/test-0 ,删配置
rmr /admin/delete_topics,删除admin中的标记为删除的topics
分区设置后只可以增加不可以减少
六API操作
启动生产者
./bin/kafka-console-procer.sh --broker-list 192.168.14.131:9092,192.168.14.132:9092,192.168.14.133:9092 --topic test03
启动消费者
./bin/kafka-console-consumer.sh --zookeeper 192.168.247.131:2181,192.168.247.132:2181,192.168.247.133:2181 --topic test03 --from-beginning