浅谈前后端分离

@admin  April 18, 2018

在知乎看过一个《页面渲染是前段渲染还是后台渲染》的问题。有个人的回答我还是很赞同的,

前段渲染,这样前段做自己擅长的事,后端做自己擅长的事就好。

前后端分离是很有必要的。

如果说项目只有很少的人访问,那怎么渲染都无所谓,但是当需求发下来的时候,你就应该想到这个需求绝对不是最终需求,所以一定要像下棋一下想好接下来的几步棋怎么走。
1.维护项目
项目维护过程中,修改需求不断增加,必定导致我们不断修改代码,如果不做前后端分离其工作量接近于重新写了一遍项目。前后端分离后,对于一些需求只要局部修改就好,比如页面修改。
2.访问量上来后的优化。
后端渲染消耗的是服务器的性能,比如一个页面的逻辑查询需要8ms ,渲染需要2 ms,如果采用 8核处理器的话,可以计算出 (1000/10) * 8 = 800qps 。
前后端分离,逻辑查询8ms 输出json 1ms,那么 (1000/9)*8 = 888 qps
3.缓存机制
在不做前后端分离的情况下还可以通过加nosql 进行缓存提升速度。一种是数据缓存,另一种是页面缓存。
前后端分离可以进行分层缓存,还可以借助cdn 缓存。

可能遇到的问题

1 会话机制,用户量上来后很难使用单点服务器存session,
可以做sso 单点登录获取 token 存到用户端,后台建立 token 与 userid 的映射。前台获取token 后每次请求将token 加到request header中实现会话机制

jquery设置request head

         $.ajax({
                type: "GET",
                url: "/",
                beforeSend: function(request) {
                    request.setRequestHeader("Test", "Chenxizhang");
                },
                success: function(result) {
                    alert(result);
                }
            });

2.静态资源共享
可以使用阿里的oss 七牛云的云服务 ,或者自己搭建对象存储器,这样静态资源单独域名单独管理,在用户端还要对静态资源域名设置缓存。
3.负载均衡
前后端分离很好的处理了分层的问题,用户端可以是 webapp 或者pc 页面,通过代理服务器做好分发就好,前提示会话和静态资源问题都已处理。
4.前后端协同问题
常见的解决方案是 mock ,写测试代码提供假接口。
或者采用 devops的方式 敏捷开发。
但我觉得从本质上并没有解决协同的问题,因为这个开发毕竟是人参与的,人没问题就是写文档协同都可以。
5.单元测试,集成测试问题。
后台测试的目标就是,稳定健壮的接口。前段就是流畅美观的页面。针对这些目标进行测试。
6.项目的部署与实施
最好有版本追回机制,比如升级项目,线上的稳定版本一定要备份好。出问题马上回滚项目

http://2014.jsconf.cn/slides/herman-taobaoweb/index.html


评论已关闭