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