<div class="content" id="articleContent">
<div class="ad-wrap">
<p><a href="https://my.oschina.net/u/2663968/blog/3061697" style="color:#A00;font-weight:bold;">2019独角兽企业重金招聘Python工程师标准>>> </a> <img alt="hot3.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-cf0d92129138e2c138e143696168013a.png"></p>
</div>
<p>版权声明:本文由腾讯云原创文章,转载请注明出处: <br> 文章原文链接:<a href="https://www.qcloud.com/community/article/196">https://www.qcloud.com/community/article/196</a></p>
<p>来源:腾云阁 <a href="https://www.qcloud.com/community">https://www.qcloud.com/community</a></p>
<p> </p>
<p>产品的整个技术实现架构由Android/iOS APP、业务服务器以及腾讯云服务组成。其中,APP负责和用户进行交互,包含的功能模块有:</p>
<ol><li>注册登录(支持微信、QQ等第三方账号登录)</li><li>拍照/录像</li><li>上传到云(<a href="https://www.qcloud.com/product/cos.html?utm_source=Community&utm_medium=article196&utm_campaign=Community">腾讯云对象存储COS</a>+<a href="https://www.qcloud.com/product/cdn.html?utm_source=Community&utm_medium=article196&utm_campaign=Community">内容分发网络CDN</a>)</li><li>视频播放(本地播放/云端点播)</li><li>语音识别(腾讯云智能语音服务Artificial Audio Intelligence)</li><li>图片处理(腾讯云万象优图的图片处理和智能鉴黄服务)</li></ol>
<p>考虑到我们的业务类型和开发团队的技术基础,我们选用的后台技术架构是Struts+Hibernate+Spring+<a href="https://www.qcloud.com/product/cdb.html?utm_source=Community&utm_medium=article196&utm_campaign=Community">MySql</a>,前端为Android和iOS。</p>
<p>为便于快速开发和可靠扩展,对于关键技术难点——图片、音频、视频等大量非结构化数据的上传、存储和点播,我们采用腾讯云提供的对象存储(COS:Cloud Object Service)和内容分发网络(CDN:Content Delivery Network)作为实现方案。这样,后台的MySql数据库中就只需要存储图片、音频、视频等文件在腾讯云对象存储中的Url,而不必在业务侧维护其数据持久化和容量扩展,同时,内容的分发和访问,也可通过腾讯云CDN来加速,有效降低了服务器端的下载压力。</p>
<p>在公有云产品的价格方面,腾讯云提供了每月50G存储,10G外网访问流量、10G的CDN 回源流量、100 万次读请求和10万次写请求的免费额度,可以满足初创项目的使用需求。同时,腾讯云对象存储还提供了全面的开发者手册和各类编程语言的SDK Demo,可以让开发者快速上手,搭建原型应用。</p>
<p>腾讯云COS的注册、实名认证,以及开通CDN的过程都很简单快捷,可以点击<a href="https://www.qcloud.com/product/cos.html?utm_source=Community&utm_medium=article196&utm_campaign=Community">链接</a>立即使用COS的Web控制台,按照教程“快速上手”完成上述操作。<br> 接下来,新建项目PetUGC,然后在项目中新建bucket存储桶。<br><br> 同时,选择(默认)开通CDN加速。<br><br> 在存储桶gamevideo中新建文件夹whirlpk,用于存放APP上传的“宠物互动视频”。<br> 点击获取API密钥(一定要注意保护自己的密钥不被泄漏,并尽量定期的更换密钥)。<br></p>
<p>对于APP端的“文件上传”功能,腾讯云COS官方提供的SDK已经将分片上传的功能做了封装,开发者只需按照SDK文档调用FileUploadTask函数,即可完成图片、音频、视频等大文件的上传,并且能在对应的回调接口中进行上传成功/失败后的进一步操作,比如更新APP的UI来显示上传进度,或者提示上传成功/失败消息等。下面为代码示例:</p>
<pre class="blockcode"><code>import com.tencent.upload.task.impl.FileUploadTask;
import com.tencent.upload.task.IUploadTaskListener;
/* 若已存在同名的文件: INSERTONLY==false 表示能够上传成功,且会覆盖同名的文件; INSERTONLY==true 则不能成功上传*/
FileUploadTask task = new FileUploadTask(BUCKETNAME, appidFILEPATH, ARGETDIR, ATTRS, INSERTONLY, new IUploadTaskListener(){
@Override
public void onUploadFailed(int arg0, String arg1) {
// TODO Auto-generated method stub
// 上传成功
}
@Override
public void onUploadProgress(long arg0, long arg1) {
// TODO Auto-generated method stub
// 上传进度
}
@Override
public void onUploadStateChange(TaskState arg0) {
// TODO Auto-generated method stub
// 上传状态变化
}
@Override
public void onUploadSucceed(FileInfo arg0) {
// TODO Auto-generated method s |
|