码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 在 k8s 以外的分布式环境中使用 Dapr


    在Dapr 文档和实践案例中多是推荐采用k8s, 其实我目前也是在k8s 上操作的,有公有云TKE,AKS,还有私有云的Rancher ,它并没有传闻中的那么难,而且我认为它非常容易上手。不过,我还是有很多人不愿意使用k8s 。那么在虚拟机场景下如何使用Dapr呢? 当然也有虚拟机部署的案例,比如2021年第一届DaprConf 上分享的Dapr case study: Man Group:https://blog.dapr.io/posts/2021/10/05/join-us-for-daprcon-october-19th-20th-2021/ 

    image

    如果我们脱离K8s 的 虚拟机环境下会碰到什么问题?

    1. 你需要安装 Docker 来运行 Dapr
    2. 使用Invoke API进行名称解析时无法在其他服务器上找到 Dapr 应用程序

    除了这两个问题,应该没有什么其他问题,因为根据 Dapr 的配置文件,它使用了外部服务器或者服务。

    我们先来看一下第一个问题,在没有 Docker 的情况下使用 Dapr ,官方文档里已经给我们了答案:入门指南: 不使用 Docker 在自托管模式下运行 Dapr。

    Dapr CLI 提供了使用 slim init 初始化 Dapr 的选项,而无需默认创建依赖于 Docker 的开发环境。 要使用 slim init 初始化 Dapr ,请在安装 Dapr CLI 后使用以下命令:

    dapr init –slim

    在此模式下安装了两个不同的二进制文件 daprd 和 placement。在此模式下,不会为状态管理或发布/订阅安装任何默认组件,例如Redis 和 Zipkin 不会安装,但是如果需要的话会单独设置,所以没有问题。

    那么第二个问题是 名称解析 ,我们还是来看一下官方文档里的 使用 服务调用概述-mDNS 轮询负载均衡:https://docs.dapr.io/zh-hans/developing-applications/building-blocks/service-invocation/service-invocation-overview/,Dapr 使用 mDNS 协议提供轮询负载均衡的服务调用请求,例如用于本地或多个联网的物理机器。但是mDNS只能在可以使用多播的环境中使用,这在云环境下通常是不可用的,在云环境下还有一个选择,官方文档里有 :详细介绍了关于 HashiCorp Consul 服务发现组件的信息,它既可以用于虚拟机也可以用于k8s 环境下,文章开头提到的案例就是用Consul 。

    说到这里,如果你是在用Azure,在Azure上有 Managed HashiCorp Cosul ServiceAzure,简称HCS, 客户可以通过Azure Marketplace将 HCS直接配置到他们的 Azure 环境中,而 HashiCorp 则负责服务的维护和运营。使用 HCS 允许用户在云、混合和本地场景中使用各种环境(包括虚拟机和 Kubernetes)。所以我尝试了一下,但是我使用的账号用不了,需要额外付费:

    image

    image

    AWS 上也有,具体可以看  Consul on Amazon ECS 0.3 Adds Extended Configuration。

    上面这两个问题我们都解决了,总结一下:

    • Docker 对于 Dapr 来说并不是必需的。
    • 如果你的环境支持使用多播,则可以使用 mDNS 在多台服务器上运行 Dapr。
    • 虚拟机环境下推荐使用Consul 作为名称解析服务。

    针对这个问题 陈一狮同学很早就写了一篇文章, Dapr + .NET Core实战(十四)虚拟机集群部署 mDNS + Consul 。他还特别录制一个系列的视频课程放在腾讯课堂里。

    我们再回到开篇时提到的那个使用Consul 部署的案例 ,他们开发了一个 Dapr 的轻量级生命周期管理组件:https://github.com/man-group/dapr-sidekick-dotnet,Sample 目录下有Consul的演示示例:https://github.com/man-group/dapr-sidekick-dotnet/tree/main/samples/AspNetCore,也可以看视频:https://www.bilibili.com/video/BV1br4y167u6?share_source=copy_web

  • 相关阅读:
    MySQL驱动扯后腿?Spring Boot用虚拟线程可能比用物理线程还差
    [Python人工智能] 四十一.命名实体识别 (2)基于BiGRU-CRF的中文实体识别万字详解
    Git的基本使用
    JavaScript 语法基础
    一文带你搞定抖音最近最火的情侣微信早报信息推送
    js中创建对象的5种方法
    基于STM32设计的WiFi语音播报日程表
    fpga_硬件加速引擎
    软件测试之【软件测试概论三】
    java_计算内存对象大小
  • 原文地址:https://www.cnblogs.com/shanyou/p/15999630.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号