菜单开关

周梦康 发表于 2017-08-05 3709 次浏览 标签 : 网站架构实战

https://segmentfault.com/a/1190000010455076#articleHeader20

业务优化

非侵入式扩展开发

比如原来有一个model,叫问答,现在需要开发一个有奖问答,需要支持话题打赏,里面多了很多功能。这个时候应该利用面向对象的继承的特性。而不是做下面的开发

<?php
class AskModel {
    public function detail($id){
        $info = 从数据库查询到该问题的信息;
        // 逻辑1
        
        // 逻辑2
        
    }
}
<?php
class AskModel {
    public function detail($id){
        $info = 从数据库查询到该问题的信息;
        // 逻辑1
        if($info['type'] == 2){
            //...
        }else{
            
        }
        
        // 逻辑2
        if($info['type'] == 2){
            //...
        }else{
            
        }
    }
}

这样逻辑多了,子类型多了,逻辑判断就非常重复,程序运行起来低效可能是一方面,更多的是不可维护性。

业务和架构不分家,架构是建立在对业务的理解之上的。再放下上次直播的PPT (sf故障无法传图,等会补吧)

异步思想

举例:

  1. 处理邮件发送。
  2. gearman 图片裁剪。
  3. 页面上 ajax 加载动态数据。
  4. 图片的懒加载,双击图片看大图。
  5. sf 上通过websocket 通知你有新的消息,但是并没有告诉你有什消息,点击消息图标才会去异步请求具体的消息。

这些都是异步的思想。能分步走就分步走,能不能请求的就不请求。

静态化

专题页面,比如秒杀页面,为了应对更大的流量、并发。而且更新起来也比较方便。

业务解耦

比如刚刚上面说的专题页面,还有必要走整个框架的一套流程吗?进来引用一大堆的文件,初始化一大堆的东西?是不是特别低效呢?所以需要业务解耦,专题页面如果真要框架(可以首次访问之后生成静态页面)也应该是足够轻量级的。不能与传统业务混为一谈。

分布式以及 soa

说业务优化,真的不得不提架构方面的东西,业务解耦之后,就有了分布式和soa,因为这在上次分享中已经都说过了,就不多说了。
只说下 soa 自定义 socket 传输协议。
最重要的就是在自定义头里面强调body_len,注意设置为紧凑型,才能保证跨平台性 具体说明:https://mengkang.net/586.html

评论列表