加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

大数据知识图谱实战经验总结

发布时间:2019-11-13 14:45:17 所属栏目:教程 来源:阿福班主任
导读:【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》 作为数据科学家,我想把行业新的知识图谱总结并分享给技术专家们,让大数据知识真正转化为互联网生产力!大数据与人工智能、云计算、物联网、区块链等技术日益融合,成为全球

灵活转发能力的总体设计中要考虑接口和消息中间件两种方式,其中消息中间件可支撑千万级用户规模的消息并发,适用于物联网、车联网、移动 Apps、互动直播等领域。它的应用场景包括:

  • 一是在传统的系统架构,用户从注册到跳转成功页面,中间需要等待系统接口返回数据。这不仅影响系统响应时间,降低了CPU吞吐量,同时还影响了用户的体验。
  • 二是通过消息中间件实现业务逻辑异步处理,用户注册成功后发送数据到消息中间件,再跳转成功页面,消息发送的逻辑再由订阅该消息中间件的其他系统负责处理。
  • 三是消息中间件的读写速度非常的快,其中的耗时可以忽略不计。通过消息中间件可以处理更多的请求。

主流的消息中间件有Kafka、RabbitMQ、RocketMQ,我们来对比一下它们性能,Kafka是开源的分布式发布-订阅消息系统,归属于Apache顶级项目,主要特点是基于Pull模式来处理消息消费,追求高吞吐量,主要用于日志收集和传输。自从0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务;RabbitMQ是Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。RocketMQ是阿里开源的消息中间件,由Java语言开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ设计思想源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。结合上述服务优势对比,在第三章我们会使用最主流的ActiveMQ消息中间件来处理数据转发,在第六章我们采用分布式的Kafka实现数据转发。

03 高可扩展海量存储服务

高可扩展是大数据处理的核心需求之一。实际工作中,当用户量在100万以内,而且数据量在TB级别以内,常常可以选择用Mysql数据库,灵活、成熟和开源的Mysql数据库是初创公司的首选。我们考虑使用纵表实现系统灵活可扩展,让经常使用的数据放在一个数据表中,让灵活变化的字段实现字典表模式,让内容常发生变化的数据对象尽量采用JSON格式。著名的OpenMRS系统在Mysql数据库中实现了自定义表格,让医生可以实现灵活自定义表格,收集自己的临床试验数据,让用户自己每天可以记录自己的饮食信息。这样的设计就能实现了应用场景的普适性。我们借鉴OpenMRS的核心思想来构建一个基于Mysql的小规模的物联网大数据模型。应用场景就是:一个患者到多个医院,进行体检并记录了各个生理指标。我们根据应用场景来建立数据模型。患者表构建为Patient表,医院表构建为Location表,体检构建为Encounter表,测量构建为Observation表,体检类型描述构建为Concept表,采用五张表的多表关联实现了普适的可扩展数据模型,在第三章节会详细阐述。

高可扩展的另外一个接口实现就是Restful架构。Restful接口是安全开放平台的主流接口风格。一般的应用系统使用Session进行登录用户信息的存储和验证,而大数据平台的开放接口服务的资源请求则使用Token进行登录用户信息的验证。Session主要用于保持会话信息,会在客户端保存一份cookie来保持用户会话有效性,而Token则只用于登录用户的身份鉴权。所以在移动端使用Token会比使用Session更加简易并且有更高的安全性。Restful架构遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用预先定义好的主流的标准的Get/Put/Delete/Post操作等。在第三章节会详细阐述。

04 高并发海量存储服务

MongoDB是适用于垂直行业应用的开源数据库,是我们高并发存储和查询的首选的数据库。MongoDB能够使企业业务更加具有扩展性,通过使用MongoDB来创建新的应用,能使团队提升开发效率。

我们具体分析一下关系模型和文档模型的区别。关系模型是按照数据对象存到各个相应的表里,使用时按照需求进行调取。举例子来说,针对一个体检数据模型设计,在用户管理信息中包括用户名字、地址、联系方式等。按照第三范式,我们会把联系方式用单独的一个表来存储,并在显示用户信息的时候通过关联方式把需要的信息取回来。但是MongoDB的文档模式,存储单位是一个文档,可以支持数组和嵌套文档,这个文档就可以涵盖这个用户相关的所有个人信息,包括联系方式。关系型数据库的关联功能恰恰是它的发展瓶颈,尤其是用户数据达到PB级之后,性能和效率会急速下降。

我们采用MongoDB设计一个高效的文档数据存储模式。首先考虑内嵌, 把同类型的数据放在一个内嵌文档中。内嵌文档和对象可以产生一一映射关系,比如Map可以实现存储一个内嵌文档。如果是多表关联时,可以使用在主表里存储一个id值,指向另一个表中的 id 值,通过把数据存放到两个集合里实现多表关联, 目前在MongoDB的4.0之后开始支持多文档的事务处理。

我们采用AngularJS框架设计一个高并发调用系统。一提到数据调用就想到了JQuery框架,JQuery框架的设计思想就是在静态页面基础上进行DOM元素操作。目前最成熟的数据调用的主流框架之一是AngularJS框架,AngularJS特别适合基于CRUD的Web应用系统。它简化了对Web开发者的经验要求,同时让Web本身变得功能更强。AngularJS对DOM元素操作都是在Directive中实现的,而且一般情况下很少自己直接去写DOM操作代码,只要你监听Model,Model发生变化后View也会发生变化。AngularJS框架强调UI应该是用Html声明式的方式构建,数据和逻辑由框架提供的机制自动匹配绑定。AngularJS有着诸多优势的设计思想,最为核心的是:数据理由、依赖注入、自动化双向数据绑定、语义化标签等。依赖注入思想实现了分层解耦,包括前后端分离和合理的模块化组织项目结构,让开发者更关注于每一个具体的逻辑本身,从而加快了开发速度,提升了系统的质量。双向绑定是它的精华所在,就是从界面的操作能实时反映到数据,数据的变更能实时展现到界面,数据模型Model和视图View都是绑定在了内存映射$Scope上。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读