广泛应用与巨大优势
通过以上代码就可以完成消息的生产了,kafka 给我们提供的这个 API 的功能确实非常简单易用,当然这里面实际上包含上比较多的细节,不过被 client 封装了进去,这里我们继续往深处挖掘下,看看隐藏在这段代码里面的可能存在的坑。 首先我们来简单分析下在这段代码里面 client 会做什么,(注:这里我们更倾向于给出一个通用工作流程,所以可能会忽略部分 java客户端独有特性 )。 1. client 通过代码中给出的 bootstrap.servers 去连接 broker,这里如果第一个broker 连接失败,那么 client 会从左往右重试去连接,直到全部连接失败或者某一个地址成功连接。 2. 当连接成功后,kafka client 会发起 ApiVersions request去kafka server 查询server 端支持各个 api 以及每个 api 最大的支持版本。从而达到 kafka 一个向下兼容的目的。当然由于 ApiVersions 是一个大约在 0.10 版本加入的 api,所以新版client 如果访问 0.9 版本的 kafka server 会引起ArrayIndexOutOfBoundsException 的报错,这个错误 kafka 官方在 0.10 的时候修复了。 3. 接下来 client 会查询将要发送消息的 topic 的元数据信息,向已经连接的 broker 发送 Metadata request,通过这个 api,kafka client 将会拿到集群 broker 的各种信息,包括 ip 和 port,以及 broker 对应的唯一 id,同时 client 也将获取到 topic的相关信息,parition 的 id 和 partition 选择出来的 leader replicas 所在 broker 的id,然后 client 将会建立 leader replicas 所在 broker 的连接,作为实际发送消息的数据链路。 在这里我们有三个细节需要注意
4.client 开始根据 message 中的 key 来计算 hash,确定这个 message 会被投递到哪个 partition 中去,然后 client 投递消息到本地的一个队列中,实际连接到partition 的投递者类,将从队列中取出消息,然后 client 会做两个检查之后调用Produce request 去投递消息。
实时访问数据的能力对于许多企业来说是必不可少的,在选择云计算提供商时应该考虑到这一点。企业必须确保云计算提供商有实时监控和流程,以便在停机中断时向其发出警报,以便企业可以迅速采取行动以最大程度地减少损失。 (5) 管理更复杂的环境 近年来,随着企业在公共云和私有云之间进行合并和转换,多云的使用量有所增加。大型技术提供商正在引领这种增长。Flexera公司发布的2020年云计算状态调查报告表明,93%的组织采用了多云策略。企业在与云计算提供商合作之前,需要确保企业将对与其他云计算系统一起使用该服务的能力进行研究,以及它是否提供了云计算提供商所需要的管理功能。 云迁移中面临的问题 云计算是一种变革性的技术,无疑将继续改变IT业务以及企业处理数据的方式。这些好处对很多企业都很重要,尤其是对于那些需要快速提高IT能力但在购买服务器设备和维护方面缺乏资金的中小型企业而言。 每个企业的情况都不一样。也就是说,在将业务转移到云平台时,企业面临的最大和最常见的问题是确保数据安全、降低成本、确保遵守行业法规,以及避免停机。 尽管迁移到云平台中涉及许多问题和挑战,但是正确解决这些问题可以使企业摆脱内部处理数据和存储的麻烦。
为了做出与云计算相关的最佳决策,企业首先需要制定一个战略计划,其中包括让企业的业务人员和IT人员积极参与进来。云迁移对企业来说不应是一个草率的举动,因为其对企业的业务将产生深远的影响。 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |