微服务(一)
文章目录
- 项目地址
- 一、微服务
- 1.1 分析User的Domian Verb和Nouns
- 二、运行docker和k8s
- 2.1 Docker
- 1. 编写dockerfile
- 2. 创建docker image
- 3. 运行docker使用指定端口
- 4. 查看当前运行的镜像
- 5. 停止当前所有运行的docker
- 6. 删除不用的docker images
- 7. 将本地的image上传到hub里
- 2.2 K8S
- 1. 创建k8s的部署
- 2. 创建node服务
- 3. 运行当前的环境
- 4. 查看运行状态
- 5. 删除部署
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
一、微服务
1.1 分析User的Domian Verb和Nouns
-
根据用户行为分析用户需要的实体和查询条件
-
列出所有的实体
Customer
Order
Order Details
Product
Shopping Cart
Shopping Cart ltems
Supplier
User
Address
Brand
Category
- 根据动词设计关系图
二、运行docker和k8s
2.1 Docker
1. 编写dockerfile
- 编写好.net的dockerfile
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.# 使用官方的 .NET 5 ASP.NET 基础镜像作为构建环境(base-env
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env#设置容器中的工作目录为 /app。后续的所有命令都将在这个目录下运行。
WORKDIR /app#将当前目录下的所有 .csproj 文件(通常是项目文件)复制到容器的工作目录中。
COPY *.csproj ./#恢复项目的依赖项
RUN dotnet restore#将整个项目的代码复制到容器中。
COPY . ./#编译和打包应用程序代码,生成可以运行的 .NET 程序。输出的构建文件存储在 /app/out 目录中。
RUN dotnet publish -c Release -o out#使用官方的 .NET 5 ASP.NET 基础运行时镜像作为生产环境(最终运行的容器)
FROM mcr.microsoft.com/dotnet/aspnet:5.0
#再次设置容器的工作目录为 /app。
WORKDIR /app
#从前面定义的 base-env 阶段复制 /app/out 文件夹的内容到当前工作目录。
COPY --from=build-env /app/out .#设置容器的入口点为 dotnet 命令,启动 PlatformService.dll 程序。
ENTRYPOINT ["dotnet", "PlatformService.dll"]
2. 创建docker image
- pjj521/platformservice 是镜像名称
docker build -t pjj521/platformservice .
3. 运行docker使用指定端口
- 后面是镜像名称
docker run -p 8080:80 -d pjj521/platformservice
4. 查看当前运行的镜像
docker ps
5. 停止当前所有运行的docker
docker stop $(docker ps -q)
6. 删除不用的docker images
- 查看
docker images
- 删除
docker -rmi -f 镜像ID
7. 将本地的image上传到hub里
docker push pjj521/platformservice1
2.2 K8S
1. 创建k8s的部署
- 创建部署的文件
platform-depl.yaml
apiVersion: apps/v1 # 自定义apps/v1 代表使用 Deployment 资源
kind: Deployment # 自定义资源类型,表示这是一个 Deployment 对象
metadata:name: platform-deployment # Deployment 的名称,这个名称在 Kubernetes 中唯一
spec:replicas: 1 # 副本数,表示部署一个 Pod 副本,Kubernetes 会确保有一个 Pod 在运行selector: #选择器,用于查找属于这个 Deployment 的 PodsmatchLabels:app: platformservice1 # 选择标签为 app=platformservice1 的 Pods,Kubernetes 使用这个标签来选择受此 Deployment 管理的 Podstemplate: # Pod 模板,描述 Pods 应该如何创建metadata:labels:app: platformservice1 # Pod 的标签,用于与 selector 配合选择该 Podspec: # Pod 的规格定义containers: #容器定义,说明该 Pod 中将运行的容器- name: platformservice1 # 容器的名称image: pjj521/platformservice1 # 容器使用的镜像,这里是一个本地镜像 "pjj521/platformservice1"ports:- containerPort: 80 #容器暴露的端口,这里表示容器会监听 80 端口
2. 创建node服务
- platform-np-srv.yaml
apiVersion: v1
kind: Service
metadata:name: platformservice1-service
spec:type: NodePort # 使用 NodePort 类型来暴露服务selector:app: platformservice1 # 匹配 platform-depl里的标签ports:- name: platformservice1 # 给端口命名(可选,便于理解)protocol: TCPport: 80 # 对外暴露的端口targetPort: 80 # 容器内的端口nodePort: 30001 # 可以指定 NodePort 的端口范围(可选,如果没有指定,Kubernetes 会自动分配一个在 30000-32767 之间的端口)
3. 运行当前的环境
- 先启动环境
kubectl apply -f .\platform-depl.yaml
- 在部署Node
kubectl apply -f .\platform-np-srv.yaml
4. 查看运行状态
- 查看部署的状态
kubectl get deployments
- 查看pods的状态
kubectl get pods
- 查看服务状态
kubectl get services
- 查看 Kubernetes 事件
kubectl get events --sort-by='.lastTimestamp'
5. 删除部署
- 查看当前部署的集群
kubectl get deployments
- 删除
kubectl delete deployment platforms-depl
相关文章:
微服务(一)
文章目录 项目地址一、微服务1.1 分析User的Domian Verb和Nouns 二、运行docker和k8s2.1 Docker1. 编写dockerfile2. 创建docker image3. 运行docker使用指定端口4. 查看当前运行的镜像5. 停止当前所有运行的docker6. 删除不用的docker images7. 将本地的image上传到hub里 2.2 …...
JAVA(SpringBoot)集成Kafka实现消息发送和接收。
SpringBoot集成Kafka实现消息发送和接收。 一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者 君子之学贵一,一则明,明则有功。 一、Kafka 简介 Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,最初由 Link…...
Oracle之开窗函数使用
开窗函数是数据开发面试的必知必会,必须认真对待,上难度: 开窗函数语法格式如下,一共五部分: ①函数(a)over(②<partition by b> ③<order by c> ④<windowing_clause> ⑤开窗范围)1、函数…...
mysql_store_result的概念和使用案例
mysql_store_result() 是 MySQL C API 中的一个函数,用于检索一个完整的结果集到一个客户端。当执行一个查询(通常是 SELECT 查询)并希望处理所有返回的数据时,可以使用此函数。 概念 mysql_store_result() 函数的原型如下&…...
【大数据】数据治理浅析
在数字化时代,数据作为企业的核心资产,其管理和利用显得尤为关键。数据治理,作为数据管理的重要组成部分,旨在确保数据的准确性、一致性、安全性和可用性。本文将从数据治理的基本概念、应用场景、必要性、需求分析等方面出发&…...
第 25 场 蓝桥月赛
4.喜糖摆放【算法赛】 - 蓝桥云课 问题描述 在过年时,蓝桥村的孩子们充满活力,他们化身为捣蛋鬼,挨家挨户寻讨喜糖。他们一共收到了N颗糖,每颗糖的甜度各不相同,第i颗糖的甜度为Ai。 然而,如何分配这些喜…...
LigerUI在MVC模式下的响应原则
LigerUI是基于jQuery的UI框架,故他也是遵守jQuery的开发模式,但是也具有其特色的侦听函数,那么当LigerUI作为View层的时候,他所发送后端的必然是表单的数据,在此我们以俩个div为例: {Layout "~/View…...
Vue2下篇
插槽: 基本插槽: 普通插槽:父组件向子组件传递静态内容。基本插槽只能有一个slot标签,因为这个是默认的位置,所以只能有一个 <!-- ParentComponent.vue --> <template> <ChildComponent> <p>…...
python 变量范围的定义与用法
文章目录 1. 局部变量(Local Scope)示例: 2. 嵌套函数变量(Enclosing Scope)示例:说明: 3. 全局变量(Global Scope)示例:说明: 4. 内置变量&#…...
for...in 和 Object.keys().forEach的区别
for…in 和 Object.keys().forEach的区别 1、遍历范围: for…in 会遍历 自身及原型链上的可枚举属性,需用 hasOwnProperty 过滤。 Object.keys() 仅遍历 自身可枚举属性,更安全。 // 定义一个父对象,包含原型链上的属性 const…...
API接口设计模板
API 员工登录接口设计 基本信息 Path: /admin/staff/login **Method:**POST 接口描述: 请求参数 Query 参数名称是否必须示例备注username是admin用户名password是mima密码 返回数据 名称类型是否必须默认值备注其他信息codeinteger必须dat…...
新电脑安装系统找不到硬盘原因和解决方法来了
有不少网友反馈新电脑采用官方u盘方式装win10或win100出现找不到硬盘是怎么回事?后来研究半天发现是bios中开启了rst(vmd)模式。如果关闭rst模式肯定是可以安装的,但这会影响硬盘性能,有没有办法解决开启rst模式的情况安装win10或win11呢&…...
”彩色的验证码,使用pytesseract识别出来的验证码内容一直是空“的解决办法
问题:彩色的验证码,使用pytesseract识别出来的验证码内容一直是空字符串 原因:pytesseract只识别黑色部分的内容 解决办法:先把彩色图片精确转换成黑白图片。再将黑白图片进行反相,将验证码部分的内容变成黑色&#…...
网站上的图片无法使用右键“图片另存为”
某些网站想要下载图片,无法使用右键“图片另存为”,网站截获了鼠标右键的快捷键,没法弹出右键菜单。 可以打开“开发者工具”,使用“Elements”面板找到这个元素,在元素上右键,选择“Open in new tab” 结…...
Linux:生产者消费者模型
一、普通生产者消费者模型 1.1 什么是生产者消费者模型 现实生活中,我们也会有像生物世界的生产者和消费者的概念,但是我们的消费者在大多数情况下并不和生产者直接联系,就比如说食物,不能说我今天去找供货商要十个面包ÿ…...
网络安全 | F5-Attack Signatures详解
关注:CodingTechWork 关于攻击签名 攻击签名是用于识别 Web 应用程序及其组件上攻击或攻击类型的规则或模式。安全策略将攻击签名中的模式与请求和响应的内容进行比较,以查找潜在的攻击。有些签名旨在保护特定的操作系统、Web 服务器、数据库、框架或应…...
自然元素有哪些选择?
在设计浪漫风格的壁纸时,自然元素是营造温馨、梦幻氛围的关键。以下是一些常见的自然元素选择,以及它们在壁纸设计中建议: 一、花朵 玫瑰: 特点:玫瑰是浪漫的象征,尤其是红色和粉色玫瑰,能够传…...
基于微信阅读网站小程序的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
linux挂载新硬盘,查看新硬盘,格式化分区,创建挂载点,挂载逻辑卷,整盘方式挂载,LVM方式挂载,查看linux 磁盘卷组的剩余空间,ext4与xfs区别
摘要 挂载新硬盘,本文作者整理了几乎所有相关的知识点 作者采用的是本文第二种挂载方式(LVM),只用了下面6条命令搞定 # 说明: # /dev/mapper/appvg-mylv1 逻辑卷完整名称 # # /dev/mapper目录是Linux系统中用…...
Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨
摘要:Web3.0作为互联网的下一代形态,承载着去中心化、开放性和安全性的重要愿景。然而,其高门槛、用户体验差等问题阻碍了Web3.0的主流化进程。本文旨在深入探讨Web3.0面临的挑战,并提出利用开源21链动模式、AI智能名片及S2B2C商城…...
AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制
AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制 学习前言相关地址汇总源码下载地址HF测试链接MS测试链接 测试效果Image to VideoText to Video轨迹控制镜头控制 EasyAnimate详解技术储备Qwen2 VLStable Diffusion …...
测试的基本原则
1.SDLC 才是王道:软件开发生命周期(SDLC)对于软件开发而言,是如同基石般的关键流程,每一位开发人员都应该对其了如指掌。从最初的需求定义,到最终软件上线后的维护,SDLC 的各个阶段环…...
如何建设一个企业级的数据湖
建设一个企业级的数据湖是一项复杂且系统化的工程,需要从需求分析、技术选型、架构设计到实施运维等多个方面进行综合规划和实施。以下是基于我搜索到的资料,详细阐述如何建设企业级数据湖的步骤和关键要点: 一、需求分析与规划 明确业务需…...
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
目录 ?编辑 一、Ubuntu22.04介绍 二、Ubuntu与Centos的区别 三、基于VMware安装Ubuntu Server 22.04 下载 VMware安装 1.创建新的虚拟机 2.选择类型配置 3.虚拟机硬件兼容性 4.安装客户机操作系统 5.选择客户机操作系统 6.命名虚拟机 7.处理器配置 8.虚拟机内存…...
springfox-swagger-ui 3.0.0 配置
在3.0中,访问地址URL变了。 http://地址:端口/项目名/swagger-ui/ SpringBoot maven项目引入 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version> </…...
【PyTorch][chapter 29][李宏毅深度学习]Fine-tuning LLM
参考: https://www.youtube.com/watch?veC6Hd1hFvos 目录: 什么是 Fine-tune 为什么需要Fine-tuning 如何进行Fine-tune Fine-tuning- Supervised Fine-tuning 流程 Fine-tuning参数训练的常用方案 LORA 简介 示例代码 一 什么是 Fine-tune …...
Spring无法解决的循环依赖
在Spring框架中,循环依赖是指两个或多个Bean相互依赖,形成一个闭环。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。虽然Spring通过三级缓存(一级缓存、二级缓存、三级缓存)机制解决了大多数情况下的循…...
C++的类Class
文章目录 一、C的struct和C的类的区别二、关于OOP三、举例:一个商品类CGoods四、构造函数和析构函数1、定义一个顺序栈2、用构造和析构代替s.init(5);和s.release();3、在不同内存区域构造对象4、深拷贝和浅拷贝5、构造函数和深拷贝的简单应用6、构造函数的初始化列…...
如何应对离别之:短暂离别
《若道离别》(一):如何应对离别之短暂离别 大多数人还是不能很全心愉快地面对离别,哪怕只是短暂,还是从有到无的失落感,有人一天就适应,有人需要很久 不求离别无动于衷,但求使用部分…...
Harmony Next 跨平台开发入门
ArkUI-X 官方介绍 官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码…...
笔试-二维数组2
应用 现有M(1<M<10)个端口组,每个端口组是长度为N(1<N<100),元素均为整数。如果这些端口组间存在2个及以上的元素相同,则认为端口组可以关联合并;若可以关联合并,请用二位数组表示输出结果。其中…...
/opt安装软件,就可以使用man xx命令是为什么
引言 以neovim的安装过程为例 下载 curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz sudo rm -rf /opt/nvim sudo tar -C /opt -xzf nvim-linux64.tar.gz添加环境变量前,是无法使用man nvim的 Then add this to your sh…...
vue3和vue2的区别有哪些差异点
Vue3 vs Vue2 主要差异对比指南 官网 1. 核心架构差异 1.1 响应式系统 Vue2:使用 Object.defineProperty 实现响应式 // Vue2 响应式实现 Object.defineProperty(obj, key, {get() {// 依赖收集return value},set(newValue) {// 触发更新value newValue} })Vue3…...
记录备战第十六届蓝桥杯的过程
1.学会了原来字符串也有比较方法,也就是字符串987 > 98 等等,可以解决拼最大数问题 题目链接:5.拼数 - 蓝桥云课 (lanqiao.cn) 2.今天又复习了一下bfs,感觉还是很不熟练,可能是那个过程我些许有点不熟悉ÿ…...
【PVE】Proxmox VE8.0+创建LXC容器安装docker
为了不影响PVE宿主机,通常使用套娃的形式安装Docker容器,再安装相关docker应用。首先在CT模板中创建 Linux 容器,推荐使用Debian。开启ssh登录,修改debian配置,安装docker 一、创建 LXC 容器 1、CT模板下载 点击“模…...
Semantic Kernel - Kernel理解
目录 一、关于Kernel 二、案例实战 三、运行截图 一、关于Kernel 微软的 Semantic Kernel 项目中,Semantic Kernel 是一个工具框架,旨在使得开发人员能够更容易地将大语言模型(如GPT)集成到不同的应用中。它通过提供一组接口、任务模板和集成模块,使开发者能够轻松地设计…...
【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南
文章目录 🌍一. WEB 开发❄️1. 介绍 ❄️2. BS 与 CS 开发介绍 ❄️3. JavaWeb 服务软件 🌍二. Tomcat❄️1. Tomcat 下载和安装 ❄️2. Tomcat 启动 ❄️3. Tomcat 启动故障排除 ❄️4. Tomcat 服务中部署 WEB 应用 ❄️5. 浏览器访问 Web 服务过程详…...
「 机器人 」利用冲程对称性调节实现仿生飞行器姿态与方向控制
前言 在仿生扑翼飞行器中,通过改变冲程对称性这一技术手段,可以在上冲与下冲两个阶段引入不对称性,进而产生额外的力或力矩,用于实现俯仰或其他姿态方向的控制。以下从原理、在仿生飞行器中的应用和典型实验示例等方面进行梳理与阐述。 1. 冲程对称性原理 1.1 概念:上冲与…...
力扣算法题——11.盛最多水的容器
目录 💕1.题目 💕2.解析思路 本题思路总览 借助双指针探索规律 从规律到代码实现的转化 双指针的具体实现 代码整体流程 💕3.代码实现 💕4.完结 二十七步也能走完逆流河吗 💕1.题目 💕2.解析思路…...
企业微信SCRM开创客户管理新纪元推动私域流量高效转化
内容概要 在当今瞬息万变的数字化时代,企业面临着前所未有的客户管理挑战。消费者的需求日益多样化,他们希望能够随时随地与品牌沟通。因此,越来越多的企业意识到,传统的客户管理方式已无法满足市场的需求。在这样的背景下&#…...
C++和Python实现SQL Server数据库导出数据到S3并导入Redshift数据仓库
用C实现高性能数据处理,Python实现操作Redshift导入数据文件。 在Visual Studio 2022中用C和ODBC API导出SQL Server数据库中张表中的所有表的数据为CSV文件格式的数据流,用逗号作为分隔符,用双引号包裹每个数据,字符串类型的数据…...
ESP8266 NodeMCU与WS2812灯带:实现多种花样变换
在现代电子创意项目中,LED灯带的应用已经变得极为广泛。通过结合ESP8266 NodeMCU的强大处理能力和FastLED库的高效功能,我们可以轻松实现多达100种灯带变换效果。本文将详细介绍如何使用Arduino IDE编程,实现从基础到高级的灯光效果ÿ…...
OpenAI 发布首个 AI 智能体
OpenAI 发布首个 AI 智能体 当地时间 1 月 23 日,OpenAI 发布了首个 AI 智能体 Operator124。以下是关于它的详细介绍2: 功能用途 操作网页:可模拟人类操作网页浏览器,能进行点击、滚动、输入等操作,例如在 OpenTable…...
【Linux】gcc/g++的使用
目录 一、gcc/g简介 二、编译和链接 预处理 编译 汇编 连接(生成可执行文件或库文件) 三、动态链接和静态链接 静态库和动态库 gcc其他常用选项 合集传送门:Linux_uyeonashi的博客-CSDN博客 一、gcc/g简介 GCC(GNU Com…...
Kmesh v1.0 正式发布!7 大特性提升网络流量管理效率和安全性
Kmesh v1.0 正式发布!7 大特性提升网络流量管理效率和安全性 2025 年新年伊始,Kmesh 团队正式发布了 Kmesh v1.0234。以下是 Kmesh v1.0 提升网络流量管理效率和安全性的 7 大特性35: 加密通信:引入 IPsec 协议对节点间流量加密&a…...
Day45:元组的创建
在 Python 中,元组(tuple)是一种不可变的序列类型。与列表(list)不同,元组一旦创建就无法修改它们的内容。元组是有序的,可以包含不同类型的元素,支持索引和切片操作,但不…...
Rust:如何动态调用字符串定义的 Rhai 函数?
在 Rust 中使用 Rhai 脚本引擎时,你可以动态地调用传入的字符串表示的 Rhai 函数。Rhai 是一个嵌入式脚本语言,专为嵌入到 Rust 应用中而设计。以下是一个基本示例,展示了如何在 Rust 中调用用字符串传入的 Rhai 函数。 首先,确保…...
在 Ubuntu22.04 上安装 Splunk
ELK感觉太麻烦了,换个日志收集工具 Splunk 是一种 IT 工具,可帮助在任何设备上收集日志、分析、可视化、审计和创建报告。简单来说,它将“机器生成的数据转换为人类可读的数据”。它支持从虚拟机、网络设备、防火墙、基于 Unix 和基于 Windo…...
单片机基础模块学习——数码管(二)
一、数码管模块代码 这部分包括将数码管想要显示的字符转换成对应段码的函数,另外还包括数码管显示函数 值得注意的是对于小数点和不显示部分的处理方式 由于小数点没有单独占一位,所以这里用到了两个变量i,j用于跳过小数点导致的占据其他字符显示在数…...
DAY01 面向对象回顾、继承、抽象类
学习目标 能够写出类的继承格式public class 子类 extends 父类{}public class Cat extends Animal{} 能够说出继承的特点子类继承父类,就会自动拥有父类非私有的成员 能够说出子类调用父类的成员特点1.子类有使用子类自己的2.子类没有使用,继承自父类的3.子类父类都没有编译报…...