Apache DolphinScheduler介绍与部署

目录

一、软件介绍

1、软件概述

2、发展历史

3、名词解释

4、模块介绍

软件部署

1、下载发布包

2、上传与解压

 3、启动

 4、浏览器验证


一、软件介绍

1、软件概述

Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

官网:https://dolphinscheduler.apache.org/zh-cn

官方文档:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2

DolphinScheduler 的主要特性如下:

  • 易于部署,提供四种部署方式,包括Standalone、Cluster、Docker和Kubernetes
  • 易于使用,可以通过四种方式创建和管理工作流,包括Web UI、Python SDK和Open API
  • 高可靠高可用,多主多从的去中心化架构,原生支持横向扩展
  • 高性能,性能比其他编排平台快N倍,每天可支持千万级任务
  • Cloud Native,DolphinScheduler支持编排多云/数据中心工作流,支持自定义任务类型
  • 对工作流和工作流实例(包括任务)进行版本控制
  • 工作流和任务的多种状态控制,支持随时暂停/停止/恢复它们
  • 多租户支持
  • 其他如补数支持(Web UI 原生),包括项目和数据源的权限控制

2、发展历史

2019年3月,易观决定将DolphinScheduler项目开源,在GitHub上发布了第一个开源版本(1.0.0)。开源后,吸引了众多开发者的关注,社区开始逐渐形成,为项目的后续发展奠定了基础。

2020年7月,DolphinScheduler顺利进入Apache软件基金会进行孵化,这标志着项目得到了更广泛的认可和支持。进入Apache孵化期后,项目遵循Apache的开源治理模式,吸引了更多来自不同企业和组织的开发者参与贡献,进一步推动了项目的发展。

2021年11月,DolphinScheduler从Apache孵化器顺利毕业,成为Apache顶级项目(TLP)。这是项目发展的一个重要里程碑,意味着DolphinScheduler在技术、社区、治理等方面都达到了较高的水平,得到了Apache软件基金会的充分肯定。

3、名词解释

DAG: 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:

流程定义:通过拖拽任务节点并建立任务节点的关联所形成的可视化DAG

流程实例:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成。每运行一次流程定义,产生一个流程实例

任务实例:任务实例是流程定义中任务节点的实例化,标识着某个具体的任务

任务类型:目前支持有 SHELL、SQL、SUB_WORKFLOW(子工作流)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中 SUB_WORKFLOW类型的任务需要关联另外一个流程定义,被关联的流程定义是可以单独启动执行的

调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。 其中 恢复被容错的工作流 和 恢复等待线程 两种命令类型是由调度内部控制使用,外部无法调用

定时调度:系统采用 quartz 分布式调度器,并同时支持cron表达式可视化的生成

依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,支持流程间的自定义任务依赖

优先级 :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出

邮件告警:支持 SQL任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知

失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束

补数:补历史数据,支持区间并行串行两种补数方式,其日期选择方式包括日期范围日期枚举两种

4、模块介绍

  • dolphinscheduler-master master模块,提供工作流管理和编排服务。

  • dolphinscheduler-worker worker模块,提供任务执行管理服务。

  • dolphinscheduler-alert 告警模块,提供 AlertServer 服务。

  • dolphinscheduler-api web应用模块,提供 ApiServer 服务。

  • dolphinscheduler-common 通用的常量枚举、工具类、数据结构或者基类

  • dolphinscheduler-dao 提供数据库访问等操作。

  • dolphinscheduler-extract extract模块,包含master/worker/alert的sdk

  • dolphinscheduler-service service模块,包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用

  • dolphinscheduler-ui 前端模块

二、软件部署

安装参考:https://dolphinscheduler.apache.org/en-us/docs/3.2.2/guide/installation/standalone

1、下载发布包

软件地址:https://dolphinscheduler.apache.org/zh-cn/download/3.2.2

2、上传与解压

cd /usr/local/soft/
tar -zxvf apache-dolphinscheduler-3.2.2-bin.tar.gz

3、配置元数据库

在 Standalone 模式下,DolphinScheduler 默认使用嵌入式数据库,可查看/usr/local/soft/apache-dolphinscheduler-3.2.2-bin/standalone-server/conf/application.yaml。本案例使用外部数据库 MySQL,方便后续直接操作相关数据

a、添加mysql依赖

将mysql-connector-java-8.0.15.jar放置到/usr/local/soft/apache-dolphinscheduler-3.2.2-bin/standalone-server/libs/standalone-server/文件夹下

b、修改数据库参数

修改/usr/local/soft/apache-dolphinscheduler-3.2.2-bin/standalone-server/conf/application.yaml中数据库参数,参考如下:

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#spring:profiles:active: mysqljackson:time-zone: UTCdate-format: "yyyy-MM-dd HH:mm:ss"banner:charset: UTF-8sql:init:schema-locations: classpath:sql/dolphinscheduler_mysql.sqldatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://node11:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8username: rootpassword: root123quartz:job-store-type: jdbcjdbc:initialize-schema: neverproperties:org.quartz.threadPool.threadPriority: 5org.quartz.jobStore.isClustered: trueorg.quartz.jobStore.class: org.springframework.scheduling.quartz.LocalDataSourceJobStoreorg.quartz.scheduler.instanceId: AUTOorg.quartz.jobStore.tablePrefix: QRTZ_org.quartz.jobStore.acquireTriggersWithinLock: trueorg.quartz.scheduler.instanceName: DolphinSchedulerorg.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPoolorg.quartz.jobStore.useProperties: falseorg.quartz.threadPool.makeThreadsDaemons: trueorg.quartz.threadPool.threadCount: 25org.quartz.jobStore.misfireThreshold: 60000org.quartz.scheduler.makeSchedulerThreadDaemon: trueorg.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegateorg.quartz.jobStore.clusterCheckinInterval: 5000org.quartz.scheduler.batchTriggerAcquisitionMaxCount: 1servlet:multipart:max-file-size: 1024MBmax-request-size: 1024MBmessages:basename: i18n/messagesjpa:hibernate:ddl-auto: nonemvc:pathmatch:matching-strategy: ANT_PATH_MATCHERcloud.discovery.client.composite-indicator.enabled: falsemybatis-plus:mapper-locations: classpath:org/apache/dolphinscheduler/dao/mapper/*Mapper.xmltype-aliases-package: org.apache.dolphinscheduler.dao.entityconfiguration:cache-enabled: falsecall-setters-on-nulls: truemap-underscore-to-camel-case: truejdbc-type-for-null: NULLglobal-config:db-config:id-type: autobanner: falseregistry:type: zookeeperzookeeper:namespace: dolphinschedulerconnect-string: localhost:2181retry-policy:base-sleep-time: 60msmax-sleep: 300msmax-retries: 5session-timeout: 30sconnection-timeout: 9sblock-until-connected: 600msdigest: ~security:authentication:# Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)type: PASSWORD# IF you set type `LDAP`, below config will be effectiveldap:# ldap server configurls: ldap://ldap.forumsys.com:389/base-dn: dc=example,dc=comusername: cn=read-only-admin,dc=example,dc=compassword: passworduser:# admin userId when you use LDAP loginadmin: read-only-adminidentity-attribute: uidemail-attribute: mail# action when ldap user is not exist (supported types: CREATE,DENY)not-exist-action: CREATEssl:enable: false# jks file absolute path && passwordtrust-store: "/ldapkeystore.jks"trust-store-password: ""casdoor:user:admin: adminoauth2:enable: falseprovider:github:authorizationUri: "https://github.com/login/oauth/authorize"redirectUri: "http://localhost:12345/dolphinscheduler/redirect/login/oauth2"clientId: ""clientSecret: ""tokenUri: "https://github.com/login/oauth/access_token"userInfoUri: "https://api.github.com/user"callbackUrl: "http://localhost:5173/login"iconUri: ""provider: githubgitee:authorizationUri: "https://gitee.com/oauth/authorize"redirectUri: "http://127.0.0.1:12345/dolphinscheduler/redirect/login/oauth2"clientId: ""clientSecret: ""tokenUri: "https://gitee.com/oauth/token?grant_type=authorization_code"userInfoUri: "https://gitee.com/api/v5/user"callbackUrl: "http://127.0.0.1:5173/login"iconUri: ""provider: giteecasdoor:# Your Casdoor server urlendpoint: http://localhost:8000client-id: ""client-secret: ""# The certificate may be multi-line, you can use `|-` for easecertificate: ""# Your organization name added in Casdoororganization-name: built-in# Your application name added in Casdoorapplication-name: dolphinscheduler# Doplhinscheduler login urlredirect-url: http://localhost:5173/loginmaster:listen-port: 5678# master prepare execute thread number to limit handle commands in parallelpre-exec-threads: 10# master execute thread number to limit process instances in parallelexec-threads: 10# master dispatch task number per batchdispatch-task-number: 3# master host selector to select a suitable worker, default value: LowerWeight. Optional values include random, round_robin, lower_weighthost-selector: lower_weight# master heartbeat intervalmax-heartbeat-interval: 10s# master commit task retry timestask-commit-retry-times: 5# master commit task intervaltask-commit-interval: 1sstate-wheel-interval: 5sserver-load-protection:enabled: true# Master max system cpu usage, when the master's system cpu usage is smaller then this value, master server can execute workflow.max-system-cpu-usage-percentage-thresholds: 0.9# Master max jvm cpu usage, when the master's jvm cpu usage is smaller then this value, master server can execute workflow.max-jvm-cpu-usage-percentage-thresholds: 0.9# Master max System memory usage , when the master's system memory usage is smaller then this value, master server can execute workflow.max-system-memory-usage-percentage-thresholds: 0.9# Master max disk usage , when the master's disk usage is smaller then this value, master server can execute workflow.max-disk-usage-percentage-thresholds: 0.9# failover intervalfailover-interval: 10m# kill yarn/k8s application when failover taskInstance, default truekill-application-when-task-failover: trueworker-group-refresh-interval: 10scommand-fetch-strategy:type: ID_SLOT_BASEDconfig:# The incremental id stepid-step: 1# master fetch command numfetch-size: 10worker:# worker listener portlisten-port: 1234# worker execute thread number to limit task instances in parallelexec-threads: 10# worker heartbeat intervalmax-heartbeat-interval: 10s# worker host weight to dispatch tasks, default value 100host-weight: 100server-load-protection:enabled: true# Worker max system cpu usage, when the worker's system cpu usage is smaller then this value, worker server can be dispatched tasks.max-system-cpu-usage-percentage-thresholds: 0.9# Worker max jvm cpu usage, when the worker's jvm cpu usage is smaller then this value, worker server can be dispatched tasks.max-jvm-cpu-usage-percentage-thresholds: 0.9# Worker max System memory usage , when the worker's system memory usage is smaller then this value, worker server can be dispatched tasks.max-system-memory-usage-percentage-thresholds: 0.9# Worker max disk usage , when the worker's disk usage is smaller then this value, worker server can be dispatched tasks.max-disk-usage-percentage-thresholds: 0.9task-execute-threads-full-policy: REJECTtenant-config:# tenant corresponds to the user of the system, which is used by the worker to submit the job. If system does not have this user, it will be automatically created after the parameter worker.tenant.auto.create is true.auto-create-tenant-enabled: true# Scenes to be used for distributed users. For example, users created by FreeIpa are stored in LDAP. This parameter only applies to Linux, When this parameter is true, worker.tenant.auto.create has no effect and will not automatically create tenants.distributed-tenant: false# If set true, will use worker bootstrap user as the tenant to execute task when the tenant is `default`;default-tenant-enabled: truealert:port: 50052# Mark each alert of alert server if late after x milliseconds as failed.# Define value is (0 = infinite), and alert server would be waiting alert result.wait-timeout: 0max-heartbeat-interval: 60s# The maximum number of alerts that can be processed in parallelsender-parallelism: 5api:audit-enable: false# Traffic control, if you turn on this config, the maximum number of request/s will be limited.# global max request number per second# default tenant-level max request numbertraffic-control:global-switch: falsemax-global-qps-rate: 300tenant-switch: falsedefault-tenant-qps-rate: 10#customize-tenant-qps-rate:# eg.#tenant1: 11#tenant2: 20python-gateway:# Weather enable python gateway server or not. The default value is true.enabled: true# Authentication token for connection from python api to python gateway server. Should be changed the default value# when you deploy in public network.auth-token: jwUDzpLsNKEFER4*a8gruBH_GsAurNxU7A@Xc# The address of Python gateway server start. Set its value to `0.0.0.0` if your Python API run in different# between Python gateway server. It could be be specific to other address like `127.0.0.1` or `localhost`gateway-server-address: 0.0.0.0# The port of Python gateway server start. Define which port you could connect to Python gateway server from# Python API side.gateway-server-port: 25333# The address of Python callback client.python-address: 127.0.0.1# The port of Python callback client.python-port: 25334# Close connection of socket server if no other request accept after x milliseconds. Define value is (0 = infinite),# and socket server would never close even though no requests acceptconnect-timeout: 0# Close each active connection of socket server if python program not active after x milliseconds. Define value is# (0 = infinite), and socket server would never close even though no requests acceptread-timeout: 0server:port: 12345servlet:session:timeout: 120mcontext-path: /dolphinscheduler/compression:enabled: truemime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xmljetty:max-http-form-post-size: 5000000accesslog:enabled: truecustom-format: '%{client}a - %u %t "%r" %s %O %{ms}Tms'management:endpoints:web:exposure:include: health,metrics,prometheusendpoint:health:enabled: trueshow-details: alwayshealth:db:enabled: truedefaults:enabled: falsemetrics:tags:application: ${spring.application.name}metrics:enabled: true# Override by profile
---
spring:config:activate:on-profile: postgresqlquartz:properties:org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegatedatasource:driver-class-name: org.postgresql.Driverurl: jdbc:postgresql://127.0.0.1:5432/dolphinschedulerusername: rootpassword: root---
spring:config:activate:on-profile: mysqlsql:init:schema-locations: classpath:sql/dolphinscheduler_mysql.sqldatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://node11:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8username: rootpassword: root123
c、创建库表

登录数据库,创建名为dolphinscheduler的数据库,然后将/usr/local/soft/apache-dolphinscheduler-3.2.2-bin/standalone-server/conf/sql/dolphinscheduler_mysql.sql表文件导入进去

4、启动

cd /usr/local/soft/apache-dolphinscheduler-3.2.2-bin
./bin/dolphinscheduler-daemon.sh start standalone-server

5、浏览器验证

浏览器输入:http://node11:12345/dolphinscheduler/ui/login

用户名admin 密码dolphinscheduler123

点击登录,查看界面

三、常见库表

删除实例

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE dolphinscheduler.t_ds_task_instance;
SET FOREIGN_KEY_CHECKS = 1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89614.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Selenium 启动的浏览器自动退出问题分析

当 Selenium 启动的浏览器自动关闭时,通常是由于以下原因导致的:1. 脚本执行完毕原因:Selenium 脚本执行到末尾时,如果没有保持浏览器打开的代码(如time.sleep()或循环),浏览器会自动关闭。解决…

rust实现的快捷补全到剪贴板的实用工具

最近在兼职项目中老是遇到这样的场景: 在云服务器之间通过scp命令传输文件,密码太长记不住(客户服务器不方便ssh-copy-id)在服务器上使用mysql命令登录修改数据,数据库密码太长记不住(客户设置的密码,直接改掉哈&#…

信息系统风险的安全技术防范思路

针对信息系统风险的安全技术防范思路 降低风险,即提升了安全能力和水平 保护资产 加强信息系统软硬件及数据安全保护;减少脆弱性 通过研发、部署、应用各环节来尽量减少或避免脆弱性;应对威胁 采取防御措施,实施攻防对抗。

Java项目:基于SSM框架实现的网盘管理系统【ssm+B/S架构+源码+数据库+毕业论文】

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此文件信息的管理…

Echart 地图放大缩小

文章目录 常用方法 1. **开启 `roam` 属性** 2. **通过鼠标滚轮或手势缩放** 3. **设置初始缩放比例** 4. **通过按钮控制缩放** 5. **限制缩放范围** 6. **监听缩放和平移事件** 7. **结合 `dataZoom` 实现数据缩放** 总结 相关文章 在 ECharts 中,可以通过设置地图的 roam …

针对VMware虚拟化环境迁移的复杂场景,我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析,并提供完整的解决方案框架。

针对VMware虚拟化环境迁移的复杂场景,我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析,并提供完整的解决方案框架。一、技术架构分析(架构图表格对比)graph TDA[源环境] -->|vMotion| B[目标环境]A -->…

揭秘 AIGC 背后的技术:GPT、BERT 与 Transformer 模型的工作原理

一、引言AIGC 的崛起与重要性人工智能生成内容(AIGC)已经不再是未来的技术,它正以惊人的速度渗透到各行各业,重新定义了内容创作、媒体生产、甚至人类认知的边界。从深度学习到大规模自然语言处理,AIGC 的崛起代表着一…

Compose笔记(三十五)--ModalBottomSheetLayout

这一节主要了解一下Compose中的ModalBottomSheetLayout,在Jetpack Compose开发中,ModalBottomSheetLayout是Material Design组件库中用于实现模态底部面板的核心组件,其核心作用是通过声明式API管理底部面板的显示、隐藏及交互逻辑。API Moda…

AWS Partner: Accreditation (Technical)

AWS Partner: Accreditation (Technical)AWS 核心技术简介云计算的优势AWS 全球基础设施核心技术:计算 Amazon Elastic Compute Cloud (Amazon EC2)存储数据库联网安全性从服务到解决方案解决方案设计简介迁移策略架构最佳实践AWS Well-Archi…

【52】MFC入门到精通——(CComboBox)下拉框选项顺序与初始化不一致,默认显示项也不一致

文章目录1 问题描述2 问题分析与解决上一讲,我们实现了MFC串口助手初级版。 MFC入门到精通——MFC串口助手(一)—初级版(串口设置、初始化、打开/关闭、状态显示),附源码1 问题描述 程序运行后串口默认参数,与我们预期不完全一致…

Astro:前端性能革命!从原生 HTML 到 Astro + React 的升级指南

为什么程序员必须关注 Astro在网站性能和 SEO 日益关键的今天,静态站点生成(SSG)再次成为焦点。Astro 作为一款专为内容驱动网站设计的现代前端框架,正引领一场轻盈革命。它强调服务器优先渲染,将页面预先转为纯 HTML&…

格式转换Total Excel Converter:20 种格式XLS XLSX 批量转 PDFWord

各位办公小能手们!今天给大家介绍一款超厉害的软件,叫Total Excel Converter,软件下载地址安装包 它可是专业的Excel文件格式转换工具。你知道吗,它能把Excel工作簿,像XLS、XLSX、XLSM这些格式,批量转换成…

Thread,ThreadLocal,ThreadLocalMap 三者的关系, 以及在实际开发中的应用【AI记录用】

在 Java 多线程编程中,Thread、ThreadLocal 和 ThreadLocalMap 是三个紧密相关的类,它们共同构成了 Java 中**线程本地变量(Thread-Local Storage)**机制的基础。下面我将从 三者的关系、实现原理 以及 实际开发中的应用 三个方面…

[故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型

目录 1. ​引言与背景总结​ 2. ​方法框架总结​ 3. ​训练策略总结​ 4. ​实验验证总结​ 核心代码实现(PyTorch框架) ​1. SNN特征提取器(多尺度卷积模块) ​结论与未来工作总结​ 1. ​引言与背景总结​ ​问题陈述​…

Java中缓存的使用浅讲

Java中缓存的使用浅讲在Java中,缓存系统的使用对于提升应用性能至关重要。缓存的作用主要是减少访问慢速存储(如数据库或文件系统)的频率,从而提高应用的响应速度。以下是对Java中缓存系统的全面讲解,包括缓存的类型、…

洛谷 P10264 [GESP202403 八级] 接竹竿 普及+/提高

题目描述 小杨同学想用卡牌玩一种叫做“接竹竿”的游戏。 游戏规则是:每张牌上有一个点数 vvv,将给定的牌依次放入一列牌的末端。若放入之前这列牌中已有与这张牌点数相 同的牌,则小杨同学会将这张牌和点数相同的牌之间的所有牌全部取出队列&…

windows docker-02-docker 最常用的命令汇总

一、镜像管理命令说明常用参数示例docker pull <镜像名>:<标签>拉取镜像docker pull nginx:latestdocker images查看本地镜像docker images -a&#xff08;含中间层镜像&#xff09;docker rmi <镜像ID>删除镜像docker rmi -f $(docker images -q)&#xff0…

前端react项目目录详解

1. 项目根目录文件​​文件/目录作用​​package.json​​定义项目依赖、脚本命令&#xff08;如 start/build&#xff09;、版本信息等​​.env​​基础环境变量配置&#xff08;所有环境共享&#xff09;​​.env.development​​开发环境专用变量&#xff08;如本地API地址&…

前端-CSS (样式引入、选择器)

文章目录大纲前端三大件常用样式颜色px:像素1.CSS三种引入方式1.1 行内样式1.2 页内样式1.3 引入外部样式表文件&#xff08;常见&#xff09;基础选择器1. 标记选择器2. id选择器3. 类选择器 最常用4 * 选择器 使用频率较低复合选择器伪类选择器1.超链接伪类&#xff1a;2.子元…

7月19日 台风“韦帕“强势逼近:一场与时间赛跑的防御战

中央气象台7月19日10时继续发布台风黄色预警,今年第6号台风"韦帕"正以每小时20-25公里的速度向西偏北方向移动,强度逐渐加强。这个来自海洋的"不速之客"中心附近最大风力已达10级(25米/秒),预计将于20日下午至夜间在广东深圳到海南文昌一带沿海登陆,…