云开发系统架构设计
Posted 腾讯云云开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云开发系统架构设计相关的知识,希望对你有一定的参考价值。
导语
云开发的系统架构究竟是如何设计的?开发团队是怎样保证其安全性?云开发的强劲性能又是源于何处?本文为你一一解答。
10月19日,在首届「小程序 ·云开发」技术峰会上,微信小程序团队的周榕彬从系统架构、安全性与性能三个方面深入解析了云开发的架构设计。
▌云开发简介
▌云开发的系统架构
云开发的系统架构大致分为三部分,分别是终端层、接入层和资源层。
终端层开发者工具提供了完善的开发测试和运营的能力,可以满足大部分开发者的需求,HTTP API则提供了在小程序外访问开发资源的能力,使用HTTP API,开发者可以在已有服务器上访问云开发资源,实现与云开发的互通。
接入层
资源层
容灾架构
云开发的运维保障体系中,自动化测试保障了云开发系统的稳定,而多维度的监控告警可以帮助我们实时发现系统的波动和异常。借助云开发的云资源和管理调度系统,我们做到了服务自动缩扩容。最后是我们的运维保障团队,7X24小时为云开发用户提供服务。
那么,我们的云开发的稳定性做得怎么样呢?是否适合企业级小程序使用?目前,我们的标杆用户,单个小程序单日调用量超过2亿,我们的大盘业务整体可用率达到了99.99%,远高于 SLA 给出的99.9%,对于大部分小程序来说我们云开发都是非常适合的。
除了加固云开发系统,未来,我们会推出包括云函数灰度发布、自定义告警和全新的日志系统在内的一系列功能,以提高开发者业务的稳定性。
接下来介绍云开发的安全性,云开发通过全链路的票据系统来保证整个请求链路的安全。首先是用户请求从客户端到微信后台这部分,云开发请求借助了微信底层的私有协议和微信后台进行通信,私有协议 mmtls 是微信参考了TLS1.3 草案标准设计和实现的,业务层数据加上 mmtls 后,由 mmtls 提供通信安全。具体做到了防窃听、防篡改、防重放、防伪装。
微信后台收到云开发请求之后会校验身份,并通过全程票据保证数据的安全性。全程票据的核心方案,用户登录后会给客户端下发一个票据,客户端每次请求都会带上票据,请求在后台服务的整个处理链条中,所有对核心数据服务的访问,都会被校验票据是否合法,非法请求会被拒绝,从而保障用户隐私数据只能用户通过自己的客户端发起操作来访问。
基于此处的三个优化,开发者可以享受到:首先是代码的精简,我们创建完容器之后需要下载代码,代码精简会使得下载时间缩减;其次是资源的复用,在云函数里面我们会操作数据库,建立数据库的连接,这些连接如果能够得到复用,也可以缩小云函数的执行时间;另外,优化还有利于公共代码的剥离,我们会对代码做缓存,如果云函数的公共代码剥离开来,这部分的代码就会得到更好的缓存效果;最后则是使云函数保持活跃,以避免函数实例被系统回收。
为了提高云函数的性能,我们也在通信、业务和网络层做了一些优化,比方说我们改造了前面提到的私有协议,优化了长连复用。
最后来说说开发者比较关心的性能问题。今年以来,云函数请求性能提升了60%,我们也在持续做优化,目前在我们的测试环境中,小程序端云函数的请求时间已经降到140毫秒/次。相关的优化我们会在下一个版本中发布,敬请期待。
更多精彩
云开发,不止于「快」
云开发
Tencent CloudBase
点击在看让更多人发现精彩
以上是关于云开发系统架构设计的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)