中间件开发工程师搭建的消息队列
让一个系统放下一项工作,例如一个订单或一条通知,供另一个系统在准备好时取用的队列。
当两个系统直接互相调用时,一方的响应变慢,会立刻成为另一方的问题。这正是迪拜企业在迪拜聘请中间件开发工程师要解决的具体问题:搭建一层位于系统之间的消息队列、事件流或服务总线,让一方能放下一项工作而不必等另一方就绪,即便其中一方短暂不可用,两边也都能继续运行。
Apache Kafka 是这类工作中广泛使用的平台,它在自己的网站上把自身描述为一个事件流平台,能实时捕获、存储和处理事件流,把数据库、应用和服务等数据源连接成一个持续流动的系统。中间件开发工程师不一定专门使用 Kafka,对较小的企业来说,一个更简单的消息队列往往就够用了,但底层思路是一样的:让系统彼此解耦,让一方的问题不会立刻变成另一方的问题。
中间件开发工程师搭建什么
连接背后的平台本身,而不是某一条具体连接。
让一个系统放下一项工作,例如一个订单或一条通知,供另一个系统在准备好时取用的队列。
一条持续的事件流,例如每一笔下单或每一次库存变动,让多个系统能各自独立地做出响应。
一个中心节点,负责在原本从未设计为理解彼此格式的系统之间路由、转换和翻译消息。
一张安全网,捕获没有人成功处理的消息,让它可见并可以被修复,而不是悄悄丢失。
显示消息堆积速度是否超过处理速度的仪表盘,这是大多数企业只有在吃过苦头之后才会知道的一个早期预警信号。
让队列或事件平台本身保持打补丁、规模合理并可靠运行,因为许多其他连接都会依赖它。
重要技能
运维纪律和搭建初始配置同样重要。
| 技能或工具 | 优秀表现是什么样的 | 为什么重要 |
|---|---|---|
| 一个消息队列或流平台 | 拥有至少一种平台的真实生产经验,例如一个托管队列服务或事件流平台 | 在真实负载下配置不当的队列,演示时看起来没问题,到生产环境就会出问题 |
| 投递行为 | 能清楚解释一条消息是否可能被重复投递,以及消费系统该如何应对 | 这一点处理不当会导致重复下单、重复邮件或重复扣款 |
| 故障与死信处理 | 为处理失败的消息搭建一条可见路径,而不是任其消失 | 不可见的故障比可见的故障更糟糕,因为没人知道要去修复它 |
| 监控意识 | 把队列深度和处理延迟的告警作为标准做法建立起来 | 队列悄悄积压,是系统莫名变慢最常见的原因之一 |
| 克制 | 在企业还不需要额外规模时,推荐用简单队列而不是完整的事件流平台 | 过度搭建的中间件,运行和维护成本都会超出问题本身值得的投入 |
Kafka 自己的简介页面坦率地指出,事件流解决的是一类特定的问题,也就是持续、高流量的数据流转,一位值得聘请的中间件开发工程师,同样会坦率地指出什么时候一个更轻量的队列才是您企业更好的选择。
合作方式
专属中间件开发工程师适合队列或事件平台已经成为核心基础设施、并持续新增消费方的企业。限定范围项目适合搭建并移交某一件具体的中间件,例如两个指定系统之间的一个队列,并为后续负责运维的人提供清晰的文档。招聘支持适合在平台方案确定后,希望把中间件开发工程师直接招进自己薪资名册的企业。咨询服务适合已经有队列或事件平台在运行、但希望在进一步扩容前获得独立审查的企业。
评估候选人
能揭示真实运维判断力、而不只是搭建配置知识的检查方式。
是什么原因造成的,他们是怎么发现的,事后又做了哪些改动。真正在生产环境运营过中间件的候选人,会讲出具体的故事,而不是含糊其辞。仅凭这个问题,往往就能看出是否值得根据这位候选人继续在迪拜聘请中间件开发工程师。
一条消息是否可能到达两次,接收系统应该如何设计来应对这一点,是一个能迅速区分真实经验和纸上谈兵的问题。
描述您实际的事件或交易量,问一个简单队列还是完整的流平台更合适,留意的是有理有据的回答,而不是一个默认答案。这是在为一个持续增长的产品聘请中间件开发工程师之前,最能说明问题的问题之一。
每一位有真实经验的中间件开发工程师,都有一个消息在死信处理机制发挥作用之前就消失的故事,以及后来他们搭建了什么来防止它再次发生。
询问他们专门为队列设置了哪些告警,例如深度或处理延迟,因为这正是早期预警真正发挥作用的地方。当您聘请中间件开发工程师、希望获得的是证据而不是承诺时,这是一个简单实用的问题。
认证
针对特定消息平台的供应商认证有一小批存在。
部分消息和流平台,以及各大云服务商的托管队列服务,都有自己的认证路径。当您的企业已经选定某个平台时,这些认证值得专门询问。
当您为持续的运维工作在迪拜聘请中间件开发工程师时,一段关于队列生产事件的真实描述,以及事后做出的改动,比任何证书都更能说明问题。
阿联酋考量
中间件平台本身托管在哪里,以及流经它的是什么数据。
阿联酋的联邦数据保护法覆盖通过电子方式处理的个人数据,无论处理实际发生在哪里,并要求这类数据在获得同意的前提下得到保护和处理。当客户或员工数据经过一个消息队列时,这个队列本身就落在范围之内,而不仅仅是两端的系统。
多家主要云服务商都为其托管队列和流服务提供阿联酋区域。请中间件开发工程师确认某个平台具体运行在哪个区域,因为这会影响延迟,也会影响相关数据的存放位置。当您为处理客户数据的项目聘请中间件开发工程师时,这是一个合理的提出点。
直接解答
位于各应用之间、而不属于其中任何一个应用的软件:一个消息队列、一个类似 Kafka 的事件流平台,或一个在系统之间路由和转换数据的服务总线。它是其他连接所依赖的基础设施,而不是一个连接本身。
直接调用意味着一个系统变慢或宕机时,另一个也要等待或跟着失败。队列让一个系统能立刻放下一项工作继续运行,另一个系统则在准备好时再来取,这在负载高或部分故障的情况下表现要好得多。
集成开发工程师通常搭建两个指定系统之间的一条连接。中间件开发工程师搭建并运营的是许多连接都能使用的共享平台,也就是队列或事件流本身,这是一种不同性质的持续职责。
一旦有多个系统需要对同一个事件做出响应,或者某个变慢的系统不应再拖慢另一个系统时,中间件就值得投入了。只有两条简单连接的企业往往还用不上,一位值得聘请的中间件开发工程师会如实说明这一点。
一套搭建规范的队列会有死信机制,捕获所有没有被成功处理的消息,让它们可见并可被排查,而不是悄悄消失。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。