|
| 1 | +--- |
| 2 | +title: "OpenFunction v1.1.0 发布:支持 Dapr 状态管理,重构函数触发器" |
| 3 | +linkTitle: "Release v1.1.0" |
| 4 | +date: 2023-06-12 |
| 5 | +weight: 92 |
| 6 | +--- |
| 7 | + |
| 8 | +[OpenFunction](https://github.com/OpenFunction/OpenFunction) 是一个开源的云原生 FaaS(Function as a Service,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发。在过去的几个月里,OpenFunction 社区一直在努力工作,为 OpenFunction 1.1.0 版本的发布做准备。今天,我们非常高兴地宣布 OpenFunction 1.1.0 已经发布了!感谢社区各位小伙伴的贡献和反馈! |
| 9 | + |
| 10 | +OpenFunction 1.1.0 版本带来了两个新的功能:新增 v1beta2 API,支持 Dapr 状态管理。此外,该版本还有多项强化(重构函数触发器等)及 bug 修复,使 OpenFunction 更加稳定和易用。 |
| 11 | + |
| 12 | +以下是本次版本更新的主要内容: |
| 13 | + |
| 14 | +## 新增 v1beta2 API |
| 15 | + |
| 16 | +在此版本中,我们新增了 v1beta2 API,原 v1beta1 API 已弃用,将来会被删除。v1beta2 中有不少重构,你可以在这个 [proposal](https://github.com/OpenFunction/OpenFunction/blob/main/docs/proposals/20230330-support-dapr-state-management.md) 中了解更多细节。 |
| 17 | + |
| 18 | +## 支持 Dapr 状态管理 |
| 19 | + |
| 20 | +之前,OpenFunction 支持 Dapr 发布/订阅和绑定构建块,状态管理也是有用的构建块之一,它对于具有状态的函数非常有用。使用状态存储组件,您可以构建具有持久状态的函数,这些函数可以保存和恢复它们的状态。 |
| 21 | + |
| 22 | +现在你可以在 Function CR 中定义状态存储,OpenFunction 将管理相应的 Dapr 组件。 |
| 23 | + |
| 24 | +你的函数可以使用简单封装的 Dapr 的状态管理 API 来保存、读取和查询定义的状态存储中的键/值对。 |
| 25 | + |
| 26 | +## 重构函数触发器 |
| 27 | + |
| 28 | +之前,我们使用 `runtime: knative` 和 `runtime: async` 来区分同步和异步函数,这会增加学习曲线。实际上,同步和异步函数之间的区别在于触发类型: |
| 29 | + |
| 30 | +- 同步函数由 HTTP 事件触发,这可以通过指定 `runtime: knative` 来定义。 |
| 31 | +- 异步函数由 Dapr 绑定组件或 Dapr 发布者事件触发。要指定异步函数的触发器,必须同时使用 `runtime: async` 和 `inputs`。 |
| 32 | + |
| 33 | +因此,我们可以使用 `triggers` 来替代 `runtime` 和 `inputs`。 |
| 34 | + |
| 35 | +`HTTP Trigger` 通过 HTTP 请求触发一个函数。您可以这样定义一个 `HTTP Trigger`: |
| 36 | + |
| 37 | +```yaml |
| 38 | +apiVersion: core.openfunction.io/v1beta2 |
| 39 | +kind: Function |
| 40 | +metadata: |
| 41 | + name: function-sample |
| 42 | +spec: |
| 43 | + serving: |
| 44 | + triggers: |
| 45 | + http: |
| 46 | + port: 8080 |
| 47 | + route: |
| 48 | + rules: |
| 49 | + - matches: |
| 50 | + - path: |
| 51 | + type: PathPrefix |
| 52 | + value: /echo |
| 53 | +``` |
| 54 | +
|
| 55 | +`Dapr Trigger` 使用 `Dapr bindings` 或 `Dapr pubsub` 的事件触发一个函数。你可以用 `Dapr Trigger` 定义一个函数: |
| 56 | + |
| 57 | +```yaml |
| 58 | +apiVersion: core.openfunction.io/v1beta2 |
| 59 | +kind: Function |
| 60 | +metadata: |
| 61 | + name: logs-async-handler |
| 62 | + namespace: default |
| 63 | +spec: |
| 64 | + serving: |
| 65 | + bindings: |
| 66 | + kafka-receiver: |
| 67 | + metadata: |
| 68 | + - name: brokers |
| 69 | + value: kafka-server-kafka-brokers:9092 |
| 70 | + - name: authRequired |
| 71 | + value: "false" |
| 72 | + - name: publishTopic |
| 73 | + value: logs |
| 74 | + - name: topics |
| 75 | + value: logs |
| 76 | + - name: consumerGroup |
| 77 | + value: logs-handler |
| 78 | + type: bindings.kafka |
| 79 | + version: v1 |
| 80 | + triggers: |
| 81 | + dapr: |
| 82 | + - name: kafka-receiver |
| 83 | + type: bindings.kafka |
| 84 | +``` |
| 85 | + |
| 86 | +## 其他改进和优化 |
| 87 | + |
| 88 | +- 从网关状态中删除 lastTransitionTime 字段,以防止频繁触发 reconcile。 |
| 89 | +- 允许在创建 Dapr 组件时设置作用域。 |
| 90 | +- 使用 OpenFunction 策略时,支持设置缓存镜像以提高构建性能。 |
| 91 | +- 支持设置 OpenFunction 构建策略的 bash 镜像。 |
| 92 | + |
| 93 | +以上就是 OpenFunction v1.1.0 的主要功能变化,在此十分感谢各位贡献者的参与和贡献。如果您正在寻找一款高效、灵活的云原生函数开发平台,那么 OpenFunction v1.1.0 绝对不容错过。 |
| 94 | + |
| 95 | +了解更多关于 OpenFunction 和本次版本更新的信息,欢迎访问我们的官方网站和 Github 页面。 |
| 96 | + |
| 97 | +- [官网](https://openfunction.dev/):https://openfunction.dev/ |
| 98 | +- [Github](https://github.com/OpenFunction/OpenFunction/releases/tag/v1.1.0):https://github.com/OpenFunction/OpenFunction/releases/tag/v1.1.0 |
0 commit comments