快速了解“云原生”(Cloud Native)和前端开发的技术结合点
欢迎访问网易云社区,了解更多网易技术产品运营经验。
后端视角,结合点就是通过前端流控缓解后端的压力,提升系统响应能力。
从一般意义理解,Cloud Native 是后端应用的事情,要搞的是系统解耦、横向扩展,玩的是容器、微服务和 DevOps工具链。
从业务发展的角度来看,Cloud Native 是要解决业务互联网化发展的问题,快速迭代(敏捷、持续交付)、永远在线(高可用)、高并发(弹性伸缩)等是典型需求。一个成功产品的用户量往往是数以亿计,无论多强大的单点都无法满足这种规模的性能需求。因此系统的可扩展性是一个成功互联网产品的必然属性。没有容器之前,这些事情确实也不是不能做,但有了容器镜像和成熟的编排之后,以工程化、服务化和自动化的流程来进行应用开发的便利程度是不可同日而语的。
对于浏览器端应用或者移动端应用,要消除大流量下的性能瓶颈导致请求变慢或者失败,前后端分离、动态请求静态请求分离的架构设计,是环节服务器 CPU、磁盘I/O、带宽等压力的有效方法。
如果是前端的服务请求来不及处理或者有瓶颈,可以将图片、JS、CSS、HTML 及应用服务相关的静态资源文件存储通过 Nginx 本地代理或者对象存储服务来进行物理加速,使用不同的域名来转发请求,并通过 CDN 将静态资源分布式缓存在各个节点实现“就近访问”,主动或被动刷新 CDN 的缓存来加速前端服务。
如果是后端的动态请求压力过大或者有热点服务,可以把无状态的后端的服务再进一步水平扩展满足业务分担,有状态需要判断是否能通过垂直扩容来服务,否则只能进行代码、架构设计或者业务规划的调整来优化。
另外,可以通过消息队列隔离前端的压力,实现排队系统,在涌入大量压力的情况下保证系统可以按照正常速率来处理请求,不会被流量压垮。如果是实际成交量有限的业务,也可以酌情通过前端系统进行拦截,限制最终流入后端系统的请求,来缓解系统压力,保证系统正常运行。
以上内容,参考《云原生应用架构实践》(网易云基础服务架构团队著)。
相关文章:
【推荐】 NGUI可展开列表的实现
【推荐】 秋读|10本热门图书(人工智能、编程开发、架构、区块链等)免费送!
【推荐】 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)
快速了解“云原生”(Cloud Native)和前端开发的技术结合点的更多相关文章
- 未来已来:云原生 Cloud Native
作者:天知,原文链接 前言 自 2013 年容器(虚拟)技术(Docker)成熟后,后端的架构方式进入快速迭代的阶段,出现了很多新兴概念: 微服务 k8s Serverless IaaS:基础设施服务 ...
- 使用Velero Restic快速完成云原生应用迁移至ACK集群
本文记录使用Velero Restic快速完成云原生应用迁移至ACK集群的实践过程. 0. 实践步骤概览 (1)创建GKE集群(或自建Kubernetes集群)(2)在GKE集群上部署示例应用Jenk ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- 巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
近日,巨杉数据库正式加入全球顶级开源社区,云原生应用计算基金会 (Cloud Native Computing Foundation,以下简称CNCF),成为CNCF基金会会员,是中国最早加入的开源云 ...
- 网络统计学与web前端开发基础技术
网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...
- 基于.Net进行前端开发的技术栈发展路线(二)
前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...
- 【web开发】web前端开发常用技术总结归纳
技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...
- web前端开发必备技术
1.Vue.js是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注 ...
- 基于.Net进行前端开发的技术栈发展路线(三)
前言 上一篇<我的技能树二>文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了. 我的技能树 我当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗 ...
随机推荐
- Effective java笔记3--类和接口2
三.接口优于抽象类 java提供两种机制,可以用来定义一个允许多个实现的类型:接口和抽象类.由于java只允许单继承,所以,抽象类作为类型定义受到了极大的限制. 已有的类可以很容易被更新,以实现新的接 ...
- Ansible之Playbooks的when语句
在使用ansible做自动化运维的时候,大多数情况下都执行某些任务的时候都需要依赖某个变量的值或者是上一个任务的执行结果.如,根据facts信息中的系统版本相关的信息来确定使用哪种包管理器安装软件.A ...
- Deep Learning(深度学习)学习笔记整理系列
http://blog.csdn.net/zouxy09/article/details/8775360 http://blog.csdn.net/zouxy09/article/details/87 ...
- leetcode690
class Solution { public: int getImportance(vector<Employee*> employees, int id) { ; map<int ...
- AMF解析之数据类型定义 (转)
目录(?)[-] OpenRTMFPCumulus Primer15AMF解析之数据类型定义 数据类型 undefined Type null Type false type true type in ...
- java8新特性-lambda表达式和stream API的简单使用
一.为什么使用lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...
- windows命令行 查询/kill 进程
查询: tasklist kill对应进程 按名称:taskkill /im xxx.exe 按pid: taskill /pid pid kill掉xxx进程的相关进程(子进程) taskkill ...
- 解决Maximum execution time of 120 seconds exceeded
在循环开始前加入代码: //设置超时时间 ini_set("max_execution_time",18000); set_time_limit(0); set_time_limi ...
- ORACLE 误删除数据恢复
首先通过如下SQL语句找到执行删除的LAST_ACTIVE_TIME.即找到具体的删除时间. select SQL_TEXT,LAST_ACTIVE_TIME from v$sqlarea where ...
- subprocess模块和logging模块
主要内容: 一.subprocess模块 二.logging模块 1️⃣ subprocess模块 三种执行命令的方法 subprocess.run(*popenargs, input=None, ...