Flomesh 发布 Pipy 0.50.0
好久不见,Pipy 一直未停止更新的脚步。在上个版本发布的三个月后,我们迎来了 Pipy 的重大更新:0.50.0。这次更新包括了性能提升、HTTP2 & gRPC 等更多协议支持、漏洞修复,同时增加更多的过滤器来提升 PipyJS 的编码效率和脚本可读性。
Pipy 新增的众多功能,将在我们即将发布的边缘服务网格产品中有所体现,敬请期待。
后续,我们也会针对本次更新的内容更新教程。
核心
管道
用于读取文件(或者标准输入)的新管道类型
添加管道生命周期回调 onStart()/onEnd()
入站和出站的连接支持空闲超时
套接字读取性能优化
Metrics
Repo 节点从连接的工作节点采集指标
采集到指标在 repo 节点最多可保留 5 分钟,用于在管理界面中进行图表展示
Prometheus 从 repo 节点拉取指标,并使用 gizp 对数据进行压缩
添加新的指标用于记录入站/出站数据和连接时间
Logging
工作节点将准实时的日志流发送到 repo 节点
代码库
通过 WebSocket 将代码库更新通知到工作节点来立即加载脚本
代码库支持删除操作
PipyJS
加入匿名子管道的嵌套语法
添加 pipy.resolve() 来执行外部文件中的脚本
添加 -e 选项来执行命令行中的 PipyJS 脚本
函数参数支持默认值
字符串的长度提高到 256MB
优化对象字面量构造的性能
协议
HTTP/2 & gRPC
支持除了服务器推送外的所有 HTTP/2 规范
扩展 demuxHTTP()/muxHTTP() 来支持 HTTP/2 协议协商
HTTP/1.x
HTTP 消息增加 Trailer 消息头支持
修正 HTTP 状态码 100 的处理
通过 detectProtocol() 过滤器探测 HTTP/1 流量
提升 HTTP/1.x 解码性能
MQTT
通过引入 input()/output() 过滤器为 MQTT 及类似的协议增加新的管道通信模型
标准一致性错误修复
WebSocket
支持 WebSocket 的编解码
使用 WebSocket 作为 repo 节点和工作节点的通信渠道
UDP
增加 UDP 监听器
TLS
为 acceptTLS()/connectTLS() 过滤器加入 ALPN 的支持
OpenSSL 版本升级到 1.1.1o
API
用于通用日志记录的新 API
使用 algo.Qutota 来替换原本节流过滤器使用的 “accounts”
添加 Data.shiftWhile() 和 shiftTo() 用于在 PipyJS 中做简单的数据格式解析
添加 LoadBalancer.next() 提供内建的连接池
添加 algo.uuid() 用于生成 UUIDv4
提升 JSON.encode() 的性能
过滤器
新过滤器 branch() 支持条件判断的内嵌匿名子管道
新过滤器 depositMessage() 可将大消息缓冲到临时文件
新过滤器 deframe() 用于通过 PipyJS 进行通用协议的解帧
新过滤器 compressMessage() 用于 deflate/gzip 压缩
新过滤器 decodeMultipart() 用于将 MIME 多部分消息解码为多条消息
所有的复用过滤器支持设置队列的最大值
decompressMessage() 过滤器支持 Brotli 算法
tee() 过滤器支持写数据到标准输出
wait() 过滤器支持超时设置
版权声明: 本文为 InfoQ 作者【Flomesh】的原创文章。
原文链接:【http://xie.infoq.cn/article/eafc88bba0c8b87a013dabdc1】。文章转载请联系作者。
评论