你的位置:免费情侣作爱视频 > 精品国产一区二区三区香蕉 > 销魂老女人老泬 使用 Python 自界说 APISIX 插件

销魂老女人老泬 使用 Python 自界说 APISIX 插件

时间:2022-05-10 20:04 点击:76 次

销魂老女人老泬

除了 APISIX 官方内置的插件除外,咱们也不错凭据我方的需求去自界说插件,要自界说插件需要使用到 APISIX 提供的 Runner,现在还是复旧 Java、Go 和 Python 言语的 Runner,这个 Runner 畸形于是 APISIX 和自界说插件之间的桥梁,比如 apache-apisix-python-runner 这个方法通过 Python Runner 不错把 Python 班师讹诈到 APISIX 的插件开垦中,举座架构如下所示:

 销魂老女人老泬

其中的 Plugin Runner 即是各言语的插件运转器,当建树 Plugin Runner 后,APISIX 会启动一个子程度运转 Plugin Runner,该子程度与 APISIX 程度属于兼并个用户销魂老女人老泬,当咱们重启或重新加载 APISIX 时,Plugin Runner 也将被重启。

淌若你为一个给定的路由建树了 ext-plugin-* 插件,苦求掷中该路由时将触发 APISIX 通过 Unix Socket 向 Plugin Runner 发起 RPC 调用。调用分为两个阶段:

ext-plugin-pre-req:在扩充 APISIX 内置插件之前 ext-plugin-post-req:在扩充 APISIX 内置插件之后

接下来咱们就以 Python 为例来线路怎样自界说插件,领先得到 apache-apisix-python-runner 方法:

➜ git clone https://github.com/apache/apisix-python-plugin-runner.git ➜ cd apisix-python-plugin-runner ➜ git checkout 0.1.0  # 切换刀0.1.0版块 

淌若是开垦模式,则咱们不错班师使用底下的敕令启动 Python Runner:

➜ APISIX_LISTEN_ADDRESS=unix:/tmp/runner.sock python3 apisix/main.py start 

启动后需要在 APISIX 建树文献中新增外部插件建树销魂老女人老泬,如下所示:

➜ vim /path/to/apisix/conf/config.yaml apisix:   admin_key:     - name: "admin"       key: edd1c9f034335f136f87ad84b625c8f1       role: admin  ext-plugin:   path_for_test: /tmp/runner.sock 

通过 ext-plugin.path_for_test 指定 Python Runner 的 unix socket 文献旅途即可,淌若是坐褥环境则不错通过 ext-plugin.cmd 来指定 Runner 的启动敕令即可:

ext-plugin:   cmd: [ "python3", "/path/to/apisix-python-plugin-runner/apisix/main.py", "start" ] 

咱们这里的 APISIX 是运转 Kubernetes 集群中的,是以要在 APISIX 的 Pod 中去扩充 Python Runner 的代码,咱们当然需要将咱们的 Python 代码放到 APISIX 的容器中去,然后装配自界说插件的关连依赖,班师在 APISIX 建树文献中添加上头的建树即可,是以咱们这里基于 APISIX 的镜像来重新定制包含插件的镜像,在 apisix-python-plugin-runner 方法根目次下新增如下所示的 Dockerfile 文献:

FROM apache/apisix:2.10.0-alpine  ADD . /apisix-python-plugin-runner  RUN apk add --update python3 py3-pip && \     cd /apisix-python-plugin-runner && \     python3 -m pip install --upgrade pip && \     python3 -m pip install -r requirements.txt --ignore-installed && \     python3 setup.py install --force 

基于上头 Dockerfile 构建一个新的镜像,推送到 Docker Hub:

➜ docker build -t cnych/apisix:py3-plugin-2.10.0-alpine . # 推送到DockerHub ➜ docker push cnych/apisix:py3-plugin-2.10.0-alpine 

接下来咱们需要使用上头构建的镜像来装配 APISIX,咱们这里使用的是 Helm Chart 进行装配的销魂老女人老泬,是以需要通过 Values 文献进行隐敝,如下所示:

# ci/prod.yaml apisix:   enabled: true    image:     repository: cnych/apisix     tag: py3-plugin-2.10.0-alpine ...... 

由于官方的 Helm Chart 莫得提供对 ext-plugin 建树的复旧,是以需要咱们手动修改模板文献 templates/configmap.yaml,在 apisix 属性同级目次底下新增 ext-plugin 关连建树,如下所示:

{{- if .Values.extPlugins.enabled }} ext-plugin:   {{- if .Values.extPlugins.pathForTest }}   path_for_test: {{ .Values.extPlugins.pathForTest }}   {{- end }}   {{- if .Values.extPlugins.cmds }}   cmd:   {{- range $cmd := .Values.extPlugins.cmds }}   - {{ $cmd }}   {{- end }}   {{- end }} {{- end }}  nginx_config:   user: root  # fix 扩充 python runner没权限的问题 

然后在定制的 Values 文献中添加如下所示的建树:

# ci/prod.yaml extPlugins:   enabled: true   cmds: ["python3", "/apisix-python-plugin-runner/apisix/main.py", "start"] 

接着就不错重新部署 APISIX 了:

➜ helm upgrade --install apisix ./apisix -f ./apisix/ci/prod.yaml -n apisix 

部署完成后在 APISIX 的 Pod 中不错看到会启动一个 Python Runner 的子程度:销魂老女人老泬

在插件目次 /apisix-python-plugin-runner/apisix/plugins 中的 .py 文献都会被自动加载,上头示例中有两个插件 stop.py 和 rewrite.py,咱们以 stop.py 为例进行线路,该插件代码如下所示:

那么,该如何将业务DB数据高效准确地同步到数仓中呢?一般企业会使用两种方案:直连同步与实时增量同步(数据库日志解析)。其中直连同步的基本思路是直连数据库进行SELECT,然后将查询的数据存储到本地文件作为中间存储,最后把文件Load到数仓中。这种方式非常的简单方便,但是随着业务的发展,会遇到一些瓶颈,精品国产一区二区三区香蕉具体见下文分析。

最近有读者私聊我时发现有不少应届生和初学者销魂老女人老泬,他们在大数据怎么学,以及大数据怎么面试,简历怎么写等方面有很大的困扰,今天我们就来谈谈关于大数据的一些事。

网络犯罪事件也在伴随数据量的增长而迅速增长,网络攻击事件屡见不鲜。网络钓鱼攻击占已知安全事件的80%以上。根据谷歌公司的调查,截至2021年1月,全球已经注册了200多万个钓鱼网站。自从冠状病毒疫情爆发以来,远程工作者也成为了网络攻击者的攻击目标。

from apisix.runner.plugin.base import Base from apisix.runner.http.request import Request from apisix.runner.http.response import Response   class Stop(Base):     def __init__(self):         super(Stop, self).__init__(self.__class__.__name__)      def filter(self, request: Request, response: Response):         # 不错通过 `self.config` 得到建树信息,淌若插件建树为JSON将自动障碍为字典结构         # print(self.config)          # 开垦反应 Header 头         response.headers["X-Resp-A6-Runner"] = "Python"         # 开垦反应body         response.body = "Hello, Python Runner of APISIX"         # 开垦反应现象码         response.status_code = 201          # 通过调用 `self.stop()` 中断苦求历程,此时将立即反应苦求给客户端         # 淌若未表露调用 `self.stop()` 或 表露调用 `self.rewrite()`将延续将苦求         # 默许为 `self.rewrite()`         self.stop() 

达成插件领先必须要收受 Base 类,必须达成 filter 函数,插件扩充中枢业务逻辑即是在 filter 函数中,该函数只包含 Request 和 Response 类对象看成参数,Request 对象参数不错得到苦求信息,Response 对象参数不错开垦反应信息 ,self.config 不错得到插件建树信息,在 filter 函数中调用 self.stop() 时将随即中断苦求,反应数据,调用 self.rewrite() 时,将会延续苦求。

然后咱们在前边的 Nexus 讹诈中新增一个路由来测试咱们上头的 stop 插件,在 ApisixRoute 对象中新增一个路由王法,如下所示:

apiVersion: apisix.apache.org/v2beta2 kind: ApisixRoute metadata:   name: nexus   namespace: default spec:   http:     - name: ext       match:         hosts:           - ops.qikqiak.com         paths:           - "/extPlugin"       plugins:       - name: ext-plugin-pre-req  # 启用ext-plugin-pre-req插件         enable: true         config:           conf:           - name: "stop"  # 使用 stop 这个自界说插件             value: "{\"body\":\"hello\"}"       backends:       - serviceName: nexus         servicePort: 8081 

班师创建上头的路由即可,中枢建树是启用 ext-plugin-pre-req 插件(前提是在建树文献中还是启用该插件,在 Helm Chart 的 Values 中添加上),然后在 config 底下使用 conf 属性进行建树,conf 为数组方法不错同期开垦多个插件,插件建树对象中 name 为插件称呼,该称呼需要与插件代码文献和对象称呼一致,value 为插件建树,不错为 JSON 字符串。

创建后一样在 Dashboard 中也不错看到 APISIX 中的路由建树方法:

接着咱们不错来走访 http://ops.qikqiak.com/extPlugin 这个旅途来考据咱们的自界说插件:

➜ curl -i http://ops.qikqiak.com/extPlugin HTTP/1.1 201 Created Date: Thu, 13 Jan 2022 07:04:50 GMT Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive accept: */* user-agent: curl/7.64.1 host: ops.qikqiak.com X-Resp-A6-Runner: Python Server: APISIX/2.10.0  Hello, Python Runner of APISIX 

走访苦求效力中有一个 X-Resp-A6-Runner: Python 头信息,复返的 body 数据为 Hello, Python Runner of APISIX,和咱们在插件中的界说是相宜的。到这里就完成了使用 Python 进行 APISIX 自界说插件,咱们有任何的业务逻辑需要处分班师去界说一个对应的插件即可。

 

服务热线
官方网站:www.365jz.com
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:2852320325
邮箱:w365jzcom@qq.com
地址:武汉东湖新技术开发区光谷大道国际企业中心
关注公众号

Powered by 免费情侣作爱视频 RSS地图 HTML地图


免费情侣作爱视频-销魂老女人老泬 使用 Python 自界说 APISIX 插件