热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一文深入浅出理解国产开源木兰许可系列协议

伴随着国际形式的变迁,越来越多组织申明将遵循美国出口管制法律的约束,并且蔓延到了开源领域;关于国内开源生态如何自立,做到在逼不得已无法与国际接轨的情况下能够健康发展的措施也被提上议

伴随着国际形式的变迁,越来越多组织申明将遵循美国出口管制法律的约束,并且蔓延到了开源领域;关于国内开源生态如何自立,做到在逼不得已无法与国际接轨的情况下能够健康发展的措施也被提上议程,木兰系列许可证系列由此诞生。木兰系列许可证系列(包含“木兰宽松许可证”和“木兰公共许可证”等),均由北京大学作为牵头单位,依托全国信标委云计算标准工作组和中国开源云联盟,联合开源生态圈产学研优势团队和个体、尤其是开源法务和律师,起草、修订并发布。其中Mulan PSL 是国内首个被OSI认定的“国产开源软件协议。@pdai

  • 国产开源:木兰许可协议系列
    • 什么是木兰许可证
      • 木兰许可证诞生的背景
    • 木兰许可证的类型和版本
      • 木兰宽松许可协议
      • 木兰公共许可协议
      • 木兰开放作品许可协议
      • 木兰-白玉兰开放数据许可协议
        • 「木兰-白玉兰开放数据许可协议」起草说明
    • 进一步理解
      • MulanPSL v2 版本通过 OSI 认证? v1 不符合开源定义? 是否对云有限制?
      • 与主流许可证的区别?
      • 与主流许可证的兼容性?
      • 如果开源项目希望使用木兰协议系列,该如何选择?
      • 关于如何使用木兰-白玉兰开放数据协议的说明?
    • 参考资料

什么是木兰许可证

木兰系列许可证包含“木兰宽松许可证”和“木兰公共许可证”(后续可能还有更多),均由北京大学作为牵头单位,依托全国信标委云计算标准工作组和中国开源云联盟,联合开源生态圈产学研优势团队和个体、尤其是开源法务和律师,起草、修订并发布。

  • 木兰开源许可证第一个版本于 2019年8月5日发布,第二版本于 2020年1月发布。
  • 2020年 2 月 14 日,开源促进会(OSI,Open Source Initiative)批准了来自中国的木兰开源许可证第二版(MulanPSL v2),木兰许可正式成为一个国际化开源软件许可证(或称“协议”)。这意味着中国现在拥有了具有国际通用性、可被任一国际开源基金会或开源社区支持采用,并为任一开源项目提供服务的开源许可证。

PS: OSI 是定义“开源”、制定开源协议标准的组织,符合 OSI 开源定义的许可证被认定为开源许可证,目前其批准的开源软件协议有 100 多个,比如目前比较流行的 MIT、Apache-2.0 与 BSD 3-Clause 等都在 OSI 认定的开源许可证列表中。而 Mulan PSL 是国内首个被OSI认定的“国产开源软件协议”

木兰许可证诞生的背景

最重要的是所处的国际形势,主要关注当时两大引爆事件:

  • 全球最大的开源软件基金会 ASF(Apache 软件基金会)的管理办法中明确说明其遵循美国出口法律,所以它旗下的所有项目亦受到美国出口法律的管制。而 ASF 旗下开源项目的名单中有许多耳熟能详的项目,比如 Kafka、Solr、Hadoop 与 Spark 等;

  • 全球最大源码托管平台 GitHub 表示:GitHub.com、GitHub Enterprise Server 以及您上传到任一产品的信息可能受美国出口管制法律的约束,包括美国出口管理条例(EAR)。并且实际上其已经对古巴与朝鲜等地实施限制。

消息一出,国际国内开源界议论纷纷,关于开源生态如何自立,做到在逼不得已无法与国际接轨的情况下能够健康发展的措施也被提上议程。

于是我们看到华为在加快国产开源操作系统鸿蒙的研发,看到国内第一个开源软件基金会在紧急筹备,也看到了第一个国产开源协议木兰的诞生。

木兰许可证的类型和版本

木兰系列许可证实际上在设计的时候是期望做一个系列,目前木兰许可证族已研制发布了三个许可证:木兰宽松许可证(MulanPSL v1;MulanPSL v2)、木兰公共许可证(MulanPubL v1;MulanPubL v2)、木兰-白玉兰开放数据许可协议(MBODL v1),分别面向开源软件宽松型、强著作权型以及开放数据集使用等三类不同的开源应用需求。同时木兰开放作品许可证(Mulan Open Works License, Mulan OWL)处于待发布状态,后续可能会推出更多的协议来满足特定的使用场景。

木兰宽松许可协议

木兰宽松许可证(MulanPSL), 这里是协议的全文。

MulanPSL v1,具有以下特点:

  • 许可证内容以中英文双语表述,中英文版本具有同等法律效力,方便更多的开源参与者阅读使用,简化了中国使用者进行法律解释时的复杂度
  • 许可证明确授予用户永久性、全球性、免费的、非独占的、不可撤销的版权和专利许可,并针对目前专利联盟存在的互诉漏洞问题,明确+ 规定禁止“贡献者”或“关联实体”直接或间接地(通过代理、专利被许可人或受让人)进行专利诉讼或其他维权行动,否则终止专利授权。
  • 许可证明确不提供对“贡献者”的商品名称、商标、服务标志等的商标许可,保护“贡献者”的切身利益。
  • 许可证经技术专家和法律专家共同修订,在明确合同双方行为约束的前提下尽可能地精简条款、优化表述,降低产生法律纠纷的风险。

MulanPSL v2 对 MulanPSL v1 的具体改进

  • 增加“语言”条款,声明了“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本任何冲突不一致,以中文版为准。
  • 为适应一些国家对担保免责条款的显著性要求,MulanPSL v2 在英文版中采用大写突显担保免责条款。
  • 为了减少英文表述产生的歧义问题和语言习惯问题,MulanPSL v2 修订了“软件”(Software)和“关联实体”(Affiliates)的定义,以及“授予专利许可”(Grant of Patent License)条款的相关表述。

木兰公共许可协议

木兰公共许可证(MulanPubL), 这里是协议的全文。

木兰公共版和宽松版最大的区别在于其传染性即他人使用了代码之后在特定情况下也必须采用木兰公共版进行开源。我们来看下v2中的分发限制:

您可以将您接收到的“贡献”或您的“衍生作品”以源程序形式或可执行形式重新“分发”,但必须满足下列条件:

  1. 您必须向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明;并且,
  2. 如果您“分发”您接收到的 “贡献”,您必须使用“本许可证”提供该“贡献”的源代码副本;如果您 “分发”您的“衍生作品”,您必须:
  • 随“衍生作品”提供使用“本许可证”“分发”的您的“衍生作品”的“对应源代码”。如果您通过下载链接提供前述“对应源代码”,则您应将下载链接地址置于“衍生作品”或其随附文档中的明显位置,有效期自该“衍生作品”“分发”之日起不少于三年,并确保接收者可以获得“对应源代码”;或者,
  • 随“衍生作品”向接收者提供一个书面要约,表明您愿意提供根据“本许可证”“分发”的您“衍生作品”的“对应源代码”。该书面要约应置于“衍生作品”中的明显位置,并确保接收者根据书面要约可获取“对应源代码”的时间从您接到该请求之日起不得超过三个月,且有效期自该“衍生作品”“分发”之日起不少于三年。

协议中还指出了例外情况

  1. 如果您将“贡献”与采用GNU AFFERO GENERAL PUBLIC LICENSE Version 3(以下简称“AGPLv3”)或其后续版本的作品结合形成新的“衍生作品”,且根据“AGPLv3”或其后续版本的要求您有义务将新形成的“衍生作品”以“AGPLv3”或其后续版本进行许可的,您可以根据“AGPLv3”或其后续版本进行许可,只要您在“分发”该“衍生作品”的同时向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明。但任何“贡献者”不会因您选择“AGPLv3”或其后续版本而授予该“衍生作品”的接收者更多权利。

木兰开放作品许可协议

开放作品许可证是对开放作品的使用、复制、修改和分发等行为进行规范和约束的一种具有法律效力的格式合同,是保护创作者权利、推动开放作品发展的重要支撑;目前根据不同的授权要素及传播条件,共产生四个许可证。

背景

为满足在知识共享领域的开源应用,助力营造良好版权氛围,中国电子技术标准化研究院与国防科技大学联合组织开展面向开放作品应用领域的许可证编制。木兰开放作品许可证由国防科技大学牵头技术研发,依托木兰开源社区,联合开放原子开源基金会、华为、思否、Datawhale、北大法学院、上海白玉兰、开源社等国内开源生态圈产学研各界优势团队以及拥有丰富知识产权相关经验的众多律师共同起草完成。

当前,开源的理念及其生产方式已延伸到其他类型作品(如书籍、设计等)的创作中,人们越来越多地将自己的作品开放给大众使用,并允许大众参与到作品的创作中。在这样一种共享共创的方式下产生了大量高质量开放作品,相较传统著作权下保留所有权利的作品,开放作品具有以下三方面的特征:

  • 开放使用。允许作品作者以外的个人或组织通过合理方式***使用作品或其部分。
  • ***分发。允许作品作者以外的个人或组织通过合理方式***分发作品或其部分。
  • 允许修改。允许作品作者以外的个人或组织通过合理方式修改作品或其部分并再发布。

类似于开源软件许可证,开放作品许可证是对开放作品的使用、复制、修改和分发等行为进行规范和约束的一种具有法律效力的格式合同,是保护创作者权利、推动开放作品发展的重要支撑

目前根据不同的授权要素及传播条件,共产生四个许可证,如下表所示(许可证征求意见稿请在附件1-4中下载):

相较面向一般作品的公共版权许可证,木兰开放作品许可证 1.0具有以下特点

  • 许可证面向的对象为开放作品;
  • 提供授予专利许可的许可证;
  • 针对多版本和多作者作品在署名和分发等方面提供使用规范;
  • 根据中国相关法律拟制,兼顾国际通行法律原则与实践;
  • 以中英文双语表述,中英文版本具有同等法律效力,如果中英文版本存在任何不一致,以中文版为准。

木兰-白玉兰开放数据许可协议

木兰-白玉兰开放数据许可协议」是由「上海白玉兰开源开放研究院」在「木兰开源社区」 框架和精神下所发起的一项研究项目,旨在探索创建一组标准化的、立足中国人工智能实践、推动数据要素流通、优化人工智能发展环境的数据许可协议。这里是协议的全文。

背景

当前在人工智能领域尚缺乏切合实际的开放数据许可,使得数据要素的使用和流通仍存在诸多障碍和不确定性,不仅容易产生数据安全及法律方面问题,而且由于对数据本质属性、存在形态、使用方式等方面仍认识不足,造成数据资源的使用现状与数据可供挖掘的价值不匹配。为了人工智能技术和相关数据资源的可持续开发使用,开放数据许可协议的作用愈加凸显。通过规范数据利益相关方的身份和概念定义,界定数据利益相关方之间对特定数据对象流通条件和方式的各自权责,并尽可能以完全开放的模式引导数据流通,促进数据要素的开放共享与开发利用。

「木兰-白玉兰开放数据许可协议」起草说明

这块内容说明,来源于木兰-白玉兰开放数据协议的说明

协议的草拟由「白玉兰开源」联合「开放数据中国」完成,过程中我们对:

  • 国际通用开放协议如知识共享协议、开放数据库协议(ODbL)等做了研读和理解,并将其中的术语、起草策略等加以总结和归纳
  • 国际社群人工智能领域数据流通的授权协议如微软起草的 O-UDA、C-UDA,Linux Foundation 起草的 Community Data License,Element AI 起草的 Montreal Data License 等做了研读和理解,并基于 Montreal Data License 的精神,对术语中规定的使用行为做了人工智能界别的定制化和细致化。
  • 对中国现行民法典,以及数据安全法草案、个人信息保护法草案等予以研读,并借鉴了其中相关的术语定义
    考虑到数据要素流通的合规复杂性,当前草拟版本基于如下原则和适用性拟定:
  • 针对人工智能训练数据集的发布拟定适用的协议
  • 所发布数据应满足基本的公开发布、免费发布的前提
  • 所发布数据符合国家数据安全的要求,不涉及国家秘密、国家安全、社会公共利益、商业秘密等
  • 所发布数据不涉及个人信息(参照「《个人信息保护法(草案)》(二次审议稿),个人信息是以电子或者其他方式记录的与已识别或者可识别的自然人有关的各种信息,不包括匿名化处理后的信息)

考虑到当前人工智能训练数据集从权属角度可分为两类情况:

  • 第一类,数据由数据发布者合法合规所有或具备用益权
  • 第二类,数据由数据发布者通过合法合规的方式自第三方处获取汇编组合而得

因此「木兰-白玉兰开放数据许可协议」对上述两类情况产出了两组不同起草策略的协议:

第一组,即默认数据由数据发布者合法合规所有或具备处置权

我们借鉴知识共享协议的模式,草拟了一套 4 份协议,即

  • MBODL:宽松开放协议,适用于最小化限定仅要求注明数据来源的数据发布
  • MBODL-NC:非商业使用协议,适用于禁止使用者商业化使用和分享数据及成果
  • MBODL-SA:相同方式许可,适用于要求下游传播数据能够以相同方式给予许可,但不要求对产出的成果使用协议的传染性
  • MBODL-CU:仅计算使用协议,适用于数据发布方禁止对数据自身的直接使用、展示的情况(如电视台作为数据发布方会希望禁止视频数据本身的播放、拷贝、售卖等,但会允许使用视频数据作为训练数据训练视频语义标签等任务)

上述四个协议,均以 MBODL 为基础,在「许可限制」小节中予以增加不同的限制而形成。但正如 CC 协议,在这 4 套协议的基础上,也可再进行许可限制的叠加交叉,形成新的协议,如 MBODL-NC-CU,即规定非商业使用且仅计算使用,又如 MBODL-SA-CU,即规定相同方式授权数据且仅计算使用。

第二组,即数据发布者数据为自第三方合法合规获取

我们借鉴了 ODbL(开放数据库协议)的策略,对数据库/数据集的结构(即数据选取、组织的方式,database scheme)和数据内容予以了拆分授权的方式。此类授权策略仅为实验性,待进一步反馈确定 1)是否有真实需求 2)是否具备可操作性。

对于上述第二组的情况,我们提供两个可能的案例展开说明:

案例 1:数据发布者通过 wikipedia 和 flickr 等渠道获取了各类鸟类的图片数据,图片数据各自分别授权在 CC 等开放授权协议下,数据发布者通过选取和组合这些鸟类图片,添加了自身对鸟类的标签(鸟类照片对应的鸟类名称、科目等信息),最后形成了一个「鸟类图片训练数据集」需要授权发布。则在第二组协议的策略下,其将采用「白玉兰开源开放数据协议」(仅授权结构)+「标注数据」(授权内容-发布者选用新授权)+「各图片原有协议」(授权内容-依照各自协议)的方式授权发布整个数据集。

案例 2:数据发布者通过授权方式(假设授权允许发布者重新发布影像图片)从 N 家医院各自获取了脱敏后的肺部 CT 影像图片数据,数据发布者自身投入人力完成了对上述影像数据的肺结节标注。数据发布者希望将影像图片数据+标注数据组合发布为「肺结节标准训练数据集」,因此可采用其将采用「木兰-白玉兰开放数据许可协议」(仅授权结构)+「标注数据」(授权内容-发布者选用新授权)+「各图片原有协议」(授权内容-依照各自协议)的方式授权发布整个数据集。

我们基于上述案例的场景描述,草拟了 MBODL(结构内容分离版)协议,作为一个单独的实验性协议供各界讨论适用性和条款的实践落地可能。

进一步理解

让我们通过几个问题进一步理解木兰协议系列。

MulanPSL v2 版本通过 OSI 认证? v1 不符合开源定义? 是否对云有限制?

MulanPSL v2 版本通过 OSI 认证,是否意味着 v1 本身就不符合开源定义,在开源生态中不具有实际意义?

牵头人周明辉解释,Mulan PSL v2 与 Mulan PSL v1 本质上没有区别,Mulan PSL v2 是在 Mulan PSL v1 基础上的进一步完善。认证过程中,OSI 及社区其他专家并没有表示 Mulan PSL v1 不符合开源定义,仅对规范语言和部分英文表述问题给出了相关建议。

(v2针对v1的变化点,上文已经有说明)

此外,关于木兰特性以及 v2 相比 v1 的改进,因为当前开源与云的争端不断(@pdai: 比如ElasticSearch,MongoDB更改开源协议),在去年木兰 v1 出来的时候就有律师建议可以在协议条款中加上针对云的一些内容,也抛出了相关问题。

周明辉表示,Mulan PSL 的定位是宽松版许可证,对如何“使用、修改、复制、分发”开源软件没有额外限制,仅要求保留各类声明和许可证副本,因此也并未对“云”做任何限制。同时她也补充到:“今后在制定木兰系列其它类型的许可证时,我们可能会考虑到‘云’场景。”

与主流许可证的区别?

Mulan PSL v1 & 2 与BSD 3-clause License与Apache License V2.0在声明义务、专利许可、对用户专利维权限制及版权许可上均有差异,在商标许可上无差异,见下表:

与主流许可证的兼容性?

许可证的兼容性评判并无统一标准。从 Mulan PSL v1 的条款及目的出发,Mulan PSL v1 与 BSD 类许可证类似,兼容性很好。

BSD、MIT 类宽松许可证兼容 Mulan PSL v2 许可证;Mulan PSL v2 兼容 Apache License v2.0、L/GPLv2、L/GPLv3 等许可证。即,许可在 BSD、MIT 类许可证下的代码可以贡献到 Mulan PSL v2的项目中,许可在 Mulan PSL v2 下的代码可以贡献到 Apache License V2.0、L/GPLv2 或 L/GPLv3 等项目中。

注意,许可证 A 兼容许可证 B(A 许可证是 B 许可证 Compatible)是指,A 授权的作品与 B 授权的作品经过修改或合并,可以使用 B 对作品的整体进行授权。兼容性是有方向的,A 兼容 B,但 B 不一定兼容 A。

如果开源项目希望使用木兰协议系列,该如何选择?

如果开源项目希望使用木兰协议系列,该如何选择?这里有一个例子香山团队在香山开源项目(RISC-V处理器)选择协议系列和版本时的分析和选择,非常值得参考,原文请参考这里。

为何值得参考

  1. 香山团队当时邀请到北京大学周明辉教授为带来了主题为《开源许可证概览》的讲座,周教授就开源许可证(LICENSE)的内容框架、使用案例、木兰开源许可证、如何选择开源许可证等问题与香山团队进行了深入交流。
  2. 在对木兰公共版的传染性问题做了充分的分析。
  3. 开源项目还涉及到硬件部分,硬件和软件有很大的差别,硬件的专利约束要比软件强得多。香山团队为香山开源社区建设做了很多的准备,包括正在与专业的律师一起设计、制定知识产权的共享方案。

关于如何使用木兰-白玉兰开放数据协议的说明?

这块内容说明,来源于木兰-白玉兰开放数据协议的说明

使用木兰-白玉兰开放数据协议分三步走:

  1. 根据你所发布数据的情况选用正确的协议,和组合条件:
    a. 你的数据集中是否存在汇编第三方已有相关授权协议的数据?如是,请选用 MBODL(scheme-only)-1.0,并基于此叠加条件
    b. 你希望第三方在使用你数据时,对你署名致谢吗?如是,请选用 MBODL-BY 协议,并基于此进一步叠加条件
    c. 你希望限制第三方非商业使用吗?如是,请选用 MBODL- NC 协议,并基于此进一步叠加条件
    d. 你希望第三方在基于你数据集发布衍生数据时,采用相同协议吗?如是,请选用 MBODL-SA 协议,并基于此进一步叠加条件
    e. 你希望第三方仅计算使用数据吗?如是,请选用 MBODL-CU,并基于此进一步叠加条件

  2. 确定最终的协议组合形态,比如你同时选用了署名、非商业限定,则你得到的协议最终版本应该写作 MBODL-BY-NC 1.0

  3. 在显示位置及数据文档中,加入协议使用文字:

「该项目下的数据授权在木兰-白玉兰开放数据协议(MBODL-XX-YY)1.0 协议之下,了解详情请访问 https://github.com/Bai-Yu-Lan/Mulan-Baiyulan-Data-License」

  1. 如果你选用了 BY 署名,可在上述协议条款处,附上你的署名要求,如:

「你应当在基于此数据的成果中,包含如下格式的署名致谢:感谢 XXXXX 的 XXXXX 数据集 或 本项目/论文所使用数据来自 XXXXX 的 XXXXXX 数据集」

参考资料

  • http://license.coscl.org.cn/MulanPubL-2.0/index.html
  • http://license.coscl.org.cn/MulanPSL2/index.html
  • https://license.coscl.org.cn/faq.html
  • https://github.com/Bai-Yu-Lan/Mulan-Baiyulan-Data-License
  • https://blog.csdn.net/kaiyuanshe/article/details/114859888
  • https://www.163.com/dy/article/F9M6RV5N0511CUMI.html
  • https://www.sohu.com/a/429595367_99915568
  • 部分内容还整理和参考了周明辉的作为嘉宾的分享的公开资料(周明辉,北大计算机科学与技术系教授,主要研究开源开发方法和技术,目前对开源生态的演变过程非常感兴趣。主要涉及的领域包括大数据挖掘、软件工程与开源数字社会学等)。

推荐阅读
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
author-avatar
张洪幸_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有