lua功能性函数.md 6.4 KB

ENTNGX所有文件codeview

背景与目标

  1. 要求对所有功能性函数熟记于心,至少下次用的时候能想到

ENTNGX下的配置文件

  1. .gitignore 文件,用于忽略文件的add .

  2. .gitlab-ci.yml 文件,用于管理项目的runner任务 首先,before和afterscript都是空,这里不管 variables中定义了不少常量?变量。这里是ip变量的作用是,每个tag打上去后,会执行script,然后会curl 到每个ip服务上,启动唤醒,然后nginx -reload啥的(opent,opens) stages:定义阶段,后续每个job中就可以使用这些阶段 不同job中的相同stages是并行的,但各个阶段是顺序的(比如说这个tag,触发了多个job,这些job都会同时执行build_dev 都执行通过后,会同时执行下一阶段)

script 这里Runner执行的命令或脚本,这里还没完全看懂

onlyexcept 这两个联系在一起,用于打tags行为与目标服务器的绑定。 only是,只有符合下面名称的tag名称,才会执行创建job(即执行这个job)

  1. .luacheckrc 文件 暂时不清楚这个 作用可能是对lua 全局变量的控制,比如说忽略

  2. elk_log_handler.lua 文件 用于将日志信息交接到Kibana,!网址连接,(志东的账号),数据结构是契合的。 用户请求lua接口,均会进入log_by_lua_file 阶段,执行elk_log_handler.lua文件 image-20211019170336162 然后再elk_log_handler.lua中把日志发到Kibana

用户请求有时候会返回406,而 elk 在遇见 非200 返回时会无法打印到 Kibana 上面去,用log_by_lua_file这个阶段,不会受到非200返回的影响,所以能将信息打印到Kibana 去 ngx.is_subrequest 这个字段是如何为true的?这个还不清楚

  1. elk_socket_obj.lua !rawget函数的使用 大概作用是,区分table与元表中字段的值

  2. fastcgi_params nginx自带的配置文件

  3. fastcgi.conf nginx自带的配置文件

  4. init-by-lua.lua lua执行阶段,初始化阶段,在此加载各种方法

  5. koi-utf,koi-win,mime.types,win-utf nginx自带的

  6. netutil.lua 这个方法没用过,大概是格式转换,暂时不深究

  7. nlog.lua 包含所有nlog方法

  8. **sit.conf ------ uat.conf ---------- prod.conf ** nginx的代理配置文件,不同环境的中间件配置server不同(xxx_middleware_server)

backen_by_env文件夹

  1. sit_middleware_backend.conf
  2. uat_middleware_backend.conf
  3. prod_middleware_backend.conf

负载均衡

route文件夹

各个接口模块的路由

route_by_env文件夹

主要是上海接口的中间件路由,区分sit,uat,prod环境

util、constant文件夹

包含各种功能性函数方法

config

中间件、ots、es的upstream

反向代理与正向代理的区别正向代理代理的对象是客户端,反向代理代理的对象是服务端 VPN,正向代理,用户通过代理上谷歌,谷歌不知道真实的用户是谁,隐藏的是客户端 lua,反向代理,用户请求dev服务器,经过upsteam,由多个服务提供服务器,用户不知道最终是哪个ip的服务器提供的服务,隐藏的是服务端

constants目录下的文件

  1. area_const.lua 省市区的code—map,也可以反转,通过省市区来map-code(但是逻辑并没有完全完善)
  2. area_ip_const.lua 是1的加强版,比较通用的区域码map方法area_ip_const.areaCode_map
  3. bidding_const.lua 招投标 find_notice_type_func方法,用户输入code,返回notice_types列表 剩下的大多是一些字段map
  4. ent_tags_const.lua 企业标签的tag_map,比如A股上市,国家技术创新中心,新三板啥的 包含desc字段(description),对map值的描述

util目录下的文件

  1. bidding_util.lua 招投标的轮子,但并不通用 比较通用的方法是add_etype 和add_info,配合common_util.get_etype_by_eid_list使用

  2. common_util.lua 通用方法

get_requests_args、get_request_id table的切片方法,merge方法,unique(去重),contains(table中是否有某个元素),table.sort(tb,function(a,b)) stiring_split方法 replace_string (替换,一一对应)

common_util.deep_copy 深拷贝 获取字符串长度:string.get_string_length common_util.format_percent 有关百分比及保留小数(可以优化的) common_util.get_etype_by_eid_list 获取etype,返回已经聚合的结果 common_util.person_job_sort_map 人员职位排序map

common_util.get_month_date 获取最近连续m个月的月份日期,还有每个月的第一天,最后一天(上下文)

随机数方法(随机取值),不知道作用 还有好多没用到的方法(有待优化),这里不作记录

  1. enterprise_panorama_util.lua deal_start_year_func 处理成立年限,应该算是通用方法 deal_reg_capi_func 注册资本筛选,通用方法 deal_area_func 区域筛选 deal_domain_func 行业筛选 deal_distance_func 距离筛选 check_point 企业标签筛选 (创新情报的筛选搜索列表项有个类似的轮子) deal_status_func 经营状态筛选 format_finance_amount 融资金额格式化

  2. env_variate_util 暂时不看

  3. es_util.lua

get_format_body_data 该方法对响应结果的状态码没有进行判断

  1. middleware_util.lua get_format_body_data 该方法对响应结果有进行判断,status==1 get_format_body_data2 与上一方法的区别在于,不包含对status的判断,常用于上海接口 get_enterprise_info_by_condition 参考wiki中的使用说明 get_ent_other_count 参考wiki capture_multi 三个参数,params_arr, key_list, format_func params_arr 请求队列,table key_list 如果key_list不传,返回结果就是list,如果传key_list,那么 结果还是table,第一个元素 的key是 key_list[1],value是第一个请求的响应 format_func 是对结果的判断方法,默认判断方法是middleware_util.get_format_body_data ,即默认会对status判断,所有上海接口,不能用这个并发