前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >picu后端架构总结

picu后端架构总结

作者头像
radaren
发布于 2018-08-28 06:54:42
发布于 2018-08-28 06:54:42
1.1K0
举报

首先我们项目的定位是一个图片,音频为主体的分享应用,于是服务器对于大资源的存储有了常规数据库,nginx静态资源存储和对象存储服务的选型问题.常规数据库(如mysql)的业务存储不可避免的遇到服务器带宽问题和单点问题.于是我们选择了COS服务进行大对象存储,同时对于生成目录等用户关键信息进行云Redis存储并选择双机备份.项目开发,压测结束Redis只占用了2M内存空间,COS服务+CDN溯源提供了优秀的读写带宽和数据保持.

其次一开始我们两位后台开发同学对于架构的选型的第一目的其实是以”复杂装逼”为先,但是实际搭建过程中发现需要意识到每个组件选型的原因,因为每个组件的选型对于访问压力和安全都有可能有灾难性的错误,在具体架构图的体现上可能是”一粒老鼠屎”.因此我们转而明确我们需要什么样的服务器.阅读往年KM经验总结得到互联网服务器的核心在于可用容灾,简单点说要先解决每个服务的单点问题.举个项目过程中的接口例子:

我们COS的上传服务是客户端先向服务器请求一个临时Token而后利用这个临时Token存储,读取资源.由于COS不能设计给CVM的回调函数,于是基本设计是通过两条请求分离1. 取token和路径, 2. 校验,存Redis数据库当中.在这个流程中一开始我们的单机设计是在本地对于key做一个缓存,然后再确认请求中读取缓存;通过超时删除策略清理缓存池.这样的策略当接入多机时候需要cookie/session保持对单机的服务连接,接入弹性伸缩时候就完全不可用了.因此重构代码,将缓存信息存储到Redis里面,而后读取其中信息.这样配置了服务的开机自启之后就可以有效的进行弹性伸缩的业务可用性保证.总而言之服务器应该作为无状态服务,对于每个请求原子化操作.

进一步服务的解耦是在这次mini项目中理解的部分.对于python的sdk/api/算法实现,我们服务端最初解决的策略有二:

  1. 使用go-python包进行封装调用(如轨迹识别算法调用了opencv,go的opencv很不好用)
  2. hack python版本的sdk,模拟Python服务进行发包(如向cam申请cos的临时秘钥)

相对应的,遇到了以下问题:

  1. 用go-python包python内部业务出错难以定位,文档不全,内部业务更新需要宕机整个业务系统
  2. hack python sdk相当于把接口直接暴露在公网,安全问题和稳定性有待考究

于是我们分离核心模块与算法模块到内部服务器,类似外网负载均衡业务,接入内网负载均衡服务,内网弹性伸缩组通过内网ip调用算法弹性伸缩组,这样golang的代码看起来优雅(没有wrap和hack)许多,也进一步保证了安全性.另外可以对于不同服务设计不同弹性伸缩策略(业务服务设计CPU监控,图像算法服务设计内存监控)来进行伸缩组操作.

另外值得一提有三点:

  1. 备案域名申请https或者申请TLog(CLS)这样的内测服务周期对于mini项目而言压力较大,与具体业务相关性较小,需要尽早开始流程.
  2. AI时代云服务很多组件附带提供了内容安全(如CDN鉴黄,语音SDK敏感词屏蔽),DDOS服务,可以减轻业务模块接入这些服务的压力,也就是说前期SDK功能,调用的调研对于技术选型和设计十分重要.
  3. 镜像服务是一个很不错的免费功能,在这次mini项目中我们要求使用tlinux进行业务部署和实现,其中opencv,golang组件的安装可以短期(1h)租用高性能服务来完成,销毁服务之前花十分钟进行镜像备份就可以新建服务器时候选择自定义镜像定义.另一方面负载均衡,弹性伸缩组的请求对于镜像的更新要求更高;除了设置启动服务之外,我们还可以通过取出单个主机更新代码->制作镜像重启->更新弹性伸缩镜像->分批重装其他服务 这样的流程可以不关闭服务的时候修复代码,上线功能.

反思

  1. 内网模块:当时设计两层服务器模块其实是因为sdk和图像包对于golang友好度很差..虽然hack了golang版本的python cos sdk,但是测试过程中发现及其不稳定,于是换回了原生的python服务.但是内网的模块应该更加微服务,我当时的实现是每台主机flask路由到两个业务(sdk+opencv), 但是这两个模块应该进一步解耦,原因在于sdk交互是需要外网ip的,尽管设置了端口防火墙,但是运维成本比解耦高很多.
  2. 内网CLB: 图像识别和调用外部sdk的网络耗时会使得整个系统的qps变低,应该加入CMQ进行限流削锋.
  3. 云Redis存储: 腾讯云redis不支持跨地,也就是没有云sql的异地容灾.
  4. COS存储: 权限管理由于hack的sdk不稳定,做的不够细致.另外没有考虑利用归档存储做冷热分离.
  5. 监控虽然接入了内测的tlog,但是后期开发量还是很大,包括对于客户端日志的收集,邮件通知服务
  6. (TODO)WNS接入: 对于腾讯云部署的业务是免费的~~
  7. 准备移植小程序,用nodejs做后端试试。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python后端架构演进
来腾讯之前在前公司做了3年的后端开发,经历一款SaaS产品从0到10(还没有到100, 哈哈哈)的过程,3年间后端的架构逐步演变,在微服务的实践过程中遇到的问题也越来越多,在这里总结下。
Java知音
2018/09/29
6.7K0
云计算架构设计6大原则,你遵循了吗?
👆点击“博文视点Broadview”,获取更多书讯 2006年,第一个云计算(Cloud Computing)产品诞生,云计算的概念也被提出,现在云计算几乎已经渗入所有的行业和应用场景中。我们不一定能直接感受到云计算对日常生活、工作、学习的影响,但作为IT基础设施,它却悄然支撑着我们正在使用的各个应用。 在很多书和云服务商的官方文档中都介绍过云计算的概念、发展历史、产品体系,我们不再赘述。我们可以从另一个角度去认识云计算的整体架构和服务能力,也就是云计算架构体系,如图1所示,其中概括了云计算从下到上的组
博文视点Broadview
2022/03/03
1.5K0
云计算架构设计6大原则,你遵循了吗?
2006年,第一个云计算(Cloud Computing)产品诞生,云计算的概念也被提出,现在云计算几乎已经渗入所有的行业和应用场景中。我们不一定能直接感受到云计算对日常生活、工作、学习的影响,但作为IT基础设施,它却悄然支撑着我们正在使用的各个应用。
肉眼品世界
2022/04/19
8020
云计算架构设计6大原则,你遵循了吗?
腾讯云迁移方案常见问题
云计算是一种按需使用、按量付费的服务模式,提供可用的、便捷的、按需的网络访问、可配置的计算资源共享池。其特点包括按需服务、资源池化、弹性扩展、泛网络访问、服务可度量。
用户11390638
2024/12/02
1970
华尔街见闻:基于腾讯云容器服务的微服务架构实践
腾讯云容器服务团队
2017/05/09
3.2K0
技术分享 | 云原生多模型 NoSQL 概述
朱建平,TEG/云架构平台部/块与表格存储中心副总监。08年加入腾讯后,承担过对象存储、键值存储,先后负责过KV存储-TSSD、对象存储-TFS等多个存储平台。 NoSQL 技术和行业背景 NoSQL 是对不同于传统关系型数据库的一个统称,提出 NoSQL 的初衷是针对某些场景简化关系型数据库的设计,更容易水平扩展存储和计算,更侧重于实现高并发、高可用和高伸缩性。 NoSQL vs 关系型数据库 其实早几年大家看两者的区别是清晰的,关系型数据库就是用 SQL 语句操作,具有行列结构和预定义 scheme 的
腾讯云原生
2022/05/23
6670
技术分享 | 云原生多模型 NoSQL 概述
你一定不相信,鹿晗表白后背锅的程序员是我
时间倒回到10月08日,中午吃饭刷着刷着微博发现微博突然挂了。 我一开始以为是家里网不好,后来换了流量刷还是刷不出内容,并且报error,我就知道微博应该是挂了。 往朋友圈一看,原来是鹿晗和关晓彤微博互圈“宣布恋情”了。要不是以前看过《好先生》这部剧没准我还真不认识关晓彤。陆地cp前几天不是还在炒着吗?怎么这么突然?诶..贵圈贼乱啊。 这个时候不同的人就会有如下不同的反应: 老板心里想:哪些家伙在加班又得扣钱了,拿起电话赶快给CTO打了个电话; CTO心里想:这帮家伙叫放假别上线,又乱整,CTO立即联络
小小科
2018/05/03
1.6K0
你一定不相信,鹿晗表白后背锅的程序员是我
Nacos架构与原理 - 总体架构
Nacos 在阿里巴巴起源于 2008 年五彩石项目(完成微服务拆分和业务中台建设),成长于十年双十⼀的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。
小小工匠
2023/07/11
9680
Nacos架构与原理 - 总体架构
基于 Docker 的微服务架构实践
基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的快速发展。本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结。希望给在创业初期探索如何布局服务架构体系的 DevOps,或者想初步了解企业级架构的同学们一些参考。
烂猪皮
2018/08/03
2.6K0
基于 Docker 的微服务架构实践
黄文才:云智天枢AI中台架构及AI在K8S中的实践
2019年9月7日,云+社区(腾讯云官方开发者社区)主办的技术沙龙——AI技术原理与实践,在上海成功举行。现场的5位腾讯云技术专家,在现场与开发者们面对面交流,并深度讲解了腾讯云云智天枢人工智能服务平台、OCR、NLP、机器学习、智能对话平台等多个技术领域背后架构设计理念与实践方法。
腾讯云开发者社区技术沙龙
2019/09/12
4.6K2
黄文才:云智天枢AI中台架构及AI在K8S中的实践
从​开发调试到部署运维 一套完整的Serverless项目开发经验分享
本文将从前端的角度来看Serverless是什么,Serverless的出现会给前端带来什么样的机遇和挑战,并以一个具体的项目为例说明如何基于Serverless实现项目功能。
腾讯云serverless团队
2019/07/16
1.6K0
从​开发调试到部署运维  一套完整的Serverless项目开发经验分享
腾讯云无服务器云函数架构精解
腾讯云serverless团队
2017/04/26
14.6K0
腾讯云无服务器云函数架构精解
作为技术负责人,如何从0搭建公司后端技术栈
有点眼晕,以下只是我们会用到的一些语言的合集,而且只是语言层面的一部分,就整个后台技术栈来说,这只是一个开始,从语言开始,还有很多很多的内容。今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。
程序员小猿
2021/12/15
9670
作为技术负责人,如何从0搭建公司后端技术栈
腾讯云认证云架构工程师考试攻略
腾讯云架构工程师认证的考试经验分享来啦!腾讯云架构工程师认证(TCA)是针对云解决方案架构师基础技能的认证。通过报名备考TCA云架构认证,既可以提升我们的云架构设计以及云业务分析能力,又可以在拿到证书后写进简历增加自己的职场竞争力,可谓是性价比十足。还在等什么?赶快收下这份考试攻略,报名参加吧!
用户6227418
2022/10/31
5.4K0
可扩展和弹性伸缩系统设计
软件系统是可以随着需求变化或者技术变化而不断扩展和迭代的,我们常见的各种软件系统比如操作系统、各种知名开源软件系统都是如此。而在这个过程中,我们如何通过较小的代价去扩展我们的系统,是我们要重点考虑的。
Allen.Wu
2023/02/15
1.9K0
卓伟:腾讯云人脸融合技术构建
4月13日结束的计算机视觉沙龙圆满落幕。本期沙龙从构建图像识别系统的方法切入,讲述腾讯云人脸识别、文字识别、人脸核身等技术能力原理与行业应用,为各位开发者带来了一场人工智能领域的技术开拓实践之旅。下面是卓伟老师关于腾讯云人脸融合技术构建的总结。
腾讯云开发者社区技术沙龙
2019/04/23
4.6K0
卓伟:腾讯云人脸融合技术构建
极光商城服务架构设计
我们先来看看这张图,首先我们可以思考一下,这个架构中,哪些地方可以做负载均衡,来承载更高的 QPS 呢?
Bess Croft
2021/07/23
8760
极光商城服务架构设计
垂直电商架构进化之路
作者:张增、邓良驹,分别为乐视云计算电商云团队负责人,乐视云计算高级开发工程师 来自:高效运维 1. 电商系统发展过程 电商网站在不同时期的架构复杂度有所不同: 初创期:商品类型少,业务复杂度低,系统
架构师小秘圈
2018/04/02
1.9K0
垂直电商架构进化之路
一线工程师宝贵经验:架构的深入思考 From FunData
内容来源:之前作者写了一篇《FunData — 电竞大数据系统架构演进》的文章,传送门:http://t.cn/RdgKWGW 觉得没有深入写出一些深层次的东西。纠结了几个晚上决定重写一篇不一样的文章。本文由IT大咖说(微信id:itdakashuo)整理,经投稿者与嘉宾审阅授权发布。
IT大咖说
2018/07/30
4400
一线工程师宝贵经验:架构的深入思考 From FunData
Java面试考点8之微服务架构
一个项目中的多个服务,混合部署在一个进程内,服务之间的交互都是通过进程内调用完成的,正如图中 Service 之间的红色箭头所示。这样做的好处是可以快速开发、部署服务,服务之间调用的性能也最好。
马拉松程序员
2022/04/26
4090
Java面试考点8之微服务架构
推荐阅读
相关推荐
Python后端架构演进
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文