惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
F
Fortinet All Blogs
J
Java Code Geeks
Last Week in AI
Last Week in AI
美团技术团队
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件

监控宝

100-300 元之间有哪些户外监控推荐? 算命的应该已经开始使用人脸识别了吧。 K8s 监控是真的难做呀,感觉没有啥头绪 求问国内第三方监控平台有哪些? 想给家里整套监控 有奖体验 赢畅销书|体验透视宝业务监控 一眼定位业务故障 [重磅新品]自动发现业务拓扑,精准定位根源问题 邀请体验|从业务拓扑图开始 搞定业务运维 游戏平台运维自动化扩展之故障自愈 不容错过 | 一大波新功能来袭 坑爹双十一零点秒杀背后的 API 性能问题初探 不容错过 | 一大波新功能来袭 大促之前 必先压测--压测宝助您决战双 11 监控宝的销售来一发,我们谈谈企业版的 Api 功能 B 站运维团队成长的血泪史 感受真实性能压测的“洪荒之力” 压测宝有奖体验中 重磅 | 打造云端压力测试产品,准确感知性能瓶颈 互联网金融网站性能排行榜 来一场说聊就聊的压测分享 选择合适的监控指标 确保跨境电商网站业务稳步增长 Hadoop 大数据生态系统及常用组件简介 十大性能监控技巧 全面提升你的应用体验 监控宝新增国内 7 地监控节点,看看有没有覆盖你们的业务地区~ 无压测 不狂欢 压测宝助您决战 618 监控宝经常轰炸我邮箱啊。。 透视宝 H5 性能管理新鲜出炉 免费体验 支付宝付款的时候, 手机闪关灯依旧会亮一下 服务器宕机后自动重启的简化方法 监控宝新增马来西亚等 7 个监控点 文轩在线:如何让 IT 部门成为企业的价值中心
Google 对象描述语言 Jsonnet 应用经验谈
cloudwise · 2016-07-25 · via 监控宝

Jsonnet 是 Google 开源的一门配置语言,用于增强 JSON 暴露出来的短板,它与 JSON 完全兼容并加入了一些新特性,包括注释、引用、算术运算、条件操作符、数组和对象深入、引入函数、局部变量、继承等, Jsonnet 程序被编译为兼容 JSON 的数据格式,简单来说 Jsonnet 就是 JSON 的增强版。
JSON 的应用场景和缺陷
为什么要用 Jsonnet 取代 JSON 呢,就要从 JSON 的功能说起了。 JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,是基于 ECMAScript 的一个子集,采用完全独立于语言的文本格式,同时也使用了类似于 C 语言家族的习惯(包括 C 、 C++、 C#、 Java 、 JavaScript 、 Perl 、 Python 等),由于 JSON 在各语言间支持友好、可读性强、数据性能上相比 xml 有很大优势,所以使 JSON 成为理想的数据交换语言。
JSON 的使用场景主要有三类:
Web 工程师最为熟悉的服务端和 javascript 的数据交换,常见 ajax ;
各语言之间的数据交换,通常以 Webservice 的形式出现,常见的范式如 jsonrpc, 和 restful ;
应用的配置文件,很多应用采用 json 作为配置文件,比如前端 bower.-> bower.json. node.js 的包管理器 package.json , PHP 的包管理器 composer.json 。
但是在用 JSON 做数据交换和配置文件时, 也会遇到很多问题:
不能加注释;
对象或数组最后一项后面不能有逗号;
不支持变量、函数;
不能用算术和逻辑运算;
不能划分,不能复用,各个 json 文件之间彼此孤立;
语法有些时候不太友好;
key 必须要加双引号;
value 是字符串时,不能用单引号。
JSONNET 的优势和应用
JSONNET 的一些特性间接弥补了 JSON 的先天不足:
key 的双引号不是必须的;
对象和数组最后一个属性后面可以有逗号;
支持单行或多行注释;
https://i.v2ex.co/CojsTu32l.png
引用
self: 当前对象
$:根对象
https://i.v2ex.co/2Wi75stJl.png
操作数据,支持常用的算术与逻辑运算符
+: 数组(拼接)、字符串(连结)、对象(溶化)
https://i.v2ex.co/QqUv97q2l.png
数组和对象深入
https://i.v2ex.co/dgqMJN38l.png
模块化
项目配置文件过大或数据文件过大,需要拆分,通过 import 引入
https://i.v2ex.co/pwoELP75l.png
函数与变量
https://i.v2ex.co/s812G5Jwl.png
面向对象--继承
{supper2} + {supper1} + {self}
https://i.v2ex.co/BK3cniPvl.png
通过上面特性,我们可以发现 JSONNET 使 JSON 拥有了语言的特性:
优点
有注释,和后端开发协商接口很方便,模拟数据的文件可以直接作为接口文档
制造模拟数据更加高效自然
数据文件的可以切分和复用
缺点
Web 场景下不能作为直接的数据交换格式
学术型代码, 比较小众
使用场景不多
标准库不够完善,存留的 issue 较多
比如排序问题
不支持 IO 操作,不具备替代脚本语言的可能性
使 JSON 变得更为复杂
JSONNET 提供内置的标准库(官网地址: http://jsonnet.org/docs/stdlib.html ),包括了一系列对象,字符串, BASE64 的标准库,大家有兴趣可以自行下载。
目前 JSONNET 的主要应用场景还是用来组织和生成 JSON 数据:
有生成大批量 JSON 文件的需求
作为 JSON 的模板引擎
接口测试中模拟数据接口,通过 JSONNET 文件生成动态的 JSON 数据
JSONNET 在透视宝的应用场景
最后介绍一下 JSONNET 在透视宝中的应用场景,透视宝在做数据呈现时主要依赖于后端的 ElasticSearch 构建的检索服务, ElasticSearch 对外提供一组 Webservice 作为数据 API 接口,数据交换格式是 JSON 。
ElasticSearch 官方的 QUERY DSL 代码,相比透视宝实际需求的查询语法并不复杂,但是我们前端在构建这个请求时却不太方便,往往要通过拼接数组的方式将 JSON 序列化来构建这个 QUERY 。针对这种情况可以将语法抽象,用 oo 去构建这样的语法,借助 elastica ( elastic search 的一个客户端)实现。但是在代码调试中发现,为了构建一个 json 的查询,我们的程序员在这上面浪费了大量时间,因为要进行大量的语法对照翻译,既不直观,也影响效率。最后我们借助 JSONNET 生成 JSON 文件,将每个查询制作为模板固化下来,复用性大大增加,这种方法在实际工作中效率很高,更加直观:
JSON 模板引擎
透视宝前端 es query 查询
模拟数据接口,通过 JSONET 动态生成 JSON 数据
大数据场景
数据自行解释
数据压缩
注: PHP 的 JSONNET 实现是由云智慧的 Neeke 完成: http://pecl.php.net/package/jsonnet ,
大家可以参考源码学习一下。
https://i.v2ex.co/UnaJ1s1Ab.jpeg