赞
踩
关于作者:许飞锋,资深软件工程师,参与公司多个核心产品的设计与开发,对中间件相关技术及组件研究较多,对仓颉语言特性及神农框架理解较深入。
01
关于OBS仓颉版客户端
1.1 组件定位
对象存储服务软件开发工具包(OBS SDK,Object Storage Service Software Development Kit)是对OBS服务提供的REST API进行的封装,以简化用户的开发工作。用户直接调用OBS SDK提供的接口函数即可实现使用OBS服务业务能力的目的。
项目开源地址:https://gitcode.com/Cangjie-TPC/oss-sdk/overview
1.2 关键特性
生命周期管理
图片处理特性
并行文件系统的权限配置
在线解压
桶策略列表呈现方式优化
CDN自动刷新
支持镜像回源
持为对象设置WORM策略
服务端加密,支持SSE-OBS,SM4服务端加密方式
02
总体设计
2.1 接口层
提供了一个统一的访问入口,所有的请求都通过这一层进入OBS客户端
2.2 服务层
客户端加密模块:在本地进行数据加密,将加密后结果发送至OBS服务器,同时将加密方法与解密所需的必要辅助信息存储到对象元数据中。在下载时OBS SDK会依据存储在对象元数据中的解密辅助信息进行数据解密,直接返回解密后结果。
大文件分段模块:对于较大文件上传,可以切分成段上传,从而提高吞吐量
传输进度模块:设置数据传输接口来获取上传下载的进度
2.3 解析层
请求数据处理:根据接口入参组装成服务端所需数据结构
报文解析模块:解析服务端返回的报文,整理映射数据返回给应用
2.4 通信层
创建HTTP连接服务端,发送请求报文和收取响应报文
2.5 OBS客户端处理流程
1. 应用通过调用obs sdk接口访问client模块
2. 将接口入参通过requestHandler进行数据组装,请求体报文拼接完成后通过action模块发送给服务端
3. 服务端处理完成,返回报文经由responseHandler解析映射成数据结构通过client传递给应用
03
OBS仓颉版客户端使用
3.1 桶创建
OBS桶是对象的容器,上传的文件都将以对象的形式存放在桶中
3.2 对象上传
用户操作的基本数据单元是对象。OBS cangjie SDK提供对象上传接口
3.3 范围下载
下载对象的其中一部分数据,可以使用范围下载,下载指定范围的数据
04
性能测试
4.1 测试环境
操作系统:Debian GNU/Linux
版本:6.1.0-17-amd64
压测工具:apifox
压测条件:30个并发、持续3分钟
4.2 测试目的
本测试是验证在Java和仓颉,接口进行压力测试,以验证其在高并发请求下的稳定性、性能和响应时间。通过模拟大量用户同时访问接口的场景,测试其处理能力、资源消耗及异常处理能力。
4.3 测试指标
1. 并发请求数:模拟不同数量的并发请求,观察接口的响应情况。
2. 响应时间:记录接口在不同并发请求数下的平均响应时间、最大响应时间和最小响应时间。
3. 错误率:统计接口A在测试过程中的错误请求数,计算错误率。
4. 每秒接口请求数:每秒接口请求数是指在单位时间(秒)内,接口能够成功处理的请求数量。反映了接口的吞吐能力和处理速度。
5. 平均响应时间:平均响应时间是指所有请求从发送到接收响应所花费的平均时间。反映了接口处理请求的效率和用户等待时间。
4.4 测试用例
创建桶
验证创建桶接口的响应速度:测试接口响应时间,确保在可接受范围内,满足性能要求。
JAVA性能测试
测试用例
性能列表
总请求数 | 平均响应时间 | 每秒接口请求数 | 并发数 | 持续时间 | 最小响应时间 | 最大响应时间 |
3139 | 487ms | 16.62ms | 30 | 3分钟 | 162ms | 8169ms |
详情结果图
仓颉性能测试
测试用例
性能列表
总请求数 | 平均响应时间 | 每秒接口请求数 | 并发数 | 持续时间 | 最小响应时间 | 最大响应时间 |
3810 | 260ms | 20.51ms | 30 | 3分钟 | 121ms | 3381ms |
详细结果图
测试结果分析
总请求数
Java接口:3139次
仓颉接口:3810次
分析:Java接口与仓颉接口的总请求数相差接近七百,测试期间两种接口的请求量仓颉处理更多。
平均响应时间
Java接口:487ms
仓颉接口:260ms
分析:仓颉接口的平均响应时间略低于java接口,仓颉接口的整体响应速度更快。
每秒接口请求数
Java接口:16.62次/秒
仓颉接口:20.51次/秒
分析:两种接口在每秒接口请求数上相差不大,处理并发请求时的能力相近。
最小响应时间
Java接口:162ms
仓颉接口:121ms
分析:仓颉接口的最小响应时间明显低于Java接口,仓颉接口的响应速度更快。
最大响应时间
Java接口:8169ms
仓颉接口:3381ms
分析:仓颉接口的最大响应时间远低于java接口,仓颉接口在处理复杂或异常情况时的性能更稳定。
测试总结
通过本次测试对比,我们可以得出以下结论:
在每秒接口请求数方面,Java接口与仓颉接口表现相近,说明它们在处理并发请求时具 有相近的能力。
在平均响应时间方面,仓颉接口略优于java接口,整体响应速度更快。
在最小响应时间方面,仓颉接口表现出色。
下载桶中文件
从桶中正确下载文件。测试下载文件的速度,评估下载性能。测试并发下载文件时的性 能表现。
JAVA性能测试
性能列表
总请求数 | 平均响应时间 | 每秒接口请求数 | 并发数 | 持续时间 | 最小响应时间 | 最大响应时间 |
3591 | 179ms | 18.93 | 30 | 3分钟 | 63 | 10526 |
详细结果图
仓颉性能测试
性能列表
总请求数 | 平均响应时间 | 每秒接口请求数 | 并发数 | 持续时间 | 最小响应时间 | 最大响应时间 |
4190 | 121ms | 22.47 | 20 | 3分钟 | 61 | 1585 |
详细结果图
测试结果分析
总请求数
Java接口:3593次
仓颉接口:4190次
分析:Java接口与仓颉接口的总请求数相差接近六百,测试期间两种接口的请求量仓颉处理更多。
平均响应时间
Java接口:179ms
仓颉接口:121ms
分析:仓颉接口的平均响应时间略低于java接口,仓颉接口的整体响应速度更快。
每秒接口请求数
Java接口:18.93/秒
仓颉接口:22.47 次/秒
分析:两种接口在每秒接口请求数上相差不大,处理并发请求时的能力相近。
最小响应时间
Java接口:63ms
仓颉接口:61ms
分析:仓颉接口的最小响应时间略低于Java接口,仓颉接口的响应速度更快。
最大响应时间
Java接口:10526ms
仓颉接口:1585ms
分析:仓颉接口的最大响应时间远低于java接口,仓颉接口在处理复杂或异常情况时的性能更稳定。
测试总结
通过本次测试对比,我们可以得出以下结论:
在每秒接口请求数方面,Java接口与仓颉接口表现相近,说明它们在处理并发请求时具有相近的能力。
在平均响应时间方面,仓颉接口略优于java接口,整体响应速度更快。桶创建接口平均响应时间缩小46.8%,下载桶中文件接口平均响应时间缩小32.4%。
在最小响应时间方面,仓颉接口表现出色,
仓颉系统在性能测试中表现出较高的性能优势,尤其在处理请求的速度和高并发场景下表现更佳。
05
共建仓颉生态
基于仓颉语言完备的产品文档和先进的开发工具链,我们团队迅速完成了OBS仓颉版客户端的开发和测试工作,达到了Java语言OBS客户端的同等能力。通过此次为社区贡献OBS仓颉版客户端的探索与实践,我们深刻体会到了仓颉编程语言的多重优势:
1.拥有现代编程语言的核心特性,如类型推断、自动内存管理以及元编程等,使得编程更加高效和灵活。
2.强大的运行时安全性,从根本上消除了空指针的隐患,保障了代码的稳健性。
3.易于扩展,仓颉的扩展功能(Extensions)允许为现有类添加新功能,无需继承或使用装饰模式,使代码简洁、易读,且维护性更好。
4.支持轻量级线程模型,多线程高IO场景具有较好的性能表现。
5.内置单元测试支持,易于开发高效稳定的代码。
6.内置诊断工具,极大地方便了性能优化和问题排查。
仓颉生态的持续发展仍需我们共同努力,我们诚挚地呼吁更多的开发者加入仓颉社区,共同为仓颉生态的建设贡献自己的力量。
06
关于团队
我们是普元信息技术股份有限公司中间件系列产品的开发团队。普元信息技术股份有限公司(科创板股票代码:688118)是全栈式中间件领导者,领先的数据治理和低代码技术提供商。
普元始终致力于变革企业软件的生产方式,结合中间件、数据资产管理、低代码核心产品与技术能力,针对用户在数字化转型背景下,对于数据管理运营、应用开发集成、业务融合创新等技术基座的建设要求,服务金融、政务、军工、能源、运营商、先进制造业等诸多关键行业,助力客户加快数字化建设进程。计世资讯发布的《中国中间件市场发展研究报告》显示,普元信息在新兴中间件领域产品技术、市场及战略“双能力”第一。
普元信息积极拥抱仓颉语言。普元信息中间件系列产品,包括分布式配置中心,S3,OBS等组件均全面融入仓颉语言生态,提供了仓颉语言客户端支持。简化了企业级应用向仓颉开发环境的迁移流程,不仅让企业能够充分利用仓颉语言的高效、安全及灵活性,还促进了现有中间件架构与仓颉语言环境的无缝融合与效能提升,为企业数字化转型注入了新的活力。
结语
仓颉编程语言是一个支持高效、安全、全场景应用开发的现代编程语言,具有强安全、高性能、高效率、全场景等特点。Cangjie-TPC(Third Party Components)用于汇集基于仓颉编程语言开发的开源三方库,帮助开发者方便、快捷、高质量构建仓颉程序。
仓颉生态的持续发展仍需我们共同努力,我们诚挚地呼吁更多的开发者加入仓颉社区,共同为仓颉生态的建设贡献自己的力量。普元将携手华为持续为仓颉社区贡献力量。
扫一扫,使用和参与仓颉社区生态共建
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。