译者 | 李睿
审校 | 重楼
51CTO读者成长计划社群招募,咨询小助手(微信号:TTalkxiaozhuli)
本文将探索一种解决方案,利用Apache Kafka将控件与数据流链接起来,从而提供供应链的端到端可见性。所有的数字信息都将流入统一的中枢神经系统,从而实现全面控制和及时反应。供应链控制塔的想法变成了现实:一个集成的数据驾驶舱,可以实时访问供应链的所有级别和系统。

供应链是由参与产品或服务的生产和交付的企业和人员组成的网络。如今,许多供应链是全球性的,涉及到内部物流、广泛的企业物流以及端到端供应链的B2B数据共享。
供应链管理(SCM)涉及到为企业创造价值所涉及的所有人员、流程和技术的规划和协调。这包括跨部门流程,例如采购/销售、物流、运营/制造等。自动化、健壮性、灵活性、实时和混合部署(边缘+云计算)对于未来的成功至关重要,无论其所在的行业领域如何,也是跨供应链端到端可见性的先决条件。

物流和供应链面临的挑战是,如今可能有很多现成的商业应用程序(ERP、WMS、TMS、DPS、CRM、SRM等),这些应用程序在功能上高度专业化并且先进。
批处理工作负载会在供应链中带来许多问题,而发生的新冠疫情表明了这一点:
供应链控制塔提供整个供应链的端到端可见性和实时监控:

控制塔可以帮助回答以下问题:
供应链控制塔结合了技术、流程和人员。如需要了解更多信息,可以在YouTube上查看Aadini的“供应链控制塔”,以获得更清晰的解释。最重要的是,软件的发展使实时自动化成为可能,而不仅仅是人类的视觉监控。
Apache Kafka是数据流事实上的标准,它可以实现任何规模的实时数据集成和处理。这是构建供应链控制塔的一个关键要求。
以下采用一幅跨用例的商业价值图来回顾一下Kafka在改善供应链方面的附加价值:

如果了解一下供应链控制塔的定义,它们或多或少是相同的。供应链控制塔只可能与实时数据相关,这就是Kafka最适用的原因。
供应链是全球性的,依赖于企业内部独立业务单元之间的协作和B2B通信:

最近,软件行业推出了一种新的范例和架构模式:数据网格。它允许使用自己的技术、API和数据结构实现独立的解耦域。但是数据共享是标准化的、兼容的、实时的、可靠的。借助Apache Kafka的强大功能,这样一个数据网格的核心可以实时运行:

Kafka原生工具,例如MirrorMaker或Confluent Cluster Linking,可以实现跨数据中心、云、区域甚至独立公司之间的可靠实时复制。
供应链控制塔协调跨不同领域、技术、API和业务流程的需求、供应、交易和物流。
控制塔不仅仅是一个Kafka集群,而是Kafka支撑着业务逻辑、集成和可视化,这些逻辑聚合了来自不同来源的所有数据,并使其从端到端实时变得更有价值。

数据通信以实时、近实时、批处理或请求-响应的方式进行。无论源和接收器应用程序支持什么。然而,企业架构的核心是实时的和可扩展的。这使得未来的现代化和用现代实时服务取代遗留的批处理系统成为可能。
可视化和自动分辨率作为现代控制塔的核心部件。供应链控制塔的第一个目标是端到端的实时可见性。创建实时仪表板、警报以及与第三方监控工具的集成具有巨大的价值。
然而,构建的管道支持几个额外的新用例。跨传统和现代应用程序的数据集成和关联是供应链优化创新的重大变化。新的应用程序可以根据实时信息自动采取自动操作和决策来解决问题,而不是实时可视化发生的事情。
现代供应链依赖于供应商、履行中心、仓库、商店和消费者之间的实时数据。以下是一些跨垂直行业使用Apache Kafka作为实时供应链控制塔的真实例子:
无论在哪个行业工作,如何向其他垂直领域的公司学习,改善供应链的挑战都非常相似。
虽然供应链控制塔提供了端到端的可见性,但每个系统都有类似的要求。企业资源计划(ERP)已经存在了很多年。它通常是单片的、复杂的、专有的、批处理的、不可扩展的。MES、TMS和许多其他物流和供应链管理平台也是如此。
后现代ERP代表了下一代ERP架构。它是实时的、可扩展的和开放的。后现代ERP结合了开源技术和专有标准软件。许多解决方案是云原生的,甚至作为完全管理的SaaS提供。
像终端用户一样,软件供应商利用Apache Kafka的数据流来实现后现代的ERP、MES、CRM、SRM或TMS:

数据流沿着价值链呈指数级增长。供应链的端到端可见性对于优化业务流程至关重要。实时订单管理和库存管理就是其中的两个例子。
通过自动化流程进行可视化和实时采取行动,既可以降低成本和风险,也可以增加收入和客户体验。实时供应链控制塔实现了这种创新。这种战略组件的基础需要是实时的、可扩展的和可靠的。这就是为什么数据流平台Apache Kafka非常适合构建控制塔的原因。
各行业领域的成功案例证明了数据流在整个供应链中的价值。甚至像ERP、WMS、TMS、DPS、CRM或SRM这样的供应链产品的软件供应商也在Apache Kafka之上构建他们的下一代软件。
那么如何将可见性带入供应链?已经建好实时控制塔了吗?数据流在这些场景中扮演什么角色?用户需要与行业专家进行沟通和探讨。
原文链接:https://dzone.com/articles/a-real-time-supply-chain-control-tower-powered-by-kafka

当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O
当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id
我真的只是不确定这意味着什么或我应该做什么才能让网页在我的本地主机上运行。现在它只是显示一个错误,上面写着“我们很抱歉,但出了点问题。”当我运行railsserver并在chrome中打开localhost:3000时。这是控制台输出:StartedGET"/users/sign_in"for127.0.0.1at2013-07-0512:07:07-0400ProcessingbyDevise::SessionsController#newasHTMLCompleted500InternalServerErrorin55msNoMethodError(undefinedmethod`
为了在我的mac上为一个rails项目安装mysql,我遵循了安装Homebrew软件和删除mac端口的在线建议。这是问题开始的地方。rails项目不会构建,我得到这个:[rake--prereqs]rakeaborted!dlopen(/Users/Parker/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle,9):Librarynotloaded:/opt/local/lib/libiconv.2.dylibReferencedfrom:/Users/Parker/.rvm/gem