0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Dapr和Rainbond集成,实现云原生BaaS和模块化微服务开发

OSC开源社区 来源:OSC开源社区 2023-04-14 09:42 次阅读

背景

Dapr 是一个开源的分布式应用运行时,帮助开发者构建松耦合的分布式应用程序,具有良好的可扩展性和可维护性。Rainbond 是一款企业级的云原生应用管理平台,提供了丰富的功能和工具,方便开发者管理和部署应用。Rainbond 和 Dapr 结合可以提供以下价值点:

「1.为Dapr扩展云原生支持:」Rainbond 提供了一套完整的云原生应用支持方案,包括应用开发、应用编排、应用交付、应用运维等应用全生命周期管理能力,而 Dapr 只是应用开发框架,包括应用开发模型、服务发现、事件驱动等功能。将 Rainbond 和 Dapr 结合起来可以提供更完整的云原生应用支持,帮助开发人员更快地构建和部署应用。

「2.让Dapr应用可移植性增强:」Rainbond提供应用模版能力,Dapr开发的应用以模版的方式打包,可以方便交付和迁移到其他平台运行。

「3.为Rainbond扩充服务治理能力:」Rainbond 支持通过插件扩展服务治理能力,和 Dapr结合,可以通过Dapr的方式实现服务治理。将二者结合起来,可以提供更完整的服务治理功能,帮助开发人员更好地管理和控制应用中的服务。

「4.为Rainbond增加BaaS能力:」在Rainbond上开发软件,需要自己安装后端数据库和中间件,而Dapr将后端能力以API的方式对外提供,开发者只需要通过API统一访问后端能力,实现了BaaS体验。

总之,Dapr和Rainbond能互相补充能力不足,Rainbond 解决了应用生命周期管理的问题,开发者不需要懂底层技术,但还是需要了解后端服务, Dapr 补足了这块能力,让开发者更加专注业务。

Rainbond和Dapr的整合思路

9bc68666-d9e7-11ed-bfe3-dac502259ad0.png

在 Dapr 微服务框架的业务体系中,Daprd 是整个业务的核心,应用程序通过运行时 API 发送请求给 Daprd,Daprd 负责处理这些请求,并与底层服务进行交互。Daprd 是由 Dapr Services 中的 dapr-sidecar-injector 服务进行注入的,当 Pod 满足注入条件后进行注入。同时 Dapr Services 中的 dapr-operator 会监听整个集群下的 Dapr 配置资源(CRD),当捕获到有 Dapr 配置类资源的创建后,会记录在内存中,再次注入的 Daprd 如果 Pod 声明了使用该配置,则会提供对应的能力。

「Dapr Service 的安装」:Rainbond 将 Dapr Services 资源进行了整合,作为一个插件应用上架到了应用商店,通过安装便可以快速让我们的集群具备 dapr 微服务架构能力,避免了集群中执行 dapr init -k命令,同时解决了国外镜像拉取的问题。

「DaprD注入」:传统注入方式我们需要手动添加注入条件字段,费时费力且不易维护还容易出错;Rainbond 支持通过切换应用的治理模式的方式,为我们的 Pod 添加不同属性字段以满足不同微服务架构的注入条件,从而达到批量注入,快速使用、便于管理的效果。

「Dapr配置」:Dapr 提供了四种配置 Daprd 的资源来扩展我们的服务治理能力,分别为Configuration、Component、Resiliency、Subscription,我们需要通过编写 Yaml 的形式在集群中创建这些资源供业务组件使用,Rainbond 平台在应用的 k8s 资源的管理入口,其效果与kubectl有些类似但比kubectl更易于管理。其中 Configuration 资源用于存储应用程序的配置信息,例如连接字符串、密钥、证书等,需要为 Pod 配置的 annotations属性去声明才可使用,Rainbond 的组件视图提供对annotations属性配置,简化了我们配置的流程。

「Dapr Component安装和对接」:Rainbond 的应用商店已经有很多后端实现,如 MySQL、Redis等,在Rainbond里可以一键安装便可使用。在Dapr应用的K8s资源管理里配置Component的yaml,绑定后端服务的地址。

「Dapr应用开发:」Dapr开发的应用可以用源码、镜像、yaml部署到Rainbond平台上,然后根据Dapr的API规范访问后端服务,Rainbond提供对Dapr应用的持续集成、持续交付、环境管理、配置管理、日志和性能监控、访问网关、应用运维等能力,辅助Dapr应用的开发和管理。

部署和使用流程

基于 Rainbond 使用 Dpar 的目标:

  • 一键部署 Dapr Service,让集群具备 Dapr 微服务架构能力。
  • 自动为业务组件注入 Daprd。
  • 可视化管理 Dapr 配置。
  • 简化 Daprd 属性参数配置流程。
  • 多种方式交付你的 Dapr 业务。

下面我通过部署一个发布订阅的示例,供大家快速了解并掌握 Dapr 在 Rainbond 中是如何使用的

前提条件

  1. Rainbond 版本大于 v5.13。
  2. Rainbond 已经对接过开源应用商店并拥有推送权限。

实践步骤

9bdaf326-d9e7-11ed-bfe3-dac502259ad0.png

1. 安装 Rainbond Service Mesh 插件

Rainbond ServiceMesh 插件负责按照指定治理模式对应用组件进行加工调整,以满足微服务治理插件注入的基本条件。通过在平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-ServiceMesh 并进行安装

2. 安装Dapr 应用插件

创建一个以 dapr-system 为英文名的团队,安装 Dapr Services 。通过在平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-Dapr 并进行安装

3. 绑定 Component

Dapr 支持对接多种 Component 实现,如 Redis、Mysql、Oauth等,在 Rainbond 平台中安装也非常简单,大部分实现都可以在 Rainbond 应用商店中找到,少数不支持的存储也欢迎大家参与应用制作发布到应用商店中来。本次示例我们需要安装的是 Redis 通过在平台管理->应⽤市场->开源应⽤商店->搜索 Redis 并进行安装。安装完成后,在应用视图->k8s资源->编写 Component 资源进行绑定。

apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:pubsub
spec:
type:pubsub.redis
version:v1
metadata:
-name:"redisHost"
value:"YOUR_REDIS_HOST_HERE"
-name:"redisPassword"
value:"YOUR_REDIS_PASSWORD_HERE"

如果是 MySQL ,步骤是平台管理->应⽤市场->开源应⽤商店->搜索 MySQL 并进行安装,安装完成后在 应用视图->k8s资源->编写 Component 资源进行绑定。

apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:
spec:
type:state.mysql
version:v1
metadata:
-name:connectionString
value:""
-name:schemaName
value:""
-name:tableName
value:""
-name:pemPath
value:""

4. 切换应用治理模式

将业务应用的治理模式切换至 Dapr 。通过在 应用视图->治理模式->选择 Dapr 治理模式进行切换。其中 dapr 治理模式会为我们组件的 annotations 属性添加字段dapr.io/enabled: "true"以及dapr.io/app-id="xxx" 其中 xxx 为组件的英文名,由于dapr.io/app-id是Dapr 体系中的唯一标识,Rainbond 支持自行配置,如果检测到有该属性字段,则优先使用原配置。满足注入条件后,dapr-sidecar-injector 服务开始工作,为我们的业务组件注入 Daprd。

5. 部署业务

Rainbond 提供了多种方式部署你的业务,镜像、Helm、Yaml、源码等等。这里我选择使用镜像部署,具体步骤为: 应用视图->添加组件->指定镜像->填写镜像地址

demo镜像地址:
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-node-subscriber:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-react-form:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-go-subscriber:latest

由于 Dapr 中消息队列需要为组件 annotations 属性设置 dapr.io/app-port 字段,切换治理模式的时候并没有自动生成,所以我们需要在组件视图->其他设置->Kubernetes属性->新增属性->选择 annotations->添加 dapr.io/app-port=组件端口字段。同理其他扩展的 annotations 属性字段均在此处配置。

6. 部署最终效果

pubsub-react-form 组件的组件视图->端口->打开对外服务便可实现访问消息发布组件,向订阅 A、B、C中发布消息,通过观察pubsub-node-subscriberpubsub-go-subscriber组件的日志可看到订阅的内容,日志位置:组件视图->日志

7. 通过Dapr控制台管理

访问 dapr dashboard 可以查看到我们的微服务组件在 Dapr 中的注册信息。

9be97c20-d9e7-11ed-bfe3-dac502259ad0.png

8.发布应用模版

Rainbond提供应用一键发布应用模版的能力,在Dapr开发应用的应用视图,点击发布来发布应用模版,并通过应用模版在线和离线快速安装到其他环境。不过在其他环境使用时需要先安装Rainbond和Dapr基础环境。

在Rainbond上扩展Dapr

链路追踪

链路追踪是一种网络监控和故障排除技术,用于追踪数据包在网络中的路径和经过的节点,以便优化网络性能和发现问题,在 Dapr 中是通过配置Configuration资源绑定追踪器实现进行工作的。下面是以 Zipkin 追踪器实现的Configuration资源配置示例。更多详见 Dapr Observability[1]

应用视图->k8s资源->编写 Configuration 资源

apiVersion:dapr.io/v1alpha1
kind:Configuration
metadata:
name:daprConfig
namespace:default
spec:
tracing:
samplingRate:"1"
zipkin:
endpointAddress:"http://localhost:9411/api/v2/spans"

熔断限流

限制每秒允许的最大 HTTP 请求数,速率限制可以保护您的应用程序免受拒绝服务 (DOS) 攻击。我们需要配置component资源作为中间件,然后通过Configuration 资源进行绑定,然后在业务组件中配置挂载使用。

应用视图->k8s资源->编写 Component 资源作为中间件,设置每秒的最大请求数为 10。

apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:ratelimit
spec:
type:middleware.http.ratelimit
version:v1
metadata:
-name:maxRequestsPerSecond
value:10

应用视图->k8s资源->编写 Configuration 配置资源绑定中间件。

apiVersion:dapr.io/v1alpha1
kind:Configuration
metadata:
name:appconfig
spec:
httpPipeline:
handlers:
-name:ratelimit
type:middleware.http.ratelimit

组件视图->其他设置->Kubernetes属性->新增属性->选择annotations->添加 dapr.io/config 属性字段绑定 Configuration 。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块化
    +关注

    关注

    0

    文章

    328

    浏览量

    21324
  • 微服务
    +关注

    关注

    0

    文章

    131

    浏览量

    7323
  • 云原生
    +关注

    关注

    0

    文章

    240

    浏览量

    7934

原文标题:Dapr和Rainbond集成,实现云原生BaaS和模块化微服务开发

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    入门级攻略:如何容器部署微服务

    第一步理解容器基础,第二步创建Dockerfile,第三步构建推送镜像,第四步部署微服务,第五步管理微服务、第六步优化更新。容器部署微服务
    的头像 发表于 10-09 10:08 108次阅读

    云原生和非云原生哪个好?六大区别详细对比

    云原生和非云原生各有优劣,具体选择取决于应用场景。云原生利用云计算的优势,通过微服务、容器和自动
    的头像 发表于 09-13 09:53 311次阅读

    京东云原生安全产品重磅发布

    “安全产品那么多,我怎么知道防住了?”“大家都说自己是云原生的,我看都是换汤不换药”在与客户沟通云原生安全方案的时候,经常会遇到这样的吐槽。越来越的客户已经开始了云原生化的技术架构改造,也意识到
    的头像 发表于 07-26 10:36 410次阅读
    京东<b class='flag-5'>云原生</b>安全产品重磅发布

    从积木式到装配式云原生安全

    云原生安全风险 随着云原生架构的快速发展,核心能力逐渐稳定,安全问题日趋紧急。在云原生安全领域不但有新技术带来的新风险,传统IT基础设施下的安全威胁也依然存在。要想做好云原生安全,就要
    的头像 发表于 07-26 10:35 258次阅读
    从积木式到装配式<b class='flag-5'>云原生</b>安全

    基于DPU与SmartNic的云原生SDN解决方案

    个轻量级,可移植的运行环境,逐渐成为云原生时代基础设施的事实标准。Kubernetes通过网络插件(CNI,Container Network Interface)实现灵活地配置和管理集群中的容器网络,确保容器之间的有效通信和网络安全。
    的头像 发表于 07-22 11:44 616次阅读
    基于DPU与SmartNic的<b class='flag-5'>云原生</b>SDN解决方案

    首批认证!拓维信息梧桐云原生平台获鲲鹏原生开发技术认证

    7月10日,拓维信息梧桐云原生平台V3.0获得华为鲲鹏原生开发技术首批认证。作为华为鲲鹏战略合作伙伴,拓维信息以28年行业数字经验和持续技术创新能力,携手华为共同繁荣鲲鹏
    的头像 发表于 07-19 08:15 413次阅读
    首批认证!拓维信息梧桐<b class='flag-5'>云原生</b>平台获鲲鹏<b class='flag-5'>原生</b><b class='flag-5'>开发</b>技术认证

    云原生驱动信贷服务数字 中软国际信贷数据服务平台获业界认可

    随着云原生技术在金融业的应用不断深化,金融服务的优化和创新日益加快。
    的头像 发表于 04-02 09:58 363次阅读
    <b class='flag-5'>云原生</b>驱动信贷<b class='flag-5'>服务</b>数字<b class='flag-5'>化</b> 中软国际信贷数据<b class='flag-5'>服务</b>平台获业界认可

    云原生是大模型“降本增效”的解药吗?

    云原生AI正当时
    的头像 发表于 02-20 09:31 348次阅读

    米哈游大数据云原生实践

    近年来,容器、微服务、Kubernetes 等各项云原生技术的日渐成熟,越来越多的公司开始选择拥抱云原生,并开始将 AI、大数据等类型的企业应用部署运行在云原生之上。以 Spark 为
    的头像 发表于 01-09 10:41 555次阅读
    米哈游大数据<b class='flag-5'>云原生</b>实践

    云原生技术前沿落地实践分论坛圆满举办

    12 月 16 日,2023 开放原子开发者大会【云原生技术前沿落地实践】分论坛在无锡成功举办。论坛将聚焦云原生的泛在、Serverless
    的头像 发表于 12-22 09:20 1004次阅读
    <b class='flag-5'>云原生</b>技术前沿落地实践分论坛圆满举办

    诚邀报名|在开发者大会,洞悉云原生技术落地最佳实践

    2023开放原子开发者大会 . OPENATOM DEVELOPERS CONFERENCE 云原生技术前沿落地实践分论坛 2023.12.16 随着云原生技术的蓬勃发展,云原生已成为
    的头像 发表于 12-09 18:45 602次阅读

    开放原子开发者工作坊|大咖论道云原生技术发展与应用实践

    、获取前沿技术趋势。 数字和智能化时代的来临,激发各行各业对“云”的需求,企业开始依托云原生、数字原生等核心技术进行数字转型,寻求高效治理的“良方”。在
    的头像 发表于 11-29 20:25 1093次阅读

    如何构建弹性、高可用的微服务

    基于微服务的应用程序可实现战略性数字转型和云迁移计划,对于开发团队来说,这种架构十分重要。那么,如何来构建弹性、高可用的微服务呢?RedisEnterprise给出了一个完美的方案。文
    的头像 发表于 11-26 08:06 445次阅读
    如何构建弹性、高可用的<b class='flag-5'>微服务</b>?

    docker微服务架构实战

    随着云计算和容器技术的快速发展,微服务架构在软件开发领域中变得越来越流行。微服务架构将一个大型的软件应用拆分成多个小型的、独立部署的服务
    的头像 发表于 11-23 09:26 625次阅读

    springcloud微服务架构

    和可扩展的微服务应用。 微服务架构通过将一个大型应用拆分成一系列小型的、独立可部署的服务来提供解决方案。每个服务都有自己的数据存储、业务逻辑和界面。这种架构能够使
    的头像 发表于 11-23 09:24 1190次阅读