• orange


    选型:使用orange系统

    orange与kong的比较
    1.kong整体代码上较凌乱, orange相对较有条理
    2.kong本身不支持后台管理页面,只能通过api方式增,删,改plugin, orange支持页面操作(至少其模板,js 可以直接拿来使用)
    3.功能上两者相近

    orange系统流程

    1)首先明确的是orange本身没有MVC框架, 对于数据库的引用也只是简单的require, 其结构比较简单,在实际开发中可能遇到的问题并不会很多, openrest本向就是以简单为主,涉及复杂的MVC框架反而可能会影响其速度。

    2)后台管理使用的是lua的lor框架, 使用了rest full接口,框架本身较复杂, 在开发中可能会出现意想不到的问题,(比如框架本身的问题),为不牵扯太多时间,考虑使用php重新开发

    3)orange执行流程比较鲜明, 在nginx不同阶段,调用不同的插件, 过滤用户行为

      在nginx启动时, 加载orange conf, mysql, plugins
      当url进入nginx时,执行指令access_by_lua_block中r的access()方法,该方法遍历plugin, 执行每个plugin中的access()方法

      例如限流:
      www.xueersi.com/1.php
      在进入nginx后, 执行到限流插件时,从共享内存中取出相应的规则,如果满足规则,则保存计数的值, 并放行, 否则禁止通过


    目前选型已完成, 需要做的事情如下

    一.后台管理系统重写(PHP语言)
      1)去掉后台管理系统中保存数据到mysql的逻辑,改为保存到配置中心(需要提供若干个api接口), 再由配置中心通知各个服务器来取最新数据,同时写到nginx的共享内存中
      2)该后台管理系统所的服务器也是配置中心下面的一个节点,也会pull最新的数据,并放到本地文件中
      3)在后台管理系统中有增,删,改操作的时候,把数据放到上面本地文件中合适位置,再将此文件的内容全部发送给配置中心
      4)本地文件中的内容格式为json, 数据基本参考orange中的数据

    二. 配置中心:
      增加接收后台管理系统产生数据的api接口

    三. 类似频控计数:
      计数统计的操作,由存储在mysql,改为在redis中保存

    四. 逐步完成的功能

      鉴权功能:将其逻辑修改为plugin形式

      频控功能
      降级功能
      告警功能:
        通过api层次的统计: 成功次数,错误次数,异常次数
        通过系统层次的统计: 内存、磁盘、CPU等指标
             通过nginx层次的统计: 502 505

      AB测试
      降权功能
      数据合并功能

  • 相关阅读:
    [51nod] 1088 最长回文子串 #Hash+二分
    [51nod] 1378 夹克老爷的愤怒 #树形DP
    [BZOJ] 2456: mode #众数计数法
    [51nod] 1199 Money out of Thin Air #线段树+DFS序
    [51nod] 1494 选举拉票 #算法设计策略
    [51nod] 1463 找朋友 #离线+扫描线
    [BZOJ] 2733: [HNOI2012]永无乡 #线段树合并+并查集
    [BZOJ] 1012: [JSOI2008]最大数maxnumber
    [Codeforces] E. Lomsat gelral #DSU on Tree
    [BZOJ] 4756: [Usaco2017 Jan]Promotion Counting #线段树合并+权值线段树
  • 原文地址:https://www.cnblogs.com/taek/p/7366368.html
Copyright © 2020-2023  润新知