“云原生”(Cloud Native)和前端开发的技术结合点在哪里?


勿忘初心提问于 2018-11-27 17:21
1 个回答
  • 猪小花1号2018-11-27 17:30

    后端视角,结合点就是通过前端流控缓解后端的压力,提升系统响应能力。

    从一般意义理解,Cloud Native 是后端应用的事情,要搞的是系统解耦、横向扩展,玩的是容器、微服务和 DevOps工具链

    从业务发展的角度来看,Cloud Native 是要解决业务互联网化发展的问题,快速迭代(敏捷、持续交付)、永远在线(高可用)、高并发(弹性伸缩)等是典型需求。一个成功产品的用户量往往是数以亿计,无论多强大的单点都无法满足这种规模的性能需求。因此系统的可扩展性是一个成功互联网产品的必然属性。没有容器之前,这些事情确实也不是不能做,但有了容器镜像和成熟的编排之后,以工程化、服务化和自动化的流程来进行应用开发的便利程度是不可同日而语的。

    对于浏览器端应用或者移动端应用,要消除大流量下的性能瓶颈导致请求变慢或者失败,前后端分离、动态请求静态请求分离的架构设计,是环节服务器 CPU、磁盘I/O、带宽等压力的有效方法。

    • 如果是前端的服务请求来不及处理或者有瓶颈,可以将图片、JS、CSS、HTML 及应用服务相关的静态资源文件存储通过 Nginx 本地代理或者对象存储服务来进行物理加速,使用不同的域名来转发请求,并通过 CDN 将静态资源分布式缓存在各个节点实现“就近访问”,主动或被动刷新 CDN 的缓存来加速前端服务。
    • 如果是后端的动态请求压力过大或者有热点服务,可以把无状态的后端的服务再进一步水平扩展满足业务分担,有状态需要判断是否能通过垂直扩容来服务,否则只能进行代码、架构设计或者业务规划的调整来优化。
    • 另外,可以通过消息队列隔离前端的压力,实现排队系统,在涌入大量压力的情况下保证系统可以按照正常速率来处理请求,不会被流量压垮。如果是实际成交量有限的业务,也可以酌情通过前端系统进行拦截,限制最终流入后端系统的请求,来缓解系统压力,保证系统正常运行。

    以上内容,参考《云原生应用架构实践》(网易云基础服务架构团队著)