这篇文章简单给大家来聊一个互联网大厂的Java面试题:如果让你设计一个消息中间件,你会怎么做?
这是面试官在考察一个高级以上的Java工程师的系统设计能力。
给你一个平时大家都常用的一个消息中间件作为命题,让你现场开放式发挥,立马开动脑筋说说如果让你来设计这么一个消息中间件。
让你从整体架构、核心流程、数据结构等各个层面来考虑,你会如何完成这个设计?
其实任何一个面试官都应该知道,如果一个人没有真的做过消息中间件开发的话,是不太可能在短时间内,瞬间给出一套特别靠谱的架构设计方案的。
但是用这个题目作为一个开放式命题,他最大的好处,就是可以尽可能的挖掘出一个候选人的较为真实的系统设计的能力和功底。
为什么这么说呢?
因为如果面试的时候很多东西都是一些常见的技术问题,比如说:
消息中间件如何保证数据不丢失?
聊聊Elasticsearch的架构原理以及性能优化?
你们公司的微服务架构整体如何设计的?
这些问题相对来说都是比较固定的一些问题。
所谓固定的问题,就是只要你花费时间去学习了相关的技术,或者是在自己所在的公司确实有过一些落地的经验,通常来说就能回答出这些问题。
但是这些问题都不够开放,如果两个候选人都同样具备常规问题的回答能力,那么此时通过一道有深度的开放式问题,就可以把几个人里迅速拉开差距,找出来到底谁的技术功底更加深厚,谁的架构设计能力更加强。
那么本文就从各个角度来引导大家去思考一下,假如让你回答这个问题,你可以从哪些方面入手来现场做一些考虑和回答?
生产消费模型以及核心数据结构
首先第一个点,消息中间件本身要做的就是可以允许有人来生产消息,还可以允许有人来消费这个消息。
那么这里要考虑的第一个点,就是消息中间件自己本身的核心数据结构。
也就是说,如果有人生产了消息,你作为一个消息中间件,应该如何存储这个数据?
你会存储在内存里呢?还是存储在磁盘文件里呢?或者两者都同时共存?
可以先允许数据写入内存作为一个缓冲,然后每隔几秒再把数据刷入磁盘文件中?数据刷入磁盘文件之后,这个磁盘文件有多少个?
总不能搞一个磁盘文件来存放所有的数据吧?那么按照什么样的规则对磁盘文件做一个拆分?
数据写入磁盘文件之后,是不是要有相应的一些Metadata来标识这个数据的具体信息?比如这个数据的Offset偏移量,或者是一个内置的唯一ID?
接着现在数据是被存储在磁盘文件里了,那么此时你如何把数据投递到下游的消费者里去呢?
你的消费模型是什么样的?比如说一个Queue里的数据,是会均匀分配给消费者的各个实例呢?还是会怎么做呢?
建议大家可以去研究Kafka底层的文件存储原理,那是非常经典的高性能高并发消息中间件存储架构的实现。
可以参考一下RabbitMQ和Kafka的官网,研究一下不同中间件的消费模型是怎么做的。
支撑TB级数据写入的分布式架构
接着考虑第二个大的问题,消息中间件肯定会遇到每天TB级海量数据高并发高吞吐写入的场景。那么消息中间件的架构如何支撑呢?
这里就要考虑一下,数据是不是要分布式的存储?
比如说假如一天写入几百TB的数据,那不可能都放在一台机器上吧?所以数据的分布式存储是不是你要考虑的另外一个很重要的问题?
是不是要考虑把一个大的数据集合做分片存储,比如说分成N片数据,每个数据分片放在一台机器上,这样就可以充分利用多台机器的资源来承载TB级的大量数据了。
此外还需要考虑,数据分片是不是要可以支撑扩容?
比如一开始设置的分片数量是10个,存在10台机器上。结果现在发现10台机器都扛不住了,需要扩容到20个分片,放在20台机器上才可以。
是不是要支持数据分片的扩容以及自动数据负载均衡迁移?也就是10个分片的数据自动均匀分配给扩容后的20个分片。
所以这种分布式以及可伸缩的架构,是另外一个非常核心的点。
我个人同样比较建议大家研究一下Kafka在这块的架构设计,非常的优秀,采用了partition的概念实现数据分片,支持分布式的数据存储,而且还支持动态扩容。
数据宕机场景下的高可用架构
大家此时就要考虑另外一个问题了,就是一旦数据分布式存储之后,那么每台机器上都有一部分数据。
万一这台机器宕机了呢?那么数据是不是就丢失了?
所以高可用的架构就必须考虑到了。
一般分布式系统实现高可用架构,都是采用多副本冗余机制。
也就是说一份数据在多台机器上都搞一个副本,这样任何一台机器宕机了,数据肯定不会丢失,你还可以继续使用其他机器上的副本数据来支持生产和消费。
同样建议大家,研究一下Kafka的多副本冗余机制,他的每个partition数据分片都是有多个副本的,任何一台机器宕机,丢失一个数据分片,还有其他机器上的副本分片在,可以支持数据不丢失。
支持数据不丢失的ACK机制
最后再考虑一个问题,消息中间件肯定是要支持数据绝对不丢失的吧?
那么你必须要支持生产端和消费端的ACK机制,在这里你必须考虑两块ACK机制,一个是生产端,一旦投递了消息,必须要求他将数据比如写入多个副本之后,才返回一个ACK回调响应。
否则要是一直没收到ACK的话,就需要重发一条消息过去,保证生产投递成功。
另外一个是消费端,一旦消费处理成功一条消息了,必须返回一个ACK给消息中间件,然后消息中间件才能删除这条消息。
否则一旦消费者宕机,就必须重发这条消息给其他的消费者实例,保证消息一定会被处理成功。
这块如果大家不清楚,建议一定重看之前的系列文章,我们基于RabbitMQ来阐述的这个数据不丢失的全链路ACK机制。
这种开放式面试题,牵扯了大量的底层细节和架构思想,非常区分不同人的技术水平。如果你简单回答,就本文涉及到的一些东西简单说一说,基本也能过关。
但是如果你想技压群雄,就必须要根据本文每个部分提示的东西,真的去对各种MQ中间件的底层源码进行深入的研究,然后才能在回答这个问题的时候,展现出“碾压其他人”的技术功底和架构实力。
祝你面试成功!
软文推广:为中小企业提供优质全方位软文营销服务,努力打造软文平台数字化营销传播平台,致力于文化传播给企业带来的价值!
互联网公司的产品经理制,为何通信运营商学不会
互联网企业的产品经理制,运营商学不会
作者:钟爱一生
互联网公司火,运营商对互联网企业的研究分析也不少了。按说运营商财大气粗、资源充沛,有啥做不到的!可有几招虽是互联网公司的常规做法,但运营商怎么也学不会。
首先我们看看,在运营商能否出现真正的产品经理?
传说中的互联网企业的产品经理拥有一言九鼎的话语权,对端到端的产品体验整体负责,是产品成败的第一责任人。运营商也尝试过在部门内部设立产品经理,但效果不佳。由于运营商采用的是层级制职能管理体系,有三个难以改变的客观情况,使得运营商不会产生集责权利于一身的产品经理。
首先是因为运营商的运营体系庞大而复杂。
各专业环节之间盘根错节,复杂的组织关系让独立的个体或少数人组成的团队难以驾驭。运营商拥有的数亿客户是令世人羡慕的营销对象,但没人能说清,到底有多少存量规则在阻碍着新产品的推出和运营。存量用户的规则越多,推出新产品时需要协调的工作量就越大。
旧的规则还没清理完,新的规则又在层出不穷地增加。对暗礁丛生的存量规则,没有人主动做全面梳理,时间拖得越久,沉淀和积累越多,清理的难度也就越大。一个业务下线或者调整一项既有规则,工作量并不少,但并不能直接产生价值,做这事实属“费力不讨好”,企业也不鼓励。于是创新多是围绕重点工作研究涉及到的规则,就事论事地打几个补丁凑合,尽量避免整体大调整的行动。
遇到存量规则,只能绕行,不能改变。企业的高层领导都难化解的矛盾,一个产品经理能协调得动么?
第二是缘于运营商的职能部门强势管理。
运营商的各职能部门之间分工明确,界限清晰,意味着划定了各自的地盘,职能部门要对分管的工作范围和内容负责,在我的地盘就要听我的。每个职能部门的意见都要倾听、协调,要让大家没意见,这中间消耗了很多时间和精力;而一旦沟通不到位,相关部门会签时写了不同意,报告或者发文就会被退回来,前功尽弃。
电信级的服务标准,以及对品质的极致追求,让运营商不敢轻言降低任何指标,结果包袱越背越重,对风险的忌惮不仅增加了成本,也让运营商丧失了创新的时间和空间。职能部门只对分管的内容负责,而对整体价值的衡量评估则不是他们所关心的。即使他们的反对态度不足以推翻整个产品设计,只要他们提出风险,决策层就必须考虑其意见,由此导致的进度延期和方案变动等,会给产品经理带来更大的麻烦。
互联网企业的产品经理可能会为实现整体目标而牺牲某些指标,运营商的产品经理可没有这么大的权力和胆量。
第三是受限于国企的决策机制。
互联网竞争唯快不破,在产品的设计、研发、推广等过程中需要快速决策,推动产品的开发和调整工作快速到位,产品经理就是互联网企业责权利的聚合点。对于运营商来说,资源主要集中在高层领导手中,责任也由他们承担,而运营商的高层领导太忙,不可能成为事无巨细都要参与的产品经理,这就导致决策的速度很难跟上互联网的步伐。
细节决定命运,很多决策是对琐事的判断和取舍,这需要产品经理倾注大量的时间和精力。运营商的决策需要走层层汇报的流程,在精简得不能再精简的ppT里,不仅要言简意赅地说清楚问题,更要把辅助决策的分析和建议汇报清楚;而领导掌握着资源,并且要为决策负责,所以必须在几分钟之内,理解一大群技术专家冥思苦想奋战几个月所取得的研究成果,并做出准确的判断和决策,容易嘛!
运营商没有合适的产品经理,并非因为运营商内部没有适合的人才,而是运营商的传统工作模式与产品经理的工作模式冲突是在太大,在内部难以设立一个既接地气又实现责权利统一的岗位,无法给与互联网业务更大的空间。要想破此迷局,只能在现有体系之外进行尝试。具体来说,就是划定一个比较小的业务和经营范围,在局部实现责权利的统一。当然,如果真这么做了,那么这个小范围的试验田在免去传统运营商束缚的同时,也会在一定程度上失去传统运营商的保护和支持。对此,小白鼠们做好准备了么?
作者:王云辉
第一赢销网.上一篇:p2p网贷应有怎样的危机感?下一篇:高端餐饮湘鄂情转型一场空:高管大离职只剩卖壳一条路TAG:产品经理制运营商信息转载自网络,更多相关信息请点击:整合营销培训http:///wlyx/zhyx/
相关文章
-
拼多多开店虚拟物品需要什么条件?虚拟物品怎么发货?
一、虚拟物品需要什么条件?1)网上营业厅1、“话费”“存费送”二级分类邀约商家经营。,2、“固话”、“宽带”二级分类仅允许专营店、专卖店、旗舰店经营,且商家需满足下列条件:运营商主体开设旗舰店可直接申请;非运营商主体申请开设旗舰店需满足:a.提交开店企业与市级及以上具备对应充值缴费业务的运营商出具的品牌旗舰店开店独占授权书,且授权范围须包括“可开展固话、宽带、广电等充值或缴费业务”;b.提交开店企
2024-03-13 16:21 -
拼多多运营商怎么定价?是怎么赚钱的?
拼多多运营商提供的服务包括店铺运营、推广、客户服务等。,在定价时,运营商会考虑到自己的工作量、专业水平、市场需求和竞争情况等因素,合理确定价格。,运营商需要考虑自身的品牌形象、口碑、行业经验等因素,并结合市场需求和竞争情况来制定价格策略。
2024-03-13 15:22 -
拼多多运营商怎么推广?运营商如何推广新产品?
因此,运营商可以选择在这些地区设立门店或宣传点,通过发放宣传册、悬挂海报等方式向当地居民介绍拼多多的优势和特点。,此外,运营商还可以选择与拼多多合作举办促销活动,如限时抢购、满减优惠等,吸引更多用户参与并提高转化率。,除了在拼多多平台投放广告外,还可以利用搜索引擎优化(SEO)技术和社交媒体营销等方式增加产品的曝光度。
2024-03-13 15:22 -
拼多多运营商怎么盈利的?代运营怎么样?
运营商可以通过购买广告位,提高商品曝光度,吸引更多潜在买家,从而增加销售额。,通过参与平台活动,提高商品的曝光度,增加用户参与度,从而提升销售业绩。,费用结构可以根据服务内容、运营商经验等因素进行灵活调整,确保双方在合作中都能够获得合理的回报。
2024-03-13 15:21 -
拼多多运营商怎么加盟?拼多多运营商加盟条件是什么?
那么,究竟如何加盟成为拼多多运营商呢?本文将为您详细介绍。,在加入页面中,会详细列出拼多多运营商加盟的流程和条件。,申请通过后,拼多多会派专人与您联系,进行详细的合作洽谈。
2024-03-13 15:21 -
拼多多运营商怎么销售?拼多多运营商怎么推广?
拼多多为运营商提供了一个全面的销售生态系统,包括店铺搭建、商品上传、订单管理等功能。,拼多多为运营商提供了一个完整的销售生态系统,包括店铺搭建、商品上传、订单管理等功能。,同时,运营商也需要关注售后服务和物流时效,确保用户能够享受到良好的购物体验。
2024-03-13 15:21 -
拼多多运营商怎么推广赚钱?拼多多推广怎么开?
在本文中,我们将探讨拼多多运营商如何推广赚钱的方法和技巧。,填写相关信息并提交申请,等待审核通过后,即可正式成为拼多多运营商。,可以通过拼多多官方网站、论坛、培训课程等途径学习相关知识,掌握推广技巧和操作方法。
2024-03-13 15:20 -
拼多多运营商下单怎么发货?怎么退款?
拼多多运营商作为平台上的一种特殊身份,其下单和发货流程与普通卖家有所不同。,本文将深入研究拼多多运营商是如何进行下单和发货的,以及在这个过程中如何处理退款问题,帮助运营商更好地了解平台规则,提高运营效率。,确保填写的信息真实可靠,有助于平台更快速地进行退款处理。
2024-03-13 15:20 -
拼多多运营商怎么开店?怎么注销?
对于运营商来说,如何在拼多多平台上开店是一个重要问题。本文将详细介绍拼多多运营商如何开店的步骤和方法。首先,运营商需要注册一个拼多多的账号。可以通过拼多多官方网站或者手机APP进行注册。运营商需要提供一些基本信息,如企业名称、联系方式等,并按照指引完成注册流程。在注册过程中,可能需要提供相关证件和资质文件,以证明运营商的合法身份。其次,运营商需要完善店铺信息和商品信息。在成功注册并登录后,运营商可
2024-03-13 15:18 -
拼多多运营分红怎么算?利润怎么算?
那么,拼多多运营分红是如何计算的呢?,销售额越高,运营商家可以获得的分红收益就越多。,通常情况下,成本费用越低,运营商家可以获得的净利润就越高。
2024-03-13 15:17
热门标签
-
互联网医疗的千姿百态:火热、亏损、巨头亲赖 互联网大佬们“拜神信教”那些事儿
2024-03-21 15:58
-
消费互联网裁员潮还在继续,失业的程序员不妨看看工业互联网 写给互联网大佬们的一封信
2024-03-21 15:58
-
为什么互联网大佬争相到互联网大会亮相? 重塑2015互联网的十大趋势
2024-03-21 15:58
-
重庆互联网行业还有希望吗,和上海比咋样 这些大佬为何说根本没有互联网思维?
2024-03-21 15:58
-
互联网产品经理?土味博主或许是你学习的榜样 为什么说互联网思维可能会把你带偏
2024-03-21 15:58
-
新兴互联网独角兽公司的社交梦该醒一醒了! 小米、黄太吉、罗辑思维的互联网思维假象
2024-03-21 15:58
-
从一个公共事件,看互联网媒体们到底缺失了什么? 2015年互联网第一战,豌豆荚为何成为靶子?
2024-03-21 15:58
-
HTC陨落,互联网科技领域的会出现百年企业吗? 现在是不是互联网创业最好时代
2024-03-21 15:58
-
富士康转型:我有一个工业互联网的梦! 互联网金融来袭 银行的翻身仗是怎么打的?
2024-03-21 15:58
-
弱肉强食,互联网里的流量争夺战! 互联网彩票生死劫:“自查自纠”下多家停售 3月出新政
2024-03-21 15:58
-
互联网巨头腾讯禁止小视频分享,用户高呼“惹不起,惹不起!” 创业者说互联网外卖:模式存在弊端 赚钱不易
2024-03-21 15:58
-
商业互通模式开启,互联网让商家与消费者更加亲密! 2014年互联网败局大起底
2024-03-21 15:58
-
小米是不是互联网公司,到底谁说了算? 互联网如何改进电影业
2024-03-21 15:58
-
确认过眼神,你也是互联网人 阿里巴巴总参谋长:企业在互联网时代如何进一步发展?
2024-03-21 15:58
-
8000字,解密互联网金融行业活动运营套路 美的集团生死时速:如何在沉没之前,搭上互联网思维?
2024-03-21 15:58
-
面对互联网风口的正确姿势:既练轻功,也练内功 盘点互联网圈里,那些“兴风作浪”的文科生们
2024-03-21 15:58
-
地球一小时进入中国第十个年头,互联网巨头如何用科技做环保? 刘强东:阿里腾讯360利润远超地产 互联网没真正免费过
2024-03-21 15:58
-
A股独角兽概念风起,这一次上海互联网能把握住吗? 创业女性新特点:互联网化 高颜值高学历 年轻化 融到钱
2024-03-21 15:58
-
为何互联网公司纷纷要外卖自己的OA系统? 德国式互联网为何不看重李彦宏雷军这些大佬
2024-03-21 15:58
-
从网红店没落到区块链的不安,互联网餐饮的出路在哪里? 干货!全面解读“互联网+”时代A股投资机会
2024-03-21 15:58