在不离开收银机的情况下检查质量



生产资料越便宜,假货问题就越严重。 而且,如果产品很大且容易伪造,那么几乎可以肯定会出现假冒浪潮。 为了应对这一祸害,我们先进技术开发中心正在开发一种用于标记和跟踪产品的系统。 她的名字叫诚实标志 。 制造商在其产品的每个单元上都放置了一个唯一的DataMatrix代码,客户可以通过该代码查看产品是否在其前面,由谁生产以及如何在柜台上出售。

通过我们博客上的介绍性帖子,我们想向您介绍该系统及其操作原理,并且在以下文章中,我们将更详细地描述技术结构和开发功能。

我们是谁,我们做什么


我们是CRPT公司,即先进技术开发中心。 我们活动的方向之一是开发,实施和开发用于标记和追踪任何商品的数字系统。 有必要使每个购买者都可以确定商店中是否有假货。

如今,俄罗斯的香烟,鞋子和药品制造商已连接到我们的数据库。 到目前为止,最活跃的用户是烟草业的代表-该组已经开始对该国的所有制成品和进口产品进行强制性标记。 每天通过该系统传输的数据量高达5000万包。 轻工业,牛奶,轮胎,相机和其他仍在试验模式中研究该技术的行业的制造商也正在积极加入。

标记系统如何工作


俄罗斯政府决定是否需要对某些商品进行试点标签项目。 通常,此决定是在业务代表的主动下出现的。 我们正在启动一个试点项目,制造商在该项目中选择对他们来说方便的标签格式,以及将放置在数据库中并以唯一的标签代码DataMatrix加密的每个商品的附加信息。 此附加信息可能非常不同-例如,建议的零售价或有效期。 然后,制造商介绍了允许他们将DataMatrix放在包装上的软件,我们作为系统运营商,向他们提供了免费的设备-排放注册商,需要通过安全的通信渠道传输数字代码。

在试点项目进行期间,我们帮助参与者调试标记和信息交换过程。 当一切准备就绪时,该行业的其他制造商必须加入我们的系统。

当货物从制造商转移到货架时,链中的所有参与者都会向Honest SIGN发送各种信息:



结果,我们收集了有关系统参与者生产的每种产品的来源和移动的所有信息,并将其提供给制造商,零售商和客户。 来到商店时,您可以在柜台前转到Honest SIGN移动应用程序( AppStoreGoogle Play ),扫描包装上的代码,然后立即找到生产的国家,城市和地址。 也就是说,您将立即知道假货是否在您面前。

您肯定会问:“还有什么能防止伪造您的代码?” 事实是,每个标记代码都由一个小的受保护部分(即密码)签名。 而且,伪造的代码根本不会在应用程序中,买方进行扫描时或在结帐时通过系统中的支票。

代码从何而来? 有两种获取方法:

  • 或者,我们自己完全生成唯一的不可复制的代码,并将其提供给制造商。
  • 或者,制造商自行发行代码的序列部分,以便更方便地在其记帐系统中使用标记,并添加我们生成的密码部分。

我们的系统如何运作


基本工作方案如下:



它包括五个块。

系统的“入口门”就是路由 -一种网关。 来自贸易链中每个参与者的所有信息都在这里:制造商,批发商和零售商。 路由使用其他属性丰富了传入的数据,并确定应由哪个管道处理该信息或该信息。

处理参与处理所有传入信息,并通过路由进行过滤和丰富。 每个行业都以其业务流程集而著称,而这些业务流程是我们不断自动化的。 例如,对于烟草,它是消费税,对于牛奶,它是到期日。

该存储系统建立在分布式键值基础之上。 在这里,我们放置了有关每个标签字段以及影响此代码状态更改的每个文档的所有信息。 每个大型产品组都有自己的基础,因为需要备份和扩展的信息量非常大。

我们以不同的方式使用数据仓库:我们进行选择,在您的个人帐户中形成信息的图形显示,并使用外部API将其提供给系统参与者。

系统组件执行许多任务:身份验证,授权,服务间交互。 换句话说,一切与检查访问权限以及系统组件之间的交互有关。

最后, 个人帐户是系统参与者(制造商,批发商和零售组织)的图形界面。 也就是说,对于从事销售,退休和销售给最终消费者的公司。 在您的个人帐户中,将以方便的形式生成报告和图表,以显示公司发送了多少代码,在什么时期,在哪个产品类别中,已经在零售中出售了多少商品,等等。

信息如何在系统中流动?


制造商生成一批代码并发送给我们或创建订单以接收代码。 作为响应,我们发送按模板检查代码的结果,或者发送现成代码的列表。 此后,制造商放置这些代码并报告在生产过程中它们已被使用或丢失,也就是说,带有代码的货物将被拒绝。 此信息从路由转移到处理,直接与数据仓库交互。 另外,个人帐户与他一起工作,在其中保护了系统参与者的业务逻辑。

换句话说,我们从参与者那里接收数据:

  • 什么代码应用于货物,
  • 需要向最终用户显示哪些其他产品信息。

此外,我们对这些数据进行汇总,以确保伪造代码的唯一性和安全性,并以便捷的形式通过移动应用程序为所有用户提供服务。 业务代表可以随时接收有关我们系统中可用产品的所有信息的报告。

技术领域


由于我们正在创建一个国家标签系统,因此它将每天“消化”该国生产的所有商品的信息,并将其提供给数千万的用户。 因此,我们选择的技术不仅可以提供高性能,还可以使我们快速扩展系统。

如今,我们每秒处理多达300单位的商品,并且其频率大致相同-经历了“发布”,“代码”,“从一个参与者转移到另一参与者”阶段的商品记录。 仅就烟草产品而言,每月大约有十亿条记录输入该系统,信息总量达到数十Tb。

系统中的所有服务(大约有250个)都部署在Kubernetes集群上,因此我们根据需要悄悄地增加容量和存储量。

在大多数情况下,系统是用Java 11编写的,处理过程是用Scala编写的。 对于服务器之间的通信,我们选择了Kafka。 标签代码本身存储在Hbase中,相关信息存储在PostgreSQL中。 我们将系统代码打包到Docker容器中,将Helm交付给Kubernetes集群,监视Prometheus并监视Grafana中的运行状况。

我们已将由我们开发的分析服务器连接到数据仓库,这些服务器为系统参与者构建报告。 到目前为止,服务器是基于Hbase构建的,但是我们正在非常积极地尝试使用ClickHouse。

系统开发


许多参与者都希望得到我们的反馈-我们会收到所有发送的信息吗?在处理文档时是否有任何问题?系统中的参与者是否拥有传输的代码? 这样的反馈机制应该是端对端的,而不使用存储,以免重复信息和不额外加载系统。 因此,我们将远离中间存储库,并且已经在通过路由,处理来实现端到端事务,反之亦然。

在以下出版物中,我们将详细介绍五个体系结构块中的每一个的实现方式,以及我们的系统,技术和创建它的人员。

该材料是在MDCT开发团队(Java)负责人Dmitry Poluyanov的支持下编写的。

Source: https://habr.com/ru/post/zh-CN467851/


All Articles