首页 > 其他分享 >Dinky 玩起来如何(部署篇)?

Dinky 玩起来如何(部署篇)?

时间:2024-12-18 19:19:45浏览次数:6  
标签:容器 玩起来 Dinky 部署 文档 MySQL docker

Dinky 玩起来如何(部署篇)?


前面文章聊过了 streampark,这不,应广大网友邀请,这次咱再来看看 Dinky (之前也叫 Dink),同样是另一款号称流式计算的开发管理平台。


对于这块软件的介绍,官网描述的相对更加简单朴素,从提供的信息来看,目前用户可以使用和下载的版本,只有0.6和0.7。


从官网能顺利找到的部署方式来看,目前支持两种:


1. 下载安装包 + 源码编译的方式:这种部署方式会相对比较麻烦,对比 streampark 的一个大的安装包部署方式,dinky 的这种部署方式会根据功能,拆分成几个子部分,然后各部分之间各司其职,形成一个完整的功能,期间对一些部分需要编译;


2. Docker 部署方式:这个就简单很多,将该软件所有必要的元素都集成在了一个“盒子”里,省去了以上需要编译,修改配置,解决环境依赖等繁琐问题,但是,它最大的缺点就是对使用者可能没有那么透明,“盒子”里面的目录结构,配置方式,不能“个性化”调整,而且最难受的是,如果我想修改里面的内容,操作不能做到像在宿主机那般自如。


这两种方案我都尝试了,首先都暴露出同一个问题,那就是官方文档写的有些“混乱”,关键信息这一坨,那一片的,你很难通过一个页面或者一个部分的内容,把你在部署时,需要的必要信息找全。


需要你各种搜索,各种翻,在各个角落里,把这些散落的信息给拼起来,形成一个完整的部署思路。


当然,这个现象不止 Dinky 有,以往评测过的绝大部分软件,都有这个毛病,那就是写文档的人,同理心比较差,只会用自己的方式去思考问题,又或者,对文档描述这件事,没有重视,忽略了使用者的感受。


闲嗑少唠,咱接下来,就来看看,对于 Dinky 来说,这两种部署方式,分别怎么玩,以及分别又有哪些坑等着咱。


(趟坑告警:第1种部署方式在dinky编译的时候坑太多,建议用docker方式部署)



0. 环境准备


因为这两种部署方式,需要的环境依赖不一样,所以需要分开来说。


先看安装包 + 源码编译部署方式:


这部分官网描述的已经比较清楚了,需要提前准备的基础软件环境如下。



个人会认为,当一个软件的必要依赖越少,那么它的部署便利性,还有其传播效果就会更佳,对于这一点,dinky 的当前部署方式做的并不太好。


再看docker部署方式:


这个就不多过多赘述,服务器拥有docker基础环境即可,不过官方要求docker的版本不要太低,必须是1.13以上版本:



至于,Docker Compose部署方式,文档暂时没有做任何说明。



1. 安装包 + 源码编译部署


对于一般的软件部署来说,这个都是我首选的方式,因为足够原始,所以你也就能对软件本身,可以“亲密接触”。

我一般会习惯性观察下载后的安装包目录结构,配置文件包含的大致内容,以及lib目录中,涵盖了哪些技术栈信息等等,这样会让你对整个技术有更加全面深刻的认识。 


而 docker 的部署方式呢,则没有这样的便利,想要观察对应的目录结构,你得先启动容器,然后再进入容器内部,再通过各种必要的命令来查看其内容,这样就会比较麻烦,而且更重要的是,容器内部很有可能没有那些用起来比较便利的命令(因为没有安装,而如果你要自行安装的话,又是另一件麻烦的事情)。


但这一次,用这种比较原始的方式来部署 Dinky,却摔了个跟头。


根据官网文档要求,不同功能的安装包的下载、编译、部署是分开的。


第一步:部署NodeJS环境


这一步的问题倒不大,点击它的「下载地址」就能顺利下载(如果环境本身有就不用),然后按要求操作就可以。


第二步:部署MySQL


下载版本为5.7+的MySQL,如果你的服务器环境本身有,那就复用环境的,这步也没什么问题。


第三步:部署Maven


下载3.x版本的Maven,这个也简单。


第四步:编译Dinky源码包


官网目前没有提供现成的安装包,需要我们从github中克隆它的源码,然后进行编译,最终打成目标安装包,而这,也是整个部署步骤中最重要,但也最坑的一步。


先克隆源码:


这一步问题不大,主要是确保网络没有问题(实在不行架个梯子),先把源码下载到服务器。


从git地址来看,貌似这个命令无法选择版本,因为0.6版本的文档说明也是同样的git地址(当前参考 Dinky 0.7 的文档)。


克隆下来后,目录结构长这样:



再编译:


问题就出现了,这里我做了2次不同的尝试。


第一次,直接在服务器端,根据官方文档的要求,再结合我的Flink版本,运行下面的编译命令:


但是很快就报错了:


像这种类无法识别的问题,根据我的经验,最好是通过IDE工具把它打开,看是否因为pom文件引入的包,因为版本问题而导致。


第二次,通用IDEA 打开这个源码工程,发现,即便我修改了相应的pom 依赖版本(折腾了半个多小时之后),还是会源源不断冒出类似的报错:


心想,我C,这不会是打开了潘多拉魔盒了吧。


鉴于一开始就遇到了这么多的助力,我暂时决定放弃当前方案(后面有时间了再专门研究),弃暗投明,投奔docker。



2. Docker部署方案


相比之下,Docker的部署就要轻松很多,只不过关于这块的说明,被放在了文档中快速开始的位置:


但是,关于这块的内容,官网描述的有些潦草,即便是最选择了最简洁的 docker 部署,如果你没有比较熟悉的 Linux 基础,docker基础,想短时间内部署成功,依然不易。


从文档说明来看,如果选择 docker 部署的话,可以选择1个容器的部署方式,以及2个容器的部署方式,有啥区别呢?


2个容器部署方式:


其中一个容器为MySQL容器,用来专门存储 Dinky 在运行过程中,相关元数据的记录,这一点跟上次测评过的 streampark 玩法是一样的;


而第二个容器呢,则是 Dinky 的主体容器,主要包括web端的应用,以及流平台管理相关的部分。


1个容器的部署方式:


这个容器就只包含 Dinky 的主体功能部分,对于存储元数据的 MySQL,需要依赖外部已经创建好的数据库,因为我本地已经有了MySQL8,所以我选这种1个容器的部署方式。


具体步骤如下:


第一步:下载镜像


官方文档的说明比较简单粗暴,直接通过 docker run 来实现对镜像的下载,和启动两个步骤,但是我不建议你这样。



先通过 docker pull 命令把该镜像下载下来,注意对应的 Flink 版本:


这样做最大的好处在于,可先判断你当前服务器的网络是否给力,如果网络比较差,那么你还可以通过其他方式先下载该镜像,然后把它再传到你的目标服务器。


第二步:启动容器前的配置准备


确定镜像下载成功后,按理说,接下来就是要启动容器了。


但是,当你看到文档中,关于启动docker容器,需要添加 MySQL的一些参数时,相信你会恍然大悟,一拍大腿:我勒个去,MySQL的相关权限还没有配置呢。


所以这也是我为什么说它文档描述比较潦草的原因,里面有很多隐藏的步骤没有显示告诉你,需要部署的人提前要有这样的「技术自觉」才行。


于是,在启动容器前,就必须要把这一步给补上来,这一步其实就是在MySQL里建库、建表,建对应用户,然后赋权,再把这个用户交给Dinky,这样才算架起了一座它跟 MySQL 之间友好沟通的桥梁。


关于如何配置 MySQL 这一步的描述,其实在文档的其他地方(部署指南->部署):



但这还只是建了库,咱还得创建表不是,建表语句在哪呢?


文档中没有直接提供,它是这么描述的:


说这个建表 SQL 文件在 Dinky 的家目录里的sql子目录中。


但是它喵的,我现在是用容器部署啊,这个目录我得启动容器之后,进入到容器中才能找到它,不是吗?


这下就尴尬了,那咋整呢?


突然我想到之前不是下载了Dinky的源码吗,要不去碰碰运气看看,说不定那里面有呢,于是我一通搜索,得到了如下的结果:


心想,这个被我标记出来的文件,应该就是建表语句了吧,打开一看果然像。


于是,就准备拿来试试,在MySQL的客户端执行如下命令:


执行过程没有异常,心想这下应该可以了吧(其实不可以)。


第三步:正式启动docker


既然 MySQL 配置妥当,这下应该就没有后顾之忧了吧,直接通过命令启动,因为涉及到很多必要参数,因此实际的启动命令,要比官方文档给的示例更复杂一些:


docker run -d -p 8889:8888 -p 8082:8081 -e MYSQL_ADDR=192.168.221.173:3306 -e MYSQL_DATABASE=dinky -e MYSQL_USERNAME=*** -e MYSQL_PASSWORD=*** --name dinky0.7 dinkydocker/dinky-standalone-server:0.7.0-flink15

启动后,查看其容器运行情况:


进到容器里,瞅一眼日志,看有没有报错啥的。


果然没让人失望,还真有(只要有报错,Dinky 对应的网页就打不开),报错说 MySQL 中有一些表找不到,于是我猜应该是之前执行的那个sql文件不对。


(报错日志一下子找不到了,图先欠着)


那咋整呢?


刚才不是说了嘛,找不到正确的 SQL 文件,是因为不能进到容器里面来,现在已经进来了,那这个问题就不存在了。


但这个正确的 SQL 文件在哪呢?搁这呢。


注意,这个文件现在是在 docker 容器内部,需要通过 docker cp 命令把这个和文件给拷贝出来,然后到 MySQL 服务器执行(把之前的表全部删了)。


然后,重启docker容器(这个过程相信对你来说过于简单,过程就省略了)。


这一次,那个久违的web页面,终于可以打开了(用docker启动命令中的8889端口)。


通过admin/admin,就可以登录进去了。



最后


因为篇幅关系,今天这篇文章暂时先到这里,一来怕写太多了你们没耐心看完;二来也容许我把这玩意再多用用,摸得更清楚了,再来交作业,显得更严谨。


从这次前期的部署来看,是明显踩了一些坑的,核心原因在于:一个是文档描写有些粗糙,导致一些关键信息需要你反复去很多地方查找,或者一些出现的问题,只能根据经验来解决;另一个可能是软件本身还不够成熟,导致出现了一些当下比较“棘手”的问题


但这些我认为还不是最重要的,对于一款软件来说,最重要的是,部署完成之后的使用体验如何,能不能解决我的实际问题,能不能做到像产品介绍栏里宣传的那样“表里如一”。


好了,欲知 Dinky 的使用体验如何,请看下回分解...



原文链接:https://blog.itpub.net/70031265/viewspace-3038877/

标签:容器,玩起来,Dinky,部署,文档,MySQL,docker
From: https://www.cnblogs.com/sunny3158/p/18615726

相关文章

  • TensorRT-LLM 调整和部署 LoRA
    TensorRT-LLM调整和部署LoRANVIDIA开发者计划想要了解有关NIM的更多信息?加入NVIDIA开发者计划,即可免费访问任何基础设施云、数据中心或个人工作站上最多16个GPU上的自托管NVIDIANIM和微服务。加入免费的NVIDIA开发者计划后,您可以随时通过NVIDIAAPI目......
  • 模型部署-AI_pred 模型
    AI算法.算子在PyTorch中有实现.有把该PyTorch算子映射成一个或多个ONNX算子的方法.ONNX有相应的算子即:PyTorch算子映射方法ONNX算子这三个方面1.PyTorch框架和平台ATen(https://pytorch.org/cppdocs/#aten)是PyTorch内置的C++张量......
  • 基于SpringBoot的二手车交易系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
    专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中......
  • 【QAC】Validate授权文件分析和服务端授权部署
    1、文档目标分析授权文件的结构和各个功能组件进行对应,为后期排查客户授权问题提供理论基础。记录HelixQAC和Validate服务器端授权快速部署步骤,避免后续出现授权冲突文件,减少售后成本。对QAC授权、Validate授权和license文件间的调用机制,进行说明。后续了解进行软件授权的......
  • 在IIS部署cesium用的倾斜摄影3dtiles服务注意事项(备忘)
    1、将地形或倾斜摄影切片拷贝到IIS服务上,需要添加相应文件的MIME类型(如果缺少自己模型服务的数据类型,直接按扩展名添加,一般都使用application/octet-stream) .json   application/json .terrain  application/octet-stream.b3dm->application/octet-stream.pnts->->a......
  • docker 部署相关命令
    关闭防火墙systemctlstopfirewalld禁止防火墙开机自启动systemctldisablefirewalld启动dockersystemctlstartdocker查询当前状态systemctlstatusdocker查看版本号(可以查看是否安装了docker容器)docker-v查看docker-compose版本docker......
  • 私有化部署视频平台EasyCVR视频监控前端取电及实施建设
    在现代城市安全管理中,视频监控系统扮演着至关重要的角色。随着技术的进步,视频监控系统不仅需要提供清晰的图像,还需要具备高度的可靠性和稳定性。本文将详细介绍视频监控系统前端取电及实施建设的过程,包括供电方式、线路布局、安全措施以及监控平台的选择。通过这些详细的步骤和方......
  • springboot毕设商会会员管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着市场经济的不断发展,商会在商业领域的重要性日益凸显。商会会员数量逐渐增多,会员之间的交流、合作以及商会对会员的管理变得越发复杂。传统的......
  • springboot毕设收纳师管理系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,随着人们生活节奏的加快和生活品质要求的提高,收纳需求日益增长。然而,忙碌的生活使得很多人无暇顾及个人和家庭的收纳事务,收纳师这一新......
  • springboot毕设图像数字知识产权保护系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,图像作为一种重要的信息载体,其创作、传播和使用日益频繁。随着数字技术的飞速发展,图像的复制、篡改和盗用变得更加容易,这给图像......