Graphql的使用

一、原生JS中使用Graphql

    1. 准备工作:

      需要下载的包:

      • express

      用于搭建web服务器

      • graphql

      用于创建数据模板

      • express-graphql

      用于创建express中间件

    2. 构建查询数据的案例

引入要使用的库

const express = require('express')
//构建轮廓的方法
const { buildSchema } = require('graphql')
//连接器
const { graphqlHTTP } = require('express-graphql')

构建一个查询模板

//构建轮廓
const Schema = buildSchema(`
type Query{
    hello:String
}`)

创建与模板对应的数据源

const root = {
    hello: () => {

        return "hello gtaphql"
    },
}

使用express创建一个app应用

const app = express()

 使用中间件链接数据与模板,并监听3000端口

app.use('/graphql', graphqlHTTP(
    {
        schema: Schema,
        rootValue: root,
        //开启调试器
        graphiql: true
    }
))

app.listen(3000)

 在浏览器中输入【http://localhost:3000/graphql】,按回车就会出现如下界面

清空左侧界面,输入【query{hello}】,点击左上角运行按钮,出现以下界面,右侧出现查询结果

完整代码

代码
const express = require('express')
//构建轮廓的方法
const { buildSchema } = require('graphql')
//连接器
const { graphqlHTTP } = require('express-graphql')


var app = express()
//构建轮廓
var Schema = buildSchema(`
type Query{
    hello:String
}`)

//与轮廓对应
const root = {
    hello: () => {

        return "hello gtaphql"
    },
}
// app.use(bodyParser.json()); // application/json

// app.use('/home', function (req, res) {
//     res.send('home')
// })
// app.use('/list', function (req, res) {
//     res.send('list')
// })






app.use('/graphql', graphqlHTTP(
    {
        schema: Schema,
        rootValue: root,
        //开启调试器
        graphiql: true
    }
))

app.listen(3000)

3.构建可以修改数据的案例

创建新的模板

//query只能查询,要用mutation来进行增删改
var Schema = buildSchema(`
    type Account{
        name:String,
        age:Int,
        address:String
    }
    type Film{
        id:Int,
        name:String,
        grade:Float,
        price:Int
    }
    input FilmInput{
        
        name:String,
        grade:Float,
        price:Int
    }
    type Query{
        hello:String,
        getAllNames:[String],
        getAccount:Account,
        getFilms:[Film],
        getFilmDetail(id:Int!):Film
    }
    type Mutation {
        createFilm(input:FilmInput):Film,
        updateFilm(id:Int!,input:FilmInput):Film,
        deleteFilm(id:Int!):String
    }
`)

创建模板对应的数据

//对应数据
var data = [
    {
        id: 1,
        name: 'kongfu',
        grade: 9,
        price: 39

    },
    {
        id: 2,
        name: '大话西游',
        grade: 9.7,
        price: 27

    }, {
        id: 3,
        name: '喜羊羊与灰太狼',
        grade: 9,
        price: 48

    }
]
var root = {
    hello: () => { return 'hello world' },
    getAllNames: () => {
        return ['赵', '钱', '孙', '李']
    },
    getAccount: () => {
        return {
            name: 'wang',
            age: 3,
            address: 'cq'
        }
    },
    getFilms: () => {
        return data

    },
    getFilmDetail({ id }) {
        return data.filter((item) => item.id === id)[0]
    },
    createFilm({ input }) {
        var obj = { id: data.length + 1, ...input }
        data.push(obj)
        return obj
    },
    updateFilm({ id, input }) {
        console.log(id, input)
        data.map(item => {
            if (item.id === id) {
                console.log('map', item.id)
                item.name = input.name
                item.grade = input.grade
                item.price = input.price
            }

        })
        var obj = data.filter(item => item.id === id)[0]
        return obj
    },
    deleteFilm({ id }) {
        console.log(data)
        let flag = true
        const newdata = data.filter(item => {
            if (item.id === id) {
                flag = false
                return
            }
            return item
        })
        data = [...newdata]
        return flag ? '未找到该数据' : '删除成功'
    }
}

运行后界面如下,可以发现左边较之先前多了mutation一项,在左侧输入【mutation{createFilm(input:{name:"哈哈哈哈哈",price:100}) {
  id,name,price}}】,点击运行,右侧返回添加的结果(注意:query和mutation操作不能同时进行)

本文转载于网络 如有侵权请联系删除

相关文章

  • MySQL 8.0.29正式发行(GA)

    MySQL的最新版本8.0.29于2022年4月26日正式发行(GA)。MySQL8.0发布至今已经历4年(2018年4月19日GA),已经进入了标准生命周期的末期,如果您还在继续使用MySQL5.7版本,甚至是5.6版本,您现在应该认真考虑未来的数据库安全问题。MySQL8.0.29是一个维护版本,在这个版本里面做了大量的缺陷修复以及少数的改进,让我们快速浏览一下。缺陷修复MySQL8.0.29修复了160个缺陷与错误,特别感谢YuhuiWang和中国移动的BinWang,他们为MySQL贡献了两处修复代码。欢迎广大爱好者持续为MySQL提交错误报告和缺陷修复。功能改进MySQL8.0.29中做了少量的功能改进,包括未来版本中将使用的基础功能及将弃用的功能。用户需要注意如下内容: 字符串:服务器在使用“SHOW”语句输出、及报告无需字符时,使用utf8mb3代替之前使用的utf8。此外,服务器使用utf8mb3代替utf8用于填充数据字典表的字符集名称,将影响字符集和相关信息的显示。 时间格式:MySQL之前对时间格式的分隔符或空白等要求宽松,从此版本开始,推荐用户使用标准格式,使用

  • 视角合成视频的质量评价

    论文题目:Measurementofcriticaltemporalinconsistencyforqualityassessmentofsynthesizedvideo(ICIP2016) 原文链接:https://ieeexplore.ieee.org/abstract/document/7532513 作者:HakGuKim,YongManRo 内容整理:贾荣立 本文提出了一种新的针对合成视频质量评估的时间一致性测量方法。在视角合成视频中,孔填充过程引起的时间不一致性会影响合成视频的感知质量。在该方法中,作者提取了连续帧之间的过度闪烁区域,并通过测量结构相似性来量化时间不一致性对它们的感知影响。通过比较主观评分和现有的客观指标,证明了所提出的质量评价方法的有效性。实验结果表明,所提出的时间不一致性指标与合成视频的整体质量高度相关。目录引言方法过度闪烁区域检测过度闪烁区域的结构相似性时间池化实验结果总结引言基于深度图像的渲染(Depth-image-basedrendering,DIBR)是一种广泛使用的视图合成技术。DIBR包含3Dwarping和孔填充技术。在三维扭曲中,通过将

  • 超实用的 gRPC 客户端调试工具

    图片拍摄于2021年7月10日,湖州安吉。介绍正好看到董泽润老哥一篇关于使用WireShark分析gRPC流量的文章,学到了。原文地址:小技巧!Wireshark让调试grpc不再困难那我就介绍使用过的两款gRPC客户端调试工具吧。EvansEvans有两种运行模式:REPL和CLI。比起其他gRPC客户端,Evans更具有表现力,并且它还支持自动补全功能。Evans的安装非常方便,在Mac上我们只需要执行以下两行命令即可。我们来学习一下REPL模式。首先我们需要有一个pb文件,假设你的文件在api/api.proto,我们只需要这样:默认地址为127.0.0.1:50051,当然你可以通过--host和--port来指定服务器。上图的命令:showpackage读取pb包名,showservice显示对应服务列表。callxxx调用gRPC服务...........更多命令可自行查阅官网。除了上述这种直接引入pb文件外,我们还可以通过gRPC反射包(reflection),将grpc.Server注册到反射服务中。这样的话,就可以通过reflection提供的反射服务查询到对应的gR

  • 可视化数据同步迁移工具 CloudCanal

    CloudCanal是一款数据迁移同步工具,提供友好的可视化操作界面,支持多种数据源间的数据迁移、数据同步、结构迁移、数据校验。CloudCanal核心团队成员来自阿里巴巴中间件和数据库团队,长期从事分布式数据库、数据库中间件、应用中间件工作。CloudCanal在MySQLbinlog解析使用了Canal部分代码,其他均为自主研发,并且对Canal部分代码进行了大量重构,修复诸多问题并优化性能。Canal在CloudCanal中的位置,可以用以下图片简单表示,可见Canal代码在CloudCanal产品中只占很小一部分。CloudCanal高可用部署准备工作安装Docker不同操作系统可以参考Docker官网文档进行安装。安装DockerCompose这里提供一个国内的镜像站的安装命令,也可以参考Docker-Compose安装文档。curl-Lhttps://get.daocloud.io/docker/compose/releases/download/1.28.5/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/dock

  • 腾讯云联合浪潮发布白皮书, 助力大规模数据中心高效稳定运行

    7月27日,在第三届OCPChinaDay大会上,腾讯云联合浪潮发布《数据中心服务器智能故障诊断TIFDS(Tencent&InspurFaultDiagnosisSystem)系统技术白皮书》,其中腾讯云与浪潮联合研发的TIFDS系统架构,为大规模数据中心提升服务器运维效率,保障数据中心稳定运行提供重要参考。以腾讯云数百万服务器运营数据和浪潮深厚的固件研发专家经验库为基础,“TIFDS”系统可利用AI技术对海量服务器运行数据实时分析,对各类部件故障实时预警,故障诊断“火眼金睛”,故障自动明确化率提升至95%以上,远超业界平均水平。大规模数据中心服务器猛增人力运维接近极限伴随着互联网企业的崛起,云计算市场已走过十多年的时间,据Gartner数据统计,2020年全球云计算市场快速增长,增速超过40%,中国云计算市场也持续两位数增长,市场增长动能逐渐从泛互联网向产业化快速渗透,增长持续加速。云计算的快速扩张带来了数据中心服务器数量的爆发式增长,传统的服务器故障运营面临着更大的挑战和更高的成本,从最初的脚本运维、工具运维到平台运维,人力已接近极限,逐渐无法满足快速修复故障以及恢复业务

  • 类型即正义:TypeScript 从入门到实践(一)

    作者:一只图雀 原创不易,❤️点赞+评论+收藏❤️三连,鼓励作者写出更好的教程。源起JavaScript已经占领了世界上的每一个角落,能访问网页的地方,基本上就有JavaScript在运作,然而JavaScript因为其动态、弱类型、解释型语言的特性、出错的调用栈隐蔽,使得开发者不仅在调试错误上花费大把时间,在团队协作开发时理解队友编写代码也极其困难。TypeScript的出现极大的解决了上面的问题,TypeScript--一个JavaScript的超集,它作为一门编译型语言,提供了对类型系统和最新ES语法的支持,使得我们可以在享受使用ES最新语法的编写代码的同时,还能在写代码的过程中就规避很多潜在的语法、语义错误;并且其提供的类型系统使得我们可以在团队协作编写代码时可以很容易的了解队友代码的含义:输入和输出,大大提高了团队协作编写大型业务应用的效率。在现代JavaScript世界中,已经有很多大型库在使用TypeScript重构,包括前端三大框架:React、Vue、Angular,还有知名的组件库antd,material,在很多公司内部的大型业务应用也在用TypeScript开发

  • 支付宝手机曝光!三折叠屏,AI防诈骗,摄像头藏屏下,被偷还能自动归还

    郭一璞假装发自杭州 量子位报道|公众号QbitAI三折叠屏,屏下摄像头,支付宝旗下首款防骗手机“休想骗我”今天发布。除了前无古人的外形,这台手机的智能程度也非比寻常,只要摄像头对准一件物体,就能帮你辨别真伪,溯源产地,甚至还能通过气味分辨食材品种,区分优劣。接电话的时候还能帮你自动发现骗子,举报骗子,或者直接忽悠回去。如果你觉得这么高端的手机一定很贵,万一丢了会心疼死,别怕,它还附带防盗功能,一旦被偷就可以结合周边环境进行计算和推理,想方设法回到主人身边。这到底是什么神仙手机啊?三折真全屏支付宝这款手机的外观是它第一个吸引人的点,三折叠屏,有效的缩小了手机的体积,7.5英寸大屏在三折之后,平面面积缩小到只有一张信用卡那么大。而且,与以往全面屏手机的刘海屏、水滴屏、宽下巴不同,支付宝防骗手机将摄像头藏在了屏幕之下,采用高透光屏幕,通过屏下camera+AI图像算法,消除了因两类结构互相作用而带来的图像畸变效果,高度还原图像。通过与某友商对比可以看出,支付宝防骗手机的图像算法还原度超过了99.86%,肉眼几乎无法看出差别,并且可以实现更为自然流畅的背景虚化、瘦脸美颜、电子防抖功能。可以说,

  • TortoiseSVN使用简介

    1 安装及下载client端 2 什么是SVN(Subversion)? 3 为甚么要用SVN? 4 怎么样在Windows下面建立SVNRepository? 5 建立一个Working目录 6 新增档案及目录到Repository中 7 更新档案及目录 8 更新至特定版本 9 复制档案及目录 10 制作Tag或是Release 11 快速参考 11.1 取得(Checkout)Repository 11.2 更新(Update)档案或目录 11.3 新增(Add)档案或目录 11.4 提交(Commit)修改过的档案或目录 11.5 Copy/Tag/Branch/Release档案或目录安装及下载client端 下载Windows端程序:http://tortoisesvn.net/downloads。一般而言,如果是32-bit的WindowsXP应该使用TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi这个档案。如果是64-bit的操作系统,则应该使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi这个档案。

  • VM环境下Linux虚拟机扩展存储空间操作方法总结

    用VMwareware虚拟机安装的Linux系统剩余空间不足,造成软件无法正常安装。如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置。一、空间扩展 (1)打开VMware,选择EditVirtualmachesettings,Utilities下拉框中找到Expand如下图(2)将磁盘空间扩大到50G,点击Expand即可,随后进入一个较长的Expand过程,完成后这是新的空间已经增加,但linux环境下还不可见。(3)启动VMware环境下的Linux操作系统,添加新分区,需要root账号身份。二、磁盘挂载 3.1【fdisk-l】最大分区为/dev/sda3,说明新创建的分区将会是sda43.2输入【fdisk/dev/sda】3.2.1命令行提示下输入【m】3.2.2输入命令【n】添加新分区。3.2.3输入命令【p】创建主分区。3.2.4输入【回车】,选择默认大小,这样不浪费空间3.2.5输入【回车】,选择默认的startcylinder。3.2.6输入【w】,保持修改3.3输入【reboot】重启linux,必须reboot,否则/dev/sda4无法格式化。3.4这

  • StackNavigator in react-navigation 如何动态修改导航标题 headerLeft headerRight headerTitle 等

    StackNavigatorinreact-navigation如何动态修改导航标题headerLeftheaderRightheaderTitle等在StackNavigator控制下的所有界面均可以通过this.props.navigation获取到当前导航对象当前导航对象下有我们常用的几个方法例如:const{navigate,state,setParams}=this.props.navigation;复制本文章主要说明一下如何更改导航中的headerLeftheaderRightheaderTitle等1.首先稍微回忆一下如何设置当前界面的导航配置(headerLeftheaderRightheaderTitle等)staticnavigationOptions=({navigation})=>{ return{ headerTitle:'个人信息', headerLeft:null, headerRight:null, gesturesEnabled:false, }};复制2.更改导航配置通过上面代码可以看到setParams它是一个func回想

  • ICML 2018 | 第四范式联合港科大提出样本自适应在线卷积稀疏编码

    机器之心发布 机器之心编辑部 在瑞典斯德哥尔摩国际会展中心举行的国际机器学习大会(ICML)受到全世界科技界的关注。来自国内人工智能企业队代表第四范式的姚权铭与来自中国香港科技大学的研究者提出的「OnlineConvolutionalSparseCodingwithSample-DependentDictionary:样本自适应的在线卷积稀疏编码」入选ICML2018。 论文链接:http://proceedings.mlr.press/v80/wang18k.html 随着卷积神经网络(CNN)在图像识别的效果越来越好,CNN越来越受AI学者的青睐,越来越多的应用也开始尝试采用CNN方法,但是,随着对CNN的尝试和研究的深入,它的不可解释性以及实验的不可复制重复的问题变的越来越严重,相比与处理图像分类问题的CNN,卷积稀疏编码(CSC)是一个线性卷积的无监督的学习的方法。CSC模型更简单,更直观容易分析理解。因此,最近一些机器学习&机器视觉大牛(e.g.MichaelElad-稀疏编码的创始人之一)开始尝试着用CSC解决应用问题和理解CNN,在应用层面上,医疗/生物图片数据,

  • iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

      在公司做项目一直使用Storyboard,虽然有时会遇到团队合作的Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算的。在之前的博客中也提到过,团队合作使用Storyboard时,避免冲突有效的解决方法是负责UI开发的同事最好每人维护一个Storyboard,公用的组件使用轻量级的xib或者纯代码来实现。这样不但提高了开发效率,而且可以有效的避免Storyboard的冲突。如果每个人维护一个Storyboard,遇到冲突了就以你自己的为准就OK了。  言归正传,接下来就介绍一下如何使用Storyboard来预览UI在不同那个分辨率屏幕上的运行效果,这就很好的避免了每次调整约束都要Run一下才能看到不同平面上运行的效果,今天的博客就来详述一下如何使用Storyboard来进行Preview运行效果。接下来就一步一步的来看一下如何进行效果的预览。  一、创建工程添加测试使用的UIImageView    创建一个测试工程,在ViewController上添加4个不同尺寸的UIImageView,并且添加上不同的约束,最后添加上不同的文艺小清新的图片,最终

  • JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎

    上篇博客我们聊了《JavaEE开发之SpringBoot工程的创建、运行与配置》,从上篇博客的内容我们不难看出SpringBoot的便捷。本篇博客我们继续在上篇博客的基础上来看一下SpringBoot是如何引入和使用MyBatis和Thymeleaf的。在之前的博客中我们提到过Hibernate,今天博客所引入的Mybatis所扮演的角色与Hibernate类似,都是一套ORM框架,主要负责持久化的,也是将数据库中的数据直接映射为Model的框架。 而Thymeleaf就是一个模板引擎了,与之前我们聊得PHP中的Smarty模板引擎类似。如果你们的Web工程是前后端分离的,那么就用不着Thymeleaf等模板引擎了。本篇博客要做的事情就是在SpringBoot工程中引入MyBatis,然后通过MyBatis所提供的映射方法以及注解来读取数据库中的信息。然后使用Thymeleaf模板在前端进行数据的展示。 我们之前在聊Swift开发服务端的内容,也就是Perfect框架时,用到了MySQL相关的东西。本篇博客我们就使用Perfect框架之前所操作的数据库就行了。关于Swift的Perfe

  • 验证:java 主线程在子线程结束后才会结束

    packagecom.idealisan.test; /** *Helloworld! * */ publicclassApp { publicstaticvoidmain(String[]args) { System.out.println("a"); Runnablet=newRunnable(){ publicvoidrun(){ System.out.println("aa"); try{ System.out.println(Thread.activeCount()); Thread.sleep(10000); System.out.println(Thread.activeCount()); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } System.out.println("bb"); } }; newThread(t).start(); System.out.println("b"); Thread.currentThread().stop

  • HTTPS单项验证、双向验证原理图

    一、Http HyperTextTransferProtocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。   使用TCP端口为:80   二、Https HyperTextTransferProtocoloverSecureSocketLayer,安全的超文本传输协议,网景公式设计了SSL(SecureSocketsLayer)协议用于对Http协议传输的数据进行加密,保证会话过程中的安全性。   使用TCP端口默认为443   三、SSL协议加密方式 SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。 对称加密 速度高,可加密内容较大,用来加密会话过程中的消息   公钥加密 加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥   四、单向认证 Https在建立

  • [BZOJ1455]罗马游戏(左偏树)

    用并查集和左偏树维护士兵的关系 Code #include<cstdio> #include<algorithm> #defineN1000010 usingnamespacestd; intn,m,fa[N]; boolgg[N]; intFind(intx){returnx==fa[x]?x:fa[x]=Find(fa[x]);} namespaceLt{ intl[N],r[N],v[N],d[N]; intmerge(intx,inty){ if(!x||!y)returnx+y; if(v[x]>v[y])swap(x,y); r[x]=merge(r[x],y); if(d[r[x]]>d[l[x]])swap(l[x],r[x]); d[x]=d[r[x]]+1; returnx; } inlineinttp(intx){returnv[x];} inlinevoidpop(intx){ fa[x]=merge(l[x],r[x]); fa[fa[x]]=fa[x]; } } inli

  • Improving gene annotation of peanut genome by integrated proteogenomics workflow(通过整合的蛋白质组学工作流程改善花生基因组的基因注释)解读人:卜繁宇

    期刊名:J.ProteomeRes. 发表时间:2020年5月 IF:3.86 单位:广东省农业科学院 物种:花生 技术:蛋白质基因组学   一、概述:) 本研究采用蛋白质基因组学策略,整合花生多个组织(种子、壳、雌蕊柄)的RNA-Seq和蛋白质组学数据,以改善花生的基因注释。最终,在蛋白水平上发现了13767个带注释的基因、35个经过修正的基因注释和7个新的蛋白质编码基因。   二、研究背景: 花生是热带半干旱和亚热带的重要农作物。为了更好地了解花生的分子基础,获得高质量的基因组注释是至关重要的。由于已经对花生基因组进行了测序,因此通过整合基因预测算法、cDNA序列和比较基因组,对花生进行基因注释。但目前的基因注释还不完整。因此,本文旨在通过蛋白质基因组学的方法,整合基因组、转录组和蛋白质组数据,提高花生基因组的基因注释。   三、实验设计:         四、研究成果: 1、新肽的鉴定 本研究中蛋白质基因组工作流程的概述如图1所示。 自定义蛋白质数据库包括三组不同的蛋白质序列:(1)已知的NCBI蛋白序列(10

  • springboot、intellij与docker的结合

    docker部署比jenkins更适合大部分小型项目的快速迭代开发   快!springboot快速搭建开发框架 快!mavenpackage打包jar包, 快!服务器安装dockerhub,docker运行应用 快!intellijdocker插件快速发布images通过dockerFile发布容器

  • phpstorm 支持 ThinkPHP 框架的方法

    在网上找了好久,各种推荐和设置,都没什么用,最后决定到phpstrom插件库里面搜一下,还真找到了。 1.进入File-Setting-Plugins,搜索ThinkPHP关键字,提示说没有完全符合的; 2.仔细观察后,下面有一个类似的,即Thinkstorm,点开看一下注释,支持D()和M()方法... 3.安装后测试,随便试了几个用法,还不错。  

  • JavaScript权威指南--Javascript子集和扩展

    知识要点 本章讨论javascript的子集和超集,其中子集的定义大部分处于安全考虑。只有使用这门语言的一个安全的子集编写脚本,才能让代码执行的更安全、更稳定。比如如何更安全地执行一段由不可信第三方提供的广告代码。 我们在本章对它们作必要的讲述是基于几点考虑: 它们的确很强大 它们有可能在未来成为标准 它们可用来写Firefox扩展插件 它们可用在服务器端的JavaScript编程 在简单介绍JavaScript语言的子集之后,本章后面会开始介绍语言的扩展部分。由于这些扩展毕竟不是标准,因此这里只是一个指南形式的描述。 1.javascript的子集 大多数语句都支持他们的子集,用以安全的执行不可信的第三方代码。这里有一个很有趣的子集,定义这个子集的原因有些特殊。我们首先来看这个有趣的子集,然后再讨论安全的语言子集。 1.1.精华 DouglasCrockford曾经写过一本很薄的书《JavaScript:Thegoodparts》(O'reily出版社)专门介绍JavaScript中值得发扬光大的精华部分。这个语言子集的目标是简化这门语言,规避掉语言中的怪癖、缺陷部分,使编程更

  • Spark Streaming简介

    离线计算和实时计算对比 1)数据来源 离线:HDFS历史数据数据量比较大 实时:消息队列(Kafka),实时新增/修改记录过来的某一笔数据 2)处理过程 离线:MapReduce:map+reduce 实时:Spark(DStream/SS) 3)处理速度 离线:慢 实时:快速 4)进程 离线:启动+销毁 实时:7*24,永不停止的 实时流处理框架对比 1)ApacheStorm http://storm.apache.org opensourcedistributedrealtime 2)ApacheSparkStreaming 微小批次处理,非真正实时 3)IBMStream 4)Yahoo!S4 5)LinkedInKafka kafka.apache.org 6)flink flink.apache.org

相关推荐

推荐阅读