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测试
  降权功能
  数据合并功能

 

posted @ 2017-08-15 17:45  taek  阅读(1550)  评论(0编辑  收藏  举报