Python机器学习模型搭建只需要几行代码
本文从操作系统原理出发结合代码实践讲解了以下内容:
什么是进程进程-操作系统提供的抽象概念,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。程序本身是没有生命周期的,它只是存在磁盘上的一些指令,程序一旦运行就是进程。
当程序需要运行时,操作系统将代码和所有静态数据记载到内存和进程的地址空间(每个进程都拥有唯一的地址空间,见下图所示)中,通过创建和初始化栈(局部变量,函数参数和返回地址)、分配堆内存以及与IO相关的任务,当前期准备工作完成,启动程序,OS将CPU的控制权转移到新创建的进程,进程开始运行。 在看完了事务代码后,我们似乎没有提到 sendOffsetsToTxn 这个函数,这个函数实际上是用于当前事务消息是一个从一个 topic 消费,然后写入到事务消息的时候使用的,消费的 offset 可以通过这个函数提交到协调者,后续在事物提交的时候再一并提交消费者消费掉的 offset。防止事务失败的时候用户还需要手动管理消费者 offset。是一个非常有用的帮助函数。 总结到此为止,我们从客户端视角出发简单的去分析了 kafka 生产者的一些用法和相应需要注意的坑,由于作者的本篇文章是从工作中遇到的一些问题出发的,所以相应的如果某些地方用得多有人咨询的多,那么可能会写的稍微详细一些,有的地方咨询的人少,遇到的问题也相应比较少,可能就会简略一些。
希望本文能够让各位读者有所收获,能够对 kafka 生产者这部分有更好的了解。感谢各位的阅读,让我们下一篇文章 kafka 消费者再见。 首先代码里面执行 initTransactions 作为第一步,在这个逻辑中 client 将会请求 InitProducerId 并传递事务 id,用来建立一个事务 id 和 PID 一对一的关系。如果有多个生产者加入到同一个事务 id 中,前面加入的生产者都会被后面加入的替代。前面生产者的请求都会被拒绝。 值得注意的是如果 client 短线重新连接,它会在请求 InitProducerId 的时候提交之前使用的 PID 以及 epoch,如果成功随后 server 会返回 epoch+1,同时会拒绝所有 epoch小于当前 epoch 的生产者消息,这是为了解决分布式系统中所谓的僵死问题。
然后接下来的代码调用就和很多事务代码一样了,启动一个事务,写入所有需要写入的信息,最后再 commit,如果失败则回滚,如果成功就会一起提交所有写入,然后做接下来的业务逻辑。一般大部分事务的实现都是一个状态机,这里我们就放上一张图不继续分析下去了。 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |