释放好奇心,提问赢奖金”第七期获奖名单来啦~
由于篇幅限制,本期只公布获奖金额前200的提问及获奖用户,所有获奖用户都会在名单公布后三个工作日内收到消息通知。
第七期奖金计算方式为提问发布后截至5月10日0点累计阅读量对应的获奖金额减去前期已发放奖金金额。奖金将于公布名单后三个工作日内发放,请耐心等待~
下一期获奖结果将于5月18日公布,期待大家多多提问~
如果你在活动中遇到任何问题,请在头条号后台-【问题咨询】或 APP - 【我的】-【用户反馈】中将问题反馈给我们~
< class="tableWrapper">获奖用户 | 提问内容 | 0511期获奖金额(元) |
霖先森科普那多 | 我大姨丁克,60岁了,想让我养老,我该怎么办? | 3205 |
娱圈八卦驿站 | 农村娶媳妇又出新规,“一动不动,一甩一扶”,到底是什么意思呢? | 2900 |
君临浩峰 | 在缅甸夜市上,有姑娘问要不要喝豆浆,该怎么回答? | 2655 |
笑看古今文史 | 美国首富将自己冷冻50年,本该在2017年复活,如今怎样了? | 2220 |
笑看古今文史 | 霍金到底预言了什么? | 1885 |
老刘看天下 | 凭借1万人民币在格鲁吉亚可以生活多久? | 1645 |
没有刘海的菜菜 | 有什么事情是去了印度才知道的? | 1305 |
八点观天下 | 狗的弱点在哪里?被疯狗攻击时正确的应对措施是什么? | 1260 |
每日趣谈壹加壹 | 买了河豚鱼被王大妈偷了后,煮给孙子吃,孙子被毒死,我有责任吗? | 1210 |
云间杂谈 | 很多中国男人去尼泊尔工作以后为什么不愿意回国了呢? | 1205 |
小桂圆的腹肌爸爸 | 爸爸可以给女儿洗澡到几岁? | 1175 |
慵懒的猫视频剪辑 | 狗的哪个部位最脆弱,遇到恶犬扑来,该打它哪里? | 1080 |
苗苗娱乐战 | 我中了彩票一等奖500万,有人出700万买我这张票,犯法吗? | 975 |
三哥话事 | 在非洲打工时,当地人有哪些行为最让你受不了? | 935 |
云间杂谈 | 为什么去柬埔寨工作的中国男人,大部分都不愿意娶当地的姑娘? | 840 |
仇伟 | 在俄罗斯住宿,导游为何说不能给晚上敲门的女性开门? | 660 |
九筒聊体育 | 广东队建立新王朝,每一位球员可以分到多少奖金? | 645 |
墨迹King杂谈 | 郭威因为什么原因让杜新枝道歉并赔偿金额?偷换吗? | 555 |
梧通 | 赛鸽的脚环到底有多贵,为什么要剪断鸽子腿取下脚环呢? | 505 |
流雷电 | 辽宁舰首位一级军士长退休,一级军士长是什么级别?容易获得吗? | 430 |
择天知事 | 监狱奇才李红涛,从死刑到16年后刑满释放,他到底经历了什么? | 395 |
爱思考有思想的健身男 | “父母九旬,还健在,未必是好事”为什么许多人相信这个谬论? | 395 |
左道的故事 | 医院里有哪些“潜规则”? | 380 |
大咖教育MCN | 钢盔根本不能挡子弹,为何还一定要戴? | 365 |
半桶观点 | 娶巴基斯坦姑娘做老婆的中国男人多吗?为什么? | 350 |
发哥浅谈 | 大连蛇岛上的两万多条蛇,都吃什么的?有什么够它们吃的吗? | 345 |
我的世界小迪 | 久别胜新婚,你见到丈夫回家时是什么样的心情? | 340 |
视野军 | 目前地球上还有哪些恐怖的人类禁区? | 335 |
鹿屿说 | 都说乌克兰美女如云,有哪些事情是你去了乌克兰才知道的? | 320 |
真诚之语 | 郑爽被人民网痛批,被立案调查,郑恺被强制执行3300万,娱乐圈到底怎么了? | 315 |
小柒撩球 | 张镇麟妈妈王芳,最后时刻究竟在骂谁? | 310 |
平凡小峰 | 岳母没有退休金,住我家不走,两天要吃一个榴莲,我很烦怎么办? | 305 |
我和柳树有个约 | 俄罗斯人嗜酒成性,为什么到中国来了却不胜酒力? | 290 |
爱尚绘画吧邦须 | 如果我国每人出100元,能建几艘航母? | 285 |
黄叔解读 | 娶一个巴基斯坦女人是种什么样的体验? | 280 |
橙桃说 | 给死者堵住肛门,能起到什么作用?真的会保留最后的体面吗? | 280 |
乡村小水 | 去朝鲜旅游一次需要花费多少钱?有哪些禁忌不能触碰? | 280 |
巅峰奇缘 | 四川达州发生凶杀案3人遇害凶手自杀,劝架邻居被害该找谁赔偿? | 275 |
7度风幺 | 一万多的狗狗咬了小孩被打死,小孩医药费三千多,赔偿费谁赔谁? | 275 |
视野军 | 属鸡的人最大缺点是什么? | 265 |
美了向日葵 | 为什么现在还有很多人喜欢在银行存定期? | 260 |
轮回观察 | 在孟加拉国月薪5000人民币是一种怎样的体验?能娶几个老婆? | 250 |
欢乐白马 | 让你瞬间清醒的句子有哪些? | 240 |
独舌视界 | 如果爆发海战,谁能抵挡住美国的11艘航母? | 240 |
祥哥随手拍 | 辽宁篮球队获得亚军,他们有多少奖金? | 235 |
食辉 | “监狱奇才”李红涛,多次越狱,死刑执行前,逆天改命,真的吗? | 230 |
为何看不到星星 | 日本女子监狱有多可怕? | 220 |
愤怒的耕牛 | 你遇到过最无耻的"蹭饭",是什么样的? | 220 |
娱乐咨询天天看 | 曹雪芹家族被抄家时,总共查抄了多少家产? | 220 |
不爱吃鱼的鱼鹰 | 当庭宣判死刑立即执行,是不是直接拉到刑场枪毙? | 220 |
心是宁静与快乐 | 什么是去了孟加拉让你才知道的事情? | 215 |
叮叮当绘画教学菲儿 | 印度女兵的自杀率,为什么高居不下呢? | 205 |
爱思考有思想的健身男 | 电影《八佰》:抱着手榴弹跳下去,为何不直接扔? | 200 |
云间杂谈 | 娶一位俄罗斯姑娘当老婆是一种什么样的感觉? | 200 |
美丽的沙画 | 光纤制导导弹要带10几公里长的光纤?若剧烈飞行折断了咋办? | 200 |
笑得那么开心 | 喝酒“断片”是怎么样的? | 200 |
有文如云 | 一个人的阳气可以重到什么程度? | 190 |
长翅膀的小章鱼 | 邻居把我家的兰花当韭菜偷摘包饺子,吃后全家住院,我要负责吗? | 185 |
鱼井 | 俄罗斯的女性为什么多数都早熟? | 180 |
趣事小瑞 | 老祖宗告诫中年人:五十亲三人,如玩火自焚,什么意思? | 180 |
北京大民 | 你听说过什么体现了善有善报的真实故事? | 180 |
格罗D艾斯 | 水泥船为何消失了? | 180 |
妙妙说教育 | 女朋友很漂亮,但有狐臭,我闻到头就晕,该分手吗? | 180 |
疯子说体育 | 据传易建联放弃了顶薪合同转为老将合同,大家知道为什么吗? | 180 |
大发了丁丁 | 女儿去世了,女婿再婚,他不想再赡养我。我可不可以告他? | 175 |
职场逆时针 | 最近总听人说某人“凡尔赛”,到底是啥意思,出自哪里? | 175 |
娱乐娱不停 | 每天喝一杯白酒的人,最后得到了什么? | 170 |
美丽的沙画 | 拼刺刀的时候,敌方为何会配合,而不是拿起枪扫射? | 170 |
叮叮当绘画教学菲儿 | 我老公33岁每晚跑步,身体不但没变好,还变老了,这是怎么回事? | 170 |
地理知识频道 | 为什么印度要把女犯人关进男监狱,而不是男女监狱分开? | 165 |
疯子说体育 | 郭艾伦说“别明年再来了,年年来什么来”,说明他目前什么心态? | 165 |
仇伟 | 一些农村女人在丈夫去世以后,为什么会选择嫁给了自己的小叔子? | 160 |
妙妙说教育 | 领导酒驾撞坏我车,当场转账赔付8万,一周后告我敲诈,怎么办? | 160 |
独舌视界 | 我国第二艘055驱逐舰命名为“拉萨”,为何西方国家强烈不满? | 155 |
魔法冰冰 | 155毫米炮弹有多大?爆炸时卧倒有用吗? | 155 |
孜然和兰妮 | 公公瘫痪多年,儿媳妇能不能伺候洗澡擦身? | 150 |
铲史观 | 表哥打死了正在强奸表嫂的生意伙伴,现在已被拘留,会被判刑吗? | 150 |
独舌视界 | 客观地讲,我国海军实力处于世界什么水平? | 150 |
食辉 | 死刑犯在执行枪决前10分钟,生命最后时刻,能恐惧到什么状态? | 150 |
山里人情感观 | 婆婆不帮我带娃,我问她一个月要6000元,她不给怎么办? | 150 |
疯子说体育 | 别的外援都回国了,为什么威姆斯还在广东训练?是不是太自律了? | 150 |
豫妈说 | 和西班牙女性结婚是一种什么体验? | 145 |
玖零老苏 | 牛羊肉为什么要排酸? | 145 |
小仙女的平凡 | 为什么男科医院大部分都是女护士?面对男性病人,如何避免尴尬? | 145 |
独孤笑客 | 人在去世前,真的会有预兆吗?有真实经历过的事情吗? | 145 |
为何看不到星星 | 生肖兔的人有什么致命弱点? | 145 |
妙妙说教育 | 有人酒驾撞我车子,私下协商给5万,第二天说我敲诈他,怎么办? | 140 |
娱乐圈最靓的仔 | 田静说互换房子没成功,你觉得原因在哪里? | 140 |
轮回观察 | 家住江西,女儿找了一个广东男友,对方只愿给2万彩礼,该怎么办? | 140 |
深扒看点 | 朱棣文武双全能力出众,朱元璋为什么不让他做太子? | 135 |
三哥话事 | 秘鲁首都利马六百年未下过雨却生活着九百万人,他们是怎样存活的? | 135 |
笑看古今文史 | “九球天后”潘晓婷为何无人娶? | 135 |
职击人心 | 有什么事情是去格鲁吉亚才知道的? | 130 |
风化的山墙上 | 为什么电影里黑钱一定要存进瑞士银行?其他外国银行不行? | 130 |
时光潋滟滴墨盛放1 | 人,退休了,若不想给自己惹麻烦,就少联系那些“熟人”。怎么看? | 130 |
云间杂谈 | 为什么印度女子监狱非常少? | 125 |
采茶的小哥 | 为什么感觉乌克兰美女嫁到中国后很少会出现离婚的情况? | 125 |
苗苗娱乐战 | 发现好多男人都戒烟、戒酒了,这是为什么? | 125 |
我是牙牙 | 小偷到我家偷东西,被狗咬了,为什么非要我赔偿五万? | 125 |
半桶观点 | 古代人死后会马上将肛门堵住,现代人还这样做吗?为什么? | 125 |
疯子说体育 | 仅仅打了9场球,汤普森能从广东男篮拿走多少钱? | 125 |
魔法冰冰 | “不怕有蛇进家门,就怕香椿高过房”,为什么不怕蛇却怕香椿? | 120 |
掌中新乡 | 在澳门赌场赢了500万,收手不玩了,会有什么后果? | 120 |
职抒胸意 | 一级巡视员怎么晋升? | 120 |
疯子说体育 | 对于郭艾伦发边线球直接发到威姆斯手里,该埋怨郭艾伦吗? | 120 |
轮回观察 | 在越南中国人开的工厂里,当地女孩为什么喜欢和中国男人谈恋爱? | 120 |
娱乐娱不停 | 毕业同学会,有“编制”的同学很少来,为什么请不动他们? | 120 |
西风残照人独立 | 叔叔曾把爸爸打到骨折,叔叔独子去世,想让我给他养老,怎么办? | 120 |
宇宇动漫展 | 唐玄宗与杨玉环酷爱握槊,每天至少来一次,握槊为何如此受欢迎? | 120 |
小板板RY | 什么事是你去了新疆才知道的? | 115 |
墨心世界 | 退休后去泰国养老可行吗?多少钱才够用? | 115 |
霸王带皮牛肉粉 | 今年疫情比去年好多了,为什么感觉今年生意比去年还难做? | 110 |
三哥话事 | 发现非洲有很多年轻的单亲妈妈,这是为什么? | 110 |
轮回观察 | 在尼泊尔创业,找一个当地女孩做保姆是种什么体验? | 110 |
小涛涛动漫社 | 抗战中部队被打散了,士兵怎么办? | 110 |
食辉 | 死刑犯马上被执行枪决,但他真不想死,他都会做些什么事? | 110 |
九筒聊体育 | 杨鸣辞退帅位被拒绝,辽宁为什么不迎回郭士强指导? | 110 |
真诚之语 | 借呗、花呗逾期的人多吗?怎么处理的? | 110 |
风铃绘画屋小撬棍 | 各国造船厂位置基本都是公开的,开战时会不会被第一时间打掉? | 110 |
云间杂谈 | 娶一位巴基斯坦的姑娘要花多少钱? | 105 |
朱家小四 | 老公两年前肺癌去世,他大哥单身,让我和他搭伙,能答应吗? | 105 |
三哥话事 | 俗话说:“人住麻雀屋,辈辈出栋梁”,“麻雀屋”指的是什么? | 105 |
程仔龙 | 有哪些人性的黑暗面,尤其是男女关系的黑暗面? | 105 |
笑看古今文史 | 古代的皇帝,为什么非要用太监伺候自己,而不用美貌的宫女呢? | 105 |
IAM甄探 | 退伍军人补贴2021年新政策是什么?农村籍退伍军人每月补贴多少钱? | 100 |
笑看古今文史 | 冯绍峰为何如此宠溺赵丽颖,最后还要离婚? | 100 |
不凡的洒脱花猫 | 姓名可以惊艳到什么程度? | 100 |
体制内特派员 | 我今年47岁,单位领导说想让我担任办公室主任,该拒绝吗? | 100 |
阿本TV | 大家大胆猜测一下,张恒还有什么锤没放? | 100 |
潮流达人苹果9S6 | 死刑犯在执行枪决后,下面应该进行哪个步骤? | 100 |
划破苍穹 | 有些大货车司机睡觉时,为何嘴里都会咬一根绳子? | 100 |
辽宁胖哥 | 水蛭如果被人不小心吃肚子里了,水蛭在人的肚子里还可以活吗? | 100 |
采茶的小哥 | 月收入1000元人民币,在尼泊尔是什么水平?能过什么样的生活? | 95 |
大将军威武K | 蒋介石的“八大金刚”中,谁的能力最强?谁又是垫底的? | 95 |
食辉 | 死刑犯被枪决后,因为风俗,家属有权利把尸体带回家进行土葬吗? | 95 |
青贝儿的宝贝 | 熊磊说认识姚策4年,他的身体一直很好,从没体检,这你相信吗? | 95 |
听声陌路 | 为什么爱因斯坦要在拍照的时候吐舌头呢? | 95 |
魔法冰冰 | 美国F-35满世界的卖,不怕发动机技术泄密吗? | 95 |
小人物阿雄 | 换人生没查明前就和杜家断绝来往了,郭威是不是不感恩? | 95 |
独舌视界 | 网传美航母在南海GPS信号全无,是真的吗? | 95 |
收废品的90后女孩 | 江苏南通大风,死了十几个人,有赔偿吗? | 95 |
职场取经阁 | 别人打了我一巴掌,我报警了,警察处理吗?处理结果怎么样? | 90 |
问答情感录 | 为什么有人说斯威士兰大多数人活不过35岁? | 90 |
大梦先生 | 我现在35岁,工资8000,村里叫我回去做村干部,该不该回? | 90 |
潇湘杂史馆 | 蒋介石势力是如何一步步壮大起来的? | 90 |
赣南蜂情说三农 | 东北的女人为什么都长那么高大? | 90 |
乐水清风 | 为什么酒店退房安排在中午12点?早上来的顾客怎么办? | 90 |
佚生无痕 | 请立足农村说出当前农民最希望解决的难题是什么,怎么去破解? | 90 |
职击人心 | 有什么事情是去了孟加拉国才知道的? | 85 |
君临浩峰 | 印度几乎人人都有宗教信仰,为何还频频发生强奸? | 85 |
三哥话事 | 神话传说中, 道祖、魔祖、佛祖、妖祖, 分别都是谁? | 85 |
大梦先生 | 有人说出资给我建5层楼,一二楼归我,五年后全部给回我,可以吗? | 85 |
跳舞的肥猪 | 为什么自古萝莉爱大叔,有时没钱也爱、还倒追,这是个什么心理? | 85 |
娱圈八卦驿站 | 为什么农村“妻跑族”越来越多? | 85 |
大发了丁丁 | 胡玮炜当年套现15亿,卖掉摩拜单车,在你看来,如今是赚是赔? | 85 |
为何看不到星星 | 生肖马的人有什么致命弱点? | 85 |
魔法冰冰 | 零下196℃的液氮有多可怕? | 85 |
龚柳辉 | 蒙古国决定将向印度提供100万美元人道援助,蒙古人很富吗? | 85 |
疯子说体育 | 辽篮请泰勒花了多少钱?总决赛泰勒一秒也没打,钱是不是白花了? | 85 |
独舌视界 | 中国宁愿出售歼10C,为何不卖退居二线的歼轰7? | 80 |
问答情感录 | 欧美国家的女性为何普遍早熟? | 80 |
美丽的沙画 | 如果不动用核武器,当今能打败日本的国家有哪些? | 80 |
73神牛 | 父亲说70年代他月工资45块钱,一家四口够用,是真的吗? | 80 |
历史呀呀呀 | “二战”时日本为何独不敢侵略澳门? | 80 |
IAM甄探 | 60岁党员每月补贴是多少?农村老党员党龄补贴政策是怎样的? | 80 |
老刘看天下 | 很多人都说加拿大是一个大村庄,加拿大是怎样的一个国家? | 80 |
一点就火 | 结婚那天,新郎什么感觉? | 80 |
8090游戏迷 | “百草枯”喝下去很久都不会死,可为什么无法医治? | 80 |
笑看古今文史 | 康熙给雍正留下多大一个烂摊子? | 80 |
智勇双全溪水 | 老人常说旧衣服一定不能乱送人,为什么? | 80 |
左道的故事 | 得了新冠肺炎的人现在都怎么样了? | 80 |
娱乐圈最靓的仔 | 姚策宁愿被网友骂也不过户给许敏,你认为是大爱吗?原因是什么? | 80 |
疯子说体育 | 有没有不想来广东男篮打球的球员,他们到底是为了什么在打球? | 80 |
不务正业的工程诗 | 一个人被斩首后,其神志可以保持多长时间? | 75 |
米柯的国外生活 | 如果丈夫杀死了正在强奸妻子的人,依据法律该如何判刑? | 75 |
半桶观点 | 为什么说娶了俄罗斯姑娘的中国小伙,结婚几年后就后悔不已? | 75 |
美丽的沙画 | 用一枚核弹打击一支航母战斗群,到底够不够用? | 75 |
小公谈公事 | 大姑一直求我给她女儿捐肾,少一个肾真的不影响生活吗? | 75 |
73神牛 | 老丈人退休前是八级钳工,以前厂长都不如他挣得多,能是真的吗? | 75 |
爱尚绘画吧a | 感觉美军战斗力很强,优势仅仅是来自于装备吗? | 75 |
Frank阿兔 | 退休后参加饭局,说什么话最掉价? | 75 |
7度风幺 | 母亲肝癌,借了舅舅十万块钱,舅舅当时说不用还,现在反悔,怎么办? | 75 |
用户9931940141248 | 年纪大了,身体还好!能不能找个寺庙做义工直到终老? | 75 |
烛影乱谈 | 莫小贝为何会变成赤焰狂魔,后期的老白压制不住她吗? | 75 |
快乐海登1ZR | 许敏出具不了“配型化验单”,要怎么证明自己对姚策的爱? | 75 |
7度风幺 | 开车八百里参加朋友婚礼,随礼两百,一天没人搭理我,怎么办? | 75 |
爱思考有思想的健身男 | 苦命的男人,都具备什么特征? | 75 |
疯子说体育 | 为什么当年浙江男篮放弃了威姆斯?早知道今天,会后悔吗? | 75 |
疯子说体育 | 王治郅当年为什么被许钟豪顶撞?而如今许钟豪却不敢顶撞王博? | 75 |
爱尚绘画吧邦须 | 为什么嫁到中国的俄罗斯媳妇,连过年都不愿回国? | 75 |
娱乐娱不停 | 死刑犯行刑时要五花大绑,为什么不用手铐简单点? | 75 |
慵懒的猫视频剪辑 | 凡事不发朋友圈的人,都是过的不好的人,你认同这句话吗为什么? | 75 |
小仙女的平凡 | 死刑立即执行我明白,缓期2年执行是什么意思?是2年后再执行吗? | 75 |
小农旺 | 2021年下半年即将到来,生猪价格会如何,养殖户何去何从? | 75 |
老刘看天下 | 非洲人宁愿喝脏水也不打井取水,是他们懒吗? | 75 |
九洲动漫 | 无印良品哪些东西值得买? | 75 |
熊二撩电影 | 2021年,副处级公务员养老金是多少? | 75 |
老笨人 | 一老妇,儿子每年探亲,总让儿子与她过夜,是什么心理? | 70 |
| 云酒团队(ID:YJTT2016)
2017年日本著名人气动漫《圣斗士星矢》31周年,原著作者车田正美于1985年12月开始连载这套漫画,并于1986年动画版推出,30年间圣斗士的故事影响了无数观众。作为中国最早引进的日本动画片之一,《圣斗士星矢》的名字早已成为8090后的集体记忆。
《圣斗士星矢》中,12位黄金圣斗士不光是光鲜亮丽,而且是身怀绝技。单独一个人拿出来,都能以一敌百。但是每个人却有着不同的成长经历和人物性格,他们为了大义,为了雅典娜,为了世界的和平,聚集在一起。思想统一的燃烧着小宇宙,并把各自的能量集合在一起,打破了“叹息之墙”。
今天,曾经的小伙伴如今都已长大。酒业的8090后们,正在为酒业开启新的时代。
酒行业是一个圈子,酒行业是一个江湖,需要互动交流共进。“星矢学院”中国酒业 8090 BOSS训练营的成立,正是要建立酒行业新一代领军人物的圈子,组成一股推动酒业发展的新风向,引领行业走向更美好的未来。
儿时组队闯世界的梦想,如今机会来了,加入星矢学院,让我们用团队的力量创造酒业未来。
【点击链接,即可Get星矢学院招募书!】http://file98b61ebbccf5.vt.iamh5.cn/v3/idea/qmnG1nKm?nid=6529335&wxid=oZwt-wFE9KoA0DotnuvubHFX55tg&latestUser=1
>录
< class="pgc-img">>
背景
- 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……
- 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……
- 并且随着采用分布式的开发模式,项目之间的相互引用随着服务的不断增多,相互之间的调用复杂度成指数升高,每次投产或者上线新的项目时苦不堪言,因此需要引用配置中心治理。
在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。
目前已存在的配置中心
配置中心应运而生,目前配置中心有
- spring-cloud-config:spring出品,可以和spring cloud无缝配合
- 淘宝 diamond:已经不维护。
- disconf:java开发,蚂蚁金服技术专家发起,业界使用广泛。
- ctrip apollo:Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。
对比
为什么选择Apollo?下面是一个对比表
功能
几个配置中心在功能上的对比
< class="tableWrapper">功能点 | 优先级 | spring-cloud-config | ctrip apollo | disconf | 备注 |
静态配置管理 | 高 | 基于file | 支持 | 支持 | |
动态配置管理 | 高 | 支持 | 支持 | 支持 | |
统一管理 | 高 | 无,需要github | 支持 | 支持 | |
多环境 | 中 | 无,需要github | 支持 | 支持 | |
本地配置缓存 | 高 | 无 | 支持 | 支持 | |
配置锁 | 中 | 支持 | 不支持 | 不支持 | 不允许动态及远程更新 |
配置校验 | 中 | 无 | 无 | 无 | 如:ip地址校验,配置 |
配置生效时间 | 重启生效,或手动refresh生效 | 实时 | 实时 | 需要结合热加载管理, springcloudconfig需要 git webhook+rabbitmq 实时生效 | |
配置更新推送 | 高 | 需要手工触发 | 支持 | 支持 | |
配置定时拉取 | 高 | 无 | 支持 | 配置更新目前依赖事件驱动, client重启或者server端推送操作 | |
用户权限管理 | 中 | 无,需要github | 支持 | 支持 | 现阶段可以人工处理 |
授权、审核、审计 | 中 | 无,需要github | 支持 | 无 | 现阶段可以人工处理 |
配置版本管理 | 高 | Git做版本管理 | 界面上直接提供发布历史和回滚按钮 | 操作记录有落数据库,但无查询接口 | |
配置合规检测 | 高 | 不支持 | 支持(但还需完善) | ||
实例配置监控 | 高 | 需要结合springadmin | 支持 | 支持,可以查看每个配置在哪些机器上加载 | |
灰度发布 | 中 | 不支持 | 支持 | 不支持部分更新 | 现阶段可以人工处理 |
告警通知 | 中 | 不支持 | 支持,邮件方式告警 | 支持,邮件方式告警 | |
依赖关系 | 高 | 不支持 | 不支持 | 不支持 | 配置与系统版本的依赖系统运行时的依赖关系 |
兼容性
几个配置中心和其他开发框架的对比
< class="tableWrapper">功能点 | 优先级 | spring-cloud-config | ctrip apollo | disconf |
SpringBoot支持 | 高 | 原生支持 | 支持 | 与spring boot无相关 |
SpringCloud支持 | 高 | 原生支持 | 支持 | 与spring cloud无相关 |
客户端支持 | 低 | Java | Java、.Net | java |
业务系统侵入性 | 高 | 侵入性弱 | 侵入性弱 | 侵入性弱,支持注解及xml方式 |
依赖组件 | 高 | Eureka | Eureka | zookeeper |
可用性与易用性
< class="tableWrapper">功能点 | 优先级 | spring-cloud-config | ctrip apollo | disconf |
单点故障(SPOF) | 高 | 支持HA部署 | 支持HA部署 | 支持HA部署,高可用由zookeeper保证 |
多数据中心部署 | 高 | 支持 | 支持 | 支持 |
配置获取性能 | 高 | unkown | unkown(官方说比spring快) | |
配置界面 | 中 | 无,需要通过git操作 | 统一界面(ng编写) | 统一界面 |
综上,ctrip applo是较好的选择方案,最终选择applo。
- 支持不同环境(开发、测试、生产)、不同集群
- 完善的管理系统,权限管理、发布审核、操作审计
- SpringBoot集成友好 ,较小的迁移成本
- 配置修改实时生效(热发布)
- 版本发布管理
设计
搭建之前,我们需要了解一下Apollo的设计思想,不至于搭建的时候像一个无头苍蝇
基本概念
既然定位是配置中心,那么直接作用的对象就是应用(Application),应用又可以在几个维度来观察
比如运行环境(Environment),开发、测试和生产不同环境的同一个应用的配置是不一样的
比如机房,或者叫做集群(Cluster),上海机房和北京机房的同一个应用配置也是不同的
比如配置的归类,某些配置是一些共性应用都需要的,可以集中管理起来,这叫做命名空间(Namespace)
说白了这些概念都是对应用的配置做隔离或者复用!
应用
- 这个很好理解,就是实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置
- 每个应用都需要有唯一的身份标识 - appId,我们认为应用身份是跟着代码走的,所以需要在代码中配置,具体信息请参见Java客户端使用指南。
环境
- 配置对应的环境,Apollo客户端在运行时需要知道当前应用处于哪个环境,从而可以去获取应用的配置
- 我们认为环境和代码无关,同一份代码部署在不同的环境就应该能够获取到不同环境的配置
- 所以环境默认是通过读取机器上的配置(server.properties中的env属性)指定的,不过为了开发方便,我们也支持运行时通过System Property等指定,具体信息请参见Java客户端使用指南。
集群
- 一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。
- 对不同的cluster,同一个配置可以有不一样的值,如zookeeper地址。
- 集群默认是通过读取机器上的配置(server.properties中的idc属性)指定的,不过也支持运行时通过System Property指定,具体信息请参见Java客户端使用指南。
命名空间
- 一个应用下不同配置的分组,可以简单地把namespace类比为文件,不同类型的配置存放在不同的文件中,如数据库配置文件,rpc配置文件,应用自身的配置文件等
- 应用可以直接读取到公共组件的配置namespace,如DAL,RPC等
- 应用也可以通过继承公共组件的配置namespace来对公共组件的配置做调整,如DAL的初始数据库连接数
架构
V1
这是最简单的一个架构,Apollo 分为AdminService、Portal、ConfigService与Client
< class="pgc-img">>- ConfigService:既然叫配置中心,这个ConfigService就是核心,它和客户端交互,有配置变更就通过长连接把最新的配置推送给客户端,考虑的推送失败的情况,客户端默认每隔5分钟就会去配置中心拉取最新的配置(客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟),这就叫推拉结合,最大程度保证客户端的配置是最新的。
- AdminService:看名字大概能猜到一二,这是服务于管理员的,管理员在界面上操作各种配置,配置就会通过它写到ConfigDB里面,然后ConfigService通过每秒去轮询ConfigDB获取最新的配置推送给客户端,此处是一个典型的消费-生产场景,没有引入消息队列是为了尽量减少外部依赖!
- Portal:统一门户,就是管理员操作的前端界面,PortalDB用于保存Portal的用户权限角色等信息。
V2
V1版架构有一个问题,假设ConfigService挂了,那么客户端的配置就得不到更新,这个问题可以通过部署多个无状态的ConfigService来解决,但是引入了多个ConfigService服务发现就成为了一个新问题,客户端怎么才能知道当前有哪些ConfigService,它们的IP是多少?所以引入了注册中心Eureka!这样客户端就可以去Eureka获取服务列表!
< class="pgc-img">>为啥选择Eureka?作者给了回答
为什么我们采用Eureka作为服务注册中心,而不是使用传统的zk、etcd呢?我大致总结了一下,有以下几方面的原因:
它提供了完整的Service Registry和Service Discovery实现首先是提供了完整的实现,并且也经受住了Netflix自己的生产环境考验,相对使用起来会比较省心。和Spring Cloud无缝集成我们的项目本身就使用了Spring Cloud和Spring Boot,同时Spring Cloud还有一套非常完善的开源代码来整合Eureka,所以使用起来非常方便。另外,Eureka还支持在我们应用自身的容器中启动,也就是说我们的应用启动完之后,既充当了Eureka的角色,同时也是服务的提供者。这样就极大的提高了服务的可用性。这一点是我们选择Eureka而不是zk、etcd等的主要原因,为了提高配置中心的可用性和降低部署复杂度,我们需要尽可能地减少外部依赖。Open Source最后一点是开源,由于代码是开源的,所以非常便于我们了解它的实现原理和排查问题。
V3
V2版引入了一个新问题,Eureka是只支持Java客户端的,那么.NET咋办?因为携程一些服务是.NET的,需要考虑了.NET的接入,所以增加了一个metaServer的角色屏蔽掉,通过HTTP的方式获取服务列表,还可以增加一个网关用于负载均衡,这样只用访问网关就可以了,如下图
< class="pgc-img">>实际上,metaServer和Eureka在Apollo中都集成在ConfigService中,跑在同一个JVM进程上,端口也是同一个,后面搭建的时候就需要关心到这一点!
搭建
采用docker搭建
数据库环境(5.6.5+)
docker run --name apl-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.24
查看下IP,此处是172.17.0.2
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apl-mysql
以下操作是在容器内操作,登录MySQL,给数据库用户授权下
grant all privileges on *.* to root@"%" identified by "123456";
导入SQL
- ConfigDB:https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloconfigdb.sql
- PortalDB:https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloportaldb.sql
登录MySQL命令行,用source命令导入即可
Java环境
docker run -dit --name apl-java --privileged centos /usr/sbin/init
查看下IP,此处是172.17.0.3
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apl-java
以下是在容器内操作,安装常用软件工具
yum install -y wget unzip
安装java环境
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel which
cat > /etc/profile.d/java8.sh <<EOF
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile.d/java8.sh
去github发布页下载包:https://github.com/ctripcorp/apollo/releases,当前最新版本是1.8.1,我们需要的文件为
- AdminService:apollo-adminservice-1.8.1-github.zip
- ConfigService:apollo-configservice-1.8.1-github.zip
- Portal:apollo-portal-1.8.1-github.zip
下载好解压到你喜欢的文件夹即可,然后开始配置数据库
配置ConfigService
- 配置数据库
vi config/application-github.properties
注意要把SSL关闭,否则可能连不上MySQL
spring.datasource.url=jdbc:mysql://172.17.0.2:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
- 启动
启动ConfigService,执行命令脚本,主要要在解压后的当前目录下,其他几个也是
./scripts/startup.sh
启动日志文件在:/opt/logs/100003171/apollo-configservice.log,中间的数字可能不一样,以实际为准
启动成功后默认跑在8080端口,打开浏览器看一下是否能访问注册中心
提示:
由于是在容器里面,容器的端口不一定能被外部访问到,可以添加iptables DNAT规则
iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.3:8080
这句话的意思就是把172.17.0.3:8080端口和宿主机的8080端口映射起来,这样在外部才能访问,需要删除此条规则可以将-A换成-D即可
可以看到ConfigService已经注册好了
< class="pgc-img">>配置AdminService
- 配置数据库,和ConfigService配置文件一致
vi config/application-github.properties
- 启动
启动AdminService,执行命令脚本,主要要在解压后的当前目录下,其他几个也是
./scripts/startup.sh
启动成功后默认跑在8090端口,可以在Eureka看到
< class="pgc-img">>配置Portal
- 配置数据库,和ConfigService配置文件一致
vi config/application-github.properties
配置环境
注意,Portal需要配置环境,文件位置在:config/apollo-env.properties,我们就配个开发环境,指向Eureka(上面解释过ConfigService和Eureka在一个JVM进程上),其他注释掉即可
#local.meta=http://localhost:8080
dev.meta=http://172.17.0.3:8080
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
#lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080
这里解释下这个环境是什么意思,一个Portal可以管理多套环境,此处我们设置dev.meta标识这是开发环境。
环境的标识通过以下几种方式(针对客户端而言)
Environment可以通过以下3种方式的任意一个配置:
通过Java System Property可以通过Java的System Property env来指定环境在Java程序启动脚本中,可以指定-Denv=YOUR-ENVIRONMENT如果是运行jar文件,需要注意格式是java -Denv=YOUR-ENVIRonMENT -jar xxx.jar注意key为全小写通过操作系统的System Environment还可以通过操作系统的System Environment ENV来指定注意key为全大写通过配置文件最后一个推荐的方式是通过配置文件来指定env=YOUR-ENVIRONMENT对于Mac/Linux,文件位置为/opt/settings/server.properties对于Windows,文件位置为C:\opt\settings\server.properties
文件内容形如:
env=DEV
目前,env支持以下几个值(大小写不敏感):
DEVDevelopment environmentFATFeature Acceptance Test environmentUATUser Acceptance Test environmentPROProduction environment
启动
启动AdminService,执行命令脚本,主要要在解压后的当前目录下,其他几个也是
./scripts/startup.sh
启动成功后默认跑在8070端口,同样访问不了指定下DNAT规则
iptables -t nat -A DOCKER -p tcp --dport 8070 -j DNAT --to-destination 172.17.0.3:8070
访问http://{虚拟机IP}:8070,默认登录用户名为apollo,密码为admin
< class="pgc-img">>客户端准备
此处以Java客户端为例,需要引入Apollo Client依赖(以Maven构建)
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.1.0</version>
</dependency>`
- 指定app.id,这是这个应用的唯一标识,不可重复
- 指定apollo.meta,指定获取元数据的地方,此处即为metaServer:http://172.17.0.3:8080
这两个指定的配置文件为/meta-INF/app.properties
一个最简单的Apollo客户端如下
< class="pgc-img">>文末有代码清单
测试
部署项目
将项目打包并执行,注意设置环境为DEV
mkdir -p /opt/settings/
echo 'env=DEV' > /opt/settings/server.properties
然后访问一下
curl 'http://127.0.0.1:9000/apollo/getConfig'
值默认为default,下面我们通过Apollo,看这个值会不会动态改变
新增一个应用
登录Portal,新增一个应用,注意AppId要和配置的一样
< class="pgc-img">>点击提交后,进入刚才新建的应用,有一个默认的application的命名空间,然后点击右边新增配置,新增一个
< class="pgc-img">>点击提交后再点击发布
< class="pgc-img">>再访问一下
curl 'http://127.0.0.1:9000/apollo/getConfig'
如果返回的是测试变量说明动态更改成功!
再看看SpringBoot的日志
< class="pgc-img">>也打印出了相关提示
代码清单
ApolloController
@RestController
public class ApolloController {
//冒号后面的是默认值
@Value("${configValue:default}")
private String configValue;
@RequestMapping("/apollo/getConfig")
public String getConfig() {
return configValue;
}
}
SpringBootApolloClientApplication
@SpringBootApplication
//开启apollo配置
@EnableApolloConfig
public class SpringBootApolloClientApplication {
private static Logger logger=LoggerFactory.getLogger(SpringBootApolloClientApplication.class);
public static void main(String[] args) {
SpringApplication.run(SpringBootApolloClientApplication.class, args);
logger.info("=============================="+ SpringBootApolloClientApplication.class.getSimpleName()+" started==============================");
}
}
app.properties
# 应用的唯一标识,后面创建工程需要用到
app.id=apollo-demo
apollo.meta=http://172.17.0.3:8080
application.yml
server:
port: 9000
spring:
application:
name: springboot-apollo-client
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.scriptwang</groupId>
<artifactId>springboot-apollo-client</artifactId>
<version>1.0-SNAPSHOT</version>
<!--spring boot parent 最小依赖(parent)-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
</parent>
<dependencies>
<!--最小依赖(Spring MVC Tomcat等)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
参考
- https://www.cnblogs.com/xiaoqi/p/configserver-compair.html
- https://www.bookstack.cn/read/apollo-1.7-zh/cc8342e164e6c09c.md
- https://cloud.tencent.com/developer/article/1063232
- https://nobodyiam.com/2016/07/09/introduction-to-apollo/
- https://www.infoq.cn/article/ctrip-apollo-configuration-center-architecture