当前位置: 首页 > news >正文

4. 云原生之kubesphere基础服务搭建

文章目录

  • 安装kubesphere插件
  • 服务暴露
    • NodePort方式
    • LoadBalancer方式
      • 安装 OpenELB
      • 部署eip资源
      • 配置网关
        • 启动网关
        • 创建路由
        • 测试网关路由
        • ingress高级功能
        • 在服务中配置LoadBalancer
  • 基础设施部署
    • 服务部署建议
      • helm仓库
      • 添加helm仓库
    • 运维相关
      • 部署gitlab
      • 部署nexus3
      • 部署harbor
    • 研发相关

安装kubesphere插件

官网参考:概述

  1. 资源定义->搜索clusterconfiguration

image.png

  1. 点击进入编辑ks-installer

image.png

  1. 编辑内容如下

若是担心内容存在出入可使用内容对比工具在线文本比对工具 | 菜鸟工具
替换内容确定后会自动安装相关插件

apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: >{"apiVersion":"installer.kubesphere.io/v1alpha1","kind":"ClusterConfiguration","metadata":{"annotations":{},"labels":{"version":"v3.3.2"},"name":"ks-installer","namespace":"kubesphere-system"},"spec":{"alerting":{"enabled":false},"auditing":{"enabled":false},"authentication":{"jwtSecret":""},"common":{"core":{"console":{"enableMultiLogin":true,"port":30880,"type":"NodePort"}},"es":{"basicAuth":{"enabled":false,"password":"","username":""},"elkPrefix":"logstash","externalElasticsearchHost":"","externalElasticsearchPort":"","logMaxAge":7},"gpu":{"kinds":[{"default":true,"resourceName":"nvidia.com/gpu","resourceType":"GPU"}]},"minio":{"volumeSize":"20Gi"},"monitoring":{"GPUMonitoring":{"enabled":false},"endpoint":"http://prometheus-operated.kubesphere-monitoring-system.svc:9090"},"openldap":{"enabled":false,"volumeSize":"2Gi"},"redis":{"enabled":false,"volumeSize":"2Gi"}},"devops":{"enabled":false,"jenkinsMemoryLim":"8Gi","jenkinsMemoryReq":"4Gi","jenkinsVolumeSize":"8Gi"},"edgeruntime":{"enabled":false,"kubeedge":{"cloudCore":{"cloudHub":{"advertiseAddress":[""]},"service":{"cloudhubHttpsNodePort":"30002","cloudhubNodePort":"30000","cloudhubQuicNodePort":"30001","cloudstreamNodePort":"30003","tunnelNodePort":"30004"}},"enabled":false,"iptables-manager":{"enabled":true,"mode":"external"}}},"etcd":{"endpointIps":"192.168.31.21,192.168.31.22,192.168.31.23","monitoring":false,"port":2379,"tlsEnable":true},"events":{"enabled":false},"logging":{"enabled":false,"logsidecar":{"enabled":true,"replicas":2}},"metrics_server":{"enabled":false},"monitoring":{"gpu":{"nvidia_dcgm_exporter":{"enabled":false}},"node_exporter":{"port":9100},"storageClass":""},"multicluster":{"clusterRole":"none"},"network":{"ippool":{"type":"none"},"networkpolicy":{"enabled":false},"topology":{"type":"none"}},"openpitrix":{"store":{"enabled":false}},"persistence":{"storageClass":""},"servicemesh":{"enabled":false,"istio":{"components":{"cni":{"enabled":false},"ingressGateways":[{"enabled":false,"name":"istio-ingressgateway"}]}}},"terminal":{"timeout":600},"zone":"cn"}}labels:version: v3.3.2name: ks-installernamespace: kubesphere-system
spec:alerting:enabled: trueauditing:enabled: trueauthentication:jwtSecret: ''common:core:console:enableMultiLogin: trueport: 30880type: NodePortes:basicAuth:enabled: falsepassword: ''username: ''elkPrefix: logstashexternalElasticsearchHost: ''externalElasticsearchPort: ''logMaxAge: 7gpu:kinds:- default: trueresourceName: nvidia.com/gpuresourceType: GPUminio:volumeSize: 20Gimonitoring:GPUMonitoring:enabled: falseendpoint: 'http://prometheus-operated.kubesphere-monitoring-system.svc:9090'openldap:enabled: falsevolumeSize: 2Giredis:enabled: falsevolumeSize: 2Gidevops:enabled: truejenkinsMemoryLim: 8GijenkinsMemoryReq: 2GijenkinsVolumeSize: 8Giedgeruntime:enabled: falsekubeedge:cloudCore:cloudHub:advertiseAddress:- ''service:cloudhubHttpsNodePort: '30002'cloudhubNodePort: '30000'cloudhubQuicNodePort: '30001'cloudstreamNodePort: '30003'tunnelNodePort: '30004'enabled: falseiptables-manager:enabled: truemode: externaletcd:endpointIps: '192.168.31.21,192.168.31.22,192.168.31.23'monitoring: falseport: 2379tlsEnable: trueevents:enabled: truelogging:enabled: truelogsidecar:enabled: truereplicas: 2metrics_server:enabled: truemonitoring:gpu:nvidia_dcgm_exporter:enabled: falsenode_exporter:port: 9100storageClass: ''multicluster:clusterRole: nonenetwork:ippool:type: caliconetworkpolicy:enabled: truetopology:type: weave-scopeopenpitrix:store:enabled: truepersistence:storageClass: ''servicemesh:enabled: falseistio:components:cni:enabled: falseingressGateways:- enabled: falsename: istio-ingressgatewayterminal:timeout: 600zone: cn
  1. 查看安装情况

image.png

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

服务暴露

NodePort方式

image.png
点击编辑外部访问,选择NodePort,随机分配暴露端口
image.png

LoadBalancer方式

安装 OpenELB

进入应用商店搜索OpenELB进行安装,安装0.2.6版本,无需修改配置直接安装

0.5.0版本会出现连接失败问题,导致容器不同重启

image.png
image.png

部署eip资源

  1. 编辑layer2-eip.yaml
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:name: layer2-eip
spec:address: 192.168.31.11-192.168.31.13interface: ens192protocol: layer2
  1. 部署eip
kubectl apply -f layer2-eip.yaml
  1. 查看eip
[root@ksmaster21 yaml]# kubectl get eip
NAME                CIDR                          USAGE   TOTAL
layer2-eip          192.168.31.11-192.168.31.13   3       3

配置网关

  1. 在应用商店搜索nginx部署用于测试
启动网关

image.png
image.png

lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

创建路由

本质是ingress-nginx,适合http类型的请求进行转发

image.png
image.pngimage.png
image.png

当上图网关地址出现信息则表格成功

测试网关路由
  1. 在ikuai中配置端口映射
  2. 使用域名:端口访问

image.png

ingress高级功能
  1. 高级功能通过注释实现,参考:ingress-nginx注解配置

image.png

在服务中配置LoadBalancer

mysql、redis需通过tcp连接,需在服务中配置外部访问
image.png
image.png

lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

基础设施部署

服务部署建议

  1. 应用商店(添加三方应用商店)
  2. helm部署
  3. 编写k8s资源部署【资源多概念多】
  4. docker-compose转化为k8s资源部署
  5. docker-compose转化为k8s资源,在转化helm【定制化】
  6. 原生docker部署
  7. 自制应用

helm仓库

  1. https://kubernetes.github.io/ingress-nginx:
    这是 Ingress Nginx 官方维护的 Helm 仓库。它提供了 Ingress Nginx 控制器的 Helm Chart,用于在 Kubernetes 集群中部署和管理 Ingress Nginx。
  2. https://charts.kubesphere.io/main:
    这是 KubeSphere 官方维护的 Helm 仓库。KubeSphere 是一个开源的 Kubernetes 容器平台,该仓库提供了一系列与 KubeSphere 相关的 Helm Charts,用于部署和管理 KubeSphere 的各个组件和功能。
  3. https://mirror.kaiyuanshe.cn/kubernetes/charts/:
    这是开源社区开源中国维护的 Helm 仓库镜像。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。
  4. https://mirror.azure.cn/kubernetes/charts/:
    这是 Azure 中国区官方维护的 Helm 仓库镜像。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。
  5. https://charts.helm.sh/stable:
    这是 Helm 官方维护的稳定版本 Helm 仓库。它提供了广泛使用的各种应用、服务和工具的稳定版本 Charts。然而,自 Helm 3.0 版本起,Helm 官方不再维护这个仓库,而是鼓励开发者将 Charts 发布到其他仓库。
  6. https://charts.bitnami.com/bitnami:
    这是 Bitnami 维护的 Helm 仓库。Bitnami 提供了许多流行应用的 Helm Charts,使用户能够轻松地在 Kubernetes 上部署和管理这些应用。
  7. https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts:
    这是阿里云官方维护的 Helm 仓库。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。阿里云还提供了其他地区的镜像仓库。

添加helm仓库

image.png
image.png

运维相关

运维相关基础设施特点是部署后基本就不会再动,出于稳定性考虑,可以考虑部署在k8s集群之外,好处在于:

  1. 避免个人在玩kubesphere时,把集群搞奔溃恢复不了
  2. 使用docker-compose部署比在kubesphere部署门槛低
  3. 使用docker-compose部署方便进行迁移

部署gitlab

汉化版:https://github.com/twang2218/gitlab-ce-zh
docker-compose.yaml

version: '2'
services:gitlab:image: 'twang2218/gitlab-ce-zh:11.1.4'restart: unless-stoppedhostname: 'gitlab.example.com'environment:TZ: 'Asia/Shanghai'GITLAB_OMNIBUS_CONFIG: |# 使用服务内部域名external_url 'http://192.168.31.8'gitlab_rails['time_zone'] = 'Asia/Shanghai'# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。# 比如下面的电子邮件的配置:# gitlab_rails['smtp_enable'] = true# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"# gitlab_rails['smtp_port'] = 465# gitlab_rails['smtp_user_name'] = "xxxx@xx.com"# gitlab_rails['smtp_password'] = "password"# gitlab_rails['smtp_authentication'] = "login"# gitlab_rails['smtp_enable_starttls_auto'] = true# gitlab_rails['smtp_tls'] = true# gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'ports:- '1000:80'- '1001:443'- '1002:22'volumes:- config:/etc/gitlab- data:/var/opt/gitlab- logs:/var/log/gitlab
volumes:config:data:logs:

登录http://192.168.31.8后台修改密码

部署nexus3

访问地址: http://ip:8081/

3.17版本密码改成随即的了,而且登录时候提示密码在/nexus-data/admin.password里

version: "3.3"
services:nexus:image: sonatype/nexus3container_name: nexus3restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 1003:8081volumes:- ./nexus-data:/nexus-data

注意:最好使用mkdir创建nexus-data目,并使用chmod -R 777设置权限,不然启动会报错
image.png

部署harbor

通过应用商店部署,核心在于TLS/SSL的配置,若是不清楚可采用docekr-compose进行部署修改。
自行选择版本:https://github.com/goharbor/harbor/releases
迅雷下载:https://storage.googleapis.com/harbor-releases/release-2.10.0/harbor-offline-installer-v2.10.0.tgz
Docker-compose部署Harbor实操
官网安装文档
helm部署harbor参考:【K8S教程】Helm方式部署Harbor

  1. 下载安装包
wget https://storage.googleapis.com/harbor-releases/release-2.10.0/harbor-offline-installer-v2.10.0.tgz
  1. 解压
tar -xzvf harbor-offline-installer-v2.10.0.tgz
  1. 查看解压目录

image.png

  1. 修改harbor.yml配置

将 harbor.yml.tmpl命名为harbor.yml,主要修改配置如下:

hostname: 域名或ip
https:port: 443# 证书路径certificate: /data/harbor/cart/harbor.crtprivate_key: /data/harbor/cart/harbor.key 
harbor_admin_password: 登录密码
database:password: 数据库密码
data_volume: /data/harbor
  1. 生成ssl证书,并拷贝到指定位置
    1. 如购买了ssl证书可直接使用,若没有则参考官网:配置harbor对https的访问
    2. 使用购买的证书和生成的证书区别:生成的证书需要再harbor和docker上都配置
    3. 将ssl证书拷贝到指定位置
  2. 首次安装执行安装命令
./install.sh

安装后会生成docker-compse.yaml文件 ,若出现端口冲突问题请修改docker-compse.yaml文件修改nginx端口为1004

  1. 编译
./prepare
  1. 使用docker-compose命令重启

研发相关

研发相关的基础设施特点:

  1. 变动也比较少,但比运维相关基础设施变动高
  2. 业务服务会与这些组件交互,从性能角度考虑建议部署到k8s中

研发相关组件mysql、redis、nacos等,这儿不详细介绍,部署方式介绍两种:

  1. 通过应用商店部署
  2. 习惯docker-compose方式部署的,可以转化为kubesphere可视化操作部署

相关文章:

4. 云原生之kubesphere基础服务搭建

文章目录 安装kubesphere插件服务暴露NodePort方式LoadBalancer方式安装 OpenELB部署eip资源配置网关启动网关创建路由测试网关路由ingress高级功能在服务中配置LoadBalancer 基础设施部署服务部署建议helm仓库添加helm仓库 运维相关部署gitlab部署nexus3部署harbor 研发相关 安…...

思福迪运维安全管理系统 任意文件读取漏洞

产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机 漏洞概述 由于思福迪运维安全管理系统 GetCaCert路由存在任意文件读取漏洞,攻击者可通过该漏洞在服务器端读取任意文件敏感内容,可能导致攻击者后续获取到相关的服务器权限 资…...

OCR在审核应用落地

本文字数:6686字 预计阅读时间:35分钟 01 背景 1、业务背景 在传统视频审核场景中,审核人员需要对进审视频中的文字内容进行逐一审核,避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力,并且由…...

借贷协议 Tonka Finance:铭文资产流动性的新破局者

“Tonka Finance 是铭文赛道中首个借贷协议,它正在为铭文资产赋予捕获流动性的能力,并为其构建全新的金融场景。” 在 2023 年的 1 月,比特币 Ordinals 协议被推出后,包括 BRC20,Ordinals 等在内的系列铭文资产在包括比…...

Python+Yolov5+Qt交通标志特征识别窗体界面相片视频摄像头

程序示例精选 PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头》编写代码&a…...

浅谈高并发以及三大利器:缓存、限流和降级

引言 高并发背景 互联网行业迅速发展,用户量剧增,系统面临巨大的并发请求压力。 软件系统有三个追求:高性能、高并发、高可用,俗称三高。三者既有区别也有联系,门门道道很多,全面讨论需要三天三夜&#…...

深入ArkUI:深入实战组件text和text input

文章目录 Text组件介绍Text组件的属性方法Text:文本显示组件4.3TextInput组件实战案例:图片宽度控制页面本文总结要点回顾在今天的课程中,我们将深入学习ArkUI提供的基础组件,着重探讨text和text input两个组件。 Text组件介绍 Text组件是一个用于显示文本的组件,其主要作…...

WPF 基础(Binding 二)

续接上文,本章继续讲解WPF Binding相关知识,主要内容是绑定的模式和绑定源(Source) 5绑定模式 在使用Binding类的时候有4中绑定模式可以选择 BindingMode TwoWay导致对源属性或目标属性的更改可自动更新对方。此绑定类型适用于…...

限制el-upload组件的上传文件大小

限制el-upload组件的上传文件大小 <el-upload :before-upload"handleBeforeUpload"><!-- 其他组件内容 --> </el-upload>Vue实例中定义handleBeforeUpload方法来进行文件大小的验证。你可以使用file.size属性来获取文件的大小&#xff0c;并与你期…...

什么是爬虫,为什么爬虫会导致服务器负载跑满

在我们日常使用服务器的过程中&#xff0c;经常会有遇到各种各样的问题。今天就有遇到用户来跟德迅云安全反馈自己服务器负载跑满&#xff0c;给用户详细排查后也未发现异常&#xff0c;抓包查看也没有明显攻击特征&#xff0c;后续查看发现是被爬虫爬了&#xff0c;调整处理好…...

线上隐私保护的未来:分布式身份DID的潜力

在日益数字化的世界中&#xff0c;人们的生活越来越多地依赖于互联网&#xff0c;数字身份也因而变得越来越重要。根据法律规定&#xff0c;互联网应用需要确认用户的真实身份才能提供各种服务&#xff0c;而用户则希望在进行身份认证的同时能够尽量保护他们的个人隐私&#xf…...

服务器被入侵后如何查询连接IP以及防护措施

目前越来越多的服务器被入侵&#xff0c;以及攻击事件频频的发生&#xff0c;像数据被窃取&#xff0c;数据库被篡改&#xff0c;网站被强制跳转到恶意网站上&#xff0c;网站在百度的快照被劫持等等的攻击症状层出不穷&#xff0c;在这些问题中&#xff0c;如何有效、准确地追…...

【开源】基于Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…...

2023-12-29 服务器开发-Centos部署LNMP环境

摘要: 2023-12-29 服务器开发-Centos部署LNMP环境 centos7.2搭建LNMP具体步骤 1.配置防火墙 CentOS 7.0以上的系统默认使用的是firewall作为防火墙&#xff0c; 关闭firewall&#xff1a; systemctl stop firewalld.service #停止firewall systemctl disable fire…...

CEC2017(Python):五种算法(DE、RFO、OOA、PSO、GWO)求解CEC2017

一、5种算法简介 1、差分进化算法DE 2、红狐优化算法RFO 3、鱼鹰优化算法OOA 4、粒子群优化算法PSO 5、灰狼优化算法GWO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem defini…...

数字身份验证:跨境电商如何应对账户安全挑战?

在数字化时代&#xff0c;随着跨境电商的蓬勃发展&#xff0c;账户安全问题逐渐成为行业和消费者关注的焦点。随着网络犯罪日益猖獗&#xff0c;用户的数字身份安全面临着更加复杂的威胁。本文将深入探讨数字身份验证在跨境电商中的重要性&#xff0c;并探讨各种创新技术和策略…...

Nature | 大型语言模型(LLM)能够发现和产生新知识吗?

大型语言模型&#xff08;LLM&#xff09;是基于大量数据进行预训练的超大型深度学习模型。底层转换器是一组神经网络&#xff0c;这些神经网络由具有自注意力功能的编码器和解码器组成。编码器和解码器从一系列文本中提取含义&#xff0c;并理解其中的单词和短语之间的关系。通…...

C# 使用ZXing.Net生成二维码和条码

写在前面 条码生成是一个经常需要处理的功能&#xff0c;本文介绍一个条码处理类库&#xff0c;ZXing用Java实现的多种格式的一维二维条码图像处理库&#xff0c;而ZXing.Net是其.Net版本的实现。 在WinForm下使用该类库需要从NuGet安装两个组件&#xff1a; ZXing.Net ZXing…...

Windows系统配置pytorch环境,Jupyter notebook编辑器安装使用(深度学习本地篇)

如今现在好一点的笔记本都自带英伟达独立显卡&#xff0c;对于一些简单的深度学习项目&#xff0c;是不需要连接服务器的&#xff0c;甚至数据量不大的话&#xff0c;cpu也足够进行训练学习。我把电脑上一些以前的笔记整理一下&#xff0c;记录起来&#xff0c;方便自己35岁事业…...

详解“量子极限下运行的光学神经网络”——相干伊辛机

量子计算和量子启发计算可能成为解答复杂优化问题的新前沿&#xff0c;而经典计算机在历史上是无法解决这些问题的。 当今最快的计算机可能需要数千年才能完成高度复杂的计算&#xff0c;包括涉及许多变量的组合优化问题&#xff1b;研究人员正在努力将解决这些问题所需的时间缩…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...