谷歌云GCP基础概念讲解

概览

云的基础是虚拟化:服务器,存储,网络。服务器是远程计算机的逻辑分区。存储是物理硬盘的逻辑划分。网络则是虚拟私有云。

谷歌是唯一一个拥有全球私有基础设施的公司;他们的谷歌云基础设施没有任何一部分通过公共互联网。换句话说,谷歌的云基础设施完全建立在他们自己的私有网络上,而不是依赖于公共互联网的网络基础设施。

谷歌以其为其服务开发革命性技术而闻名,一旦他们有了更好的版本,旧版本就会向全世界开源。

TensorFlow就是这些技术之一。 TensorFlow 是 Google 的 AI 引擎,也是 Google 搜索的核心。现在最新的是kubeFlow!

安全的全球专用网络:Google Cloud 是一个大型专用网络;没有任何东西通过公共互联网传播。使用 Cloud CDN 时,来自源的流量会穿过此专有光纤网络,并通过最靠近客户的位置进行传送。大多数研究公司选择 GCP,因为没有网络连接到互联网。

Kubernetes 引擎的创建者:Kubernetes 是由 Google 设计和创建的容器编排工具,用于管理其基础设施。部署了数百万个容器来托管 Google 服务,而 Kubernetes 是这些容器的核心。 Google 开源了这项技术,并提供了 Google 管理的 Kubernetes 引擎作为服务。

收费方式按秒计费,新用户前三个月有300美刀信用额度。

人工智能和机器学习服务:毫无疑问,谷歌是数据之王。数据越多,模型在人工智能世界中产生的结果就越准确。谷歌的机器学习服务是最好的。 Google 提供了多种 ML 服务来训练模型并处理模型训练管道。Kubeflow现在是 ML 操作的趋势。同样,KubeFlow 基于 Google 内部方法将 TensorFlow 模型部署到 Kubernetes,称为 TensorFlow Extended。

 

项目Project/Folder和权限IAM

整个GCP层级如下:组织(如果你的账户域名是组织类型比如google workspace账号的话)- 文件夹folder - 项目projects - 资源resource(gmail账号是无组织的)

IAM包括四种账户:Google Account, Service Account, Google Groups, Cloud Identity Domain。

IAM Policy:用json方式写的权限控制方式,成员,角色,资源,以及按需条件。

所有的资源服务都是一种API。从API&Service中就可以查看所有的API。有些服务在创建项目的时候就已经激活,有些则需要在使用的时候手动激活。

API Explorer可以轻松从网页尝试调试API(就算没激活都可以试用,厉害)。一般来说如果 API 请求失败,要么是没设置账户,要么是该服务还没被你激活。

Cloud Operations:Monitoring,Dashboard,Metrics Explorer,Alerting,通过group可以整合资源管理,通过setting可以增加pj和account统一管理。其他还有logging,error report,trace服务。

计费 Billing

计费账户:可以为每个部门单位创建计费账户,或者别的什么单位。可以在项目Project上(三个点)设置它的计费账户。或者可以在新建项目的时候选择收费账户。

操作需要的权限:(Billing Administrator role)或者 (Project Creator and Billing Account User)

Command:gcloud alpha/beta billing accounts list

注意:一开始的300美元积分,仅限第一个积分账户。最好把测试用的PJ都关联到第一个计费账户来使用。

预算和警报:预算和警报,是以计费账户为单位的。通过阈值在到达指定金额时,发送提醒邮件给我们,好让我们采取行动。

BillingExport:计费输出将费用数据输出到BigQuery。需要激活Bigquery Data transfer API。

如果你是发票结算账户,付款需要联系GCP销售团队,可以电汇或支票结算,每月将收到发票。

SDK

三种方法安装,docker,非docker,服务台的CloudShell。

# docker install
docker pull gcr.io/google.com/cloudsdktool/cloud-sdk:latest
docker run --rm gcr.io/google.com/cloudsdktool/cloud-sdk:latest gcloud version
# docker config
docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/cloud-sdk gcloud auth login
docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/cloud-sdk gcloud config list
# not docker config
gcloud init

SDK中所有的组建:使用gcloud components list可以列出来。知道了组件甚至可以猜出命令行。组件如下:

  • gcloud: The main google cloud component.
  • gcloud alpha: Set of commands used for early testing of new features.
  • gcloud beta: Beta release of new commands.
  • bq: Known as BigQuery component
  • gsutil: Used for Cloud storage operations.
  • core: Shared libraries for all the other components.
  • kubectl: Kubectl is used to control the Kubernetes cluster.

更新命令:gcloud components update

安装新的组件的推介方法:sudo apt-get install google-cloud-sdk-minikube

命令构成:

gcloud + release level (optional:alpha/beta) + component + entity + operation + positional args + flags

For example: gcloud + compute + instances + create + example-instance-1 + --zone=us-central1-a

登陆:gcloud auth login

配置:使用命令设置默认项目gcloud config set project <project ID>

当您登录 gcloud CLI 时,命令gcloud config list显示了当前配置,但是,我们可以有多个配置,gcloud config configurations list并将列出所有可用的配置。

要创建新配置,请使用gcloud config configurations create <name>命令。

撤销当前设置的PJgcloud config unset project

激活默认的配置gcloud config configurations activate default

Compute

从操作量来说(从多到少):Compute Engine - Kubernetes Engine - (Cloud Run / Cloud Functions / App Engine)

从workload包罗范围来(从多到少):Compute Engine - (Kubernetes Engine / Cloud Run) - Cloud Function - App Engine

App Engine:网络应用,手机后端,特定语言Python,HTTP only,专注快速开发,谷歌托管Docker。

Cloud Functions:事件触发,语言:Javascript,Go,Python,Java,不关心操作系统,时间执行540秒之内。因为它是事件触发所以对于workload(各种计算任务)更有用。

GKE:容器化服务,需要定义集群,可移植性,容器为部署单元。

Cloud Run:托管的GKE服务,用法和GKE基本相似除了:集群由谷歌管理,工作负载容器化,docker image,便宜,之需要关心应用的高可用性即可。

Compute Engine:能力越大责任越大。相当于EC2,没有容器化工作负载。

Preemptive VMs:抢占式虚拟机,24小时存活,适合处理批量作用,很像AWS的Spot,在创建regular Engine的时候选择它即可。便宜80%。

Predefined VMs:Standard, memory-optimized, compute-optimized

Instance:ssh for Linux, RDP protocol for windows.

要素:Image, Snapshot, Metadata(hostname, instance id, startup&shutdown scripts, custom metadata, service accounts info)

新建一个GCE可以从public image,custom image, snapshot, 或者任何可以启动的disk来创建。可以设置SA账号,并设置该服务器可以access的其他API。还可以设置防火墙firewall(http或者https访问)。

Startup script:这个相当于AWS的user data,是在启动的时候执行的命令。

gcloud命令:

  • 使用默认设置启动一个GCE:gcloud beta compute --project=[PROJECT_NAME] instances create instance-2 --zone=us-central1-a
$ gcloud compute instances create myinstance
Created [...].
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X  # 这里的外部IP可以用于外部的网络访问
STATUS: RUNNING
  • 列出所有GCE:gcloud beta compute instances list
  • 删除GCE:gcloud beta compute instances delete instance_name --zone zone_name
  • 设置防火墙80端口
$ gcloud compute firewall-rules create allow-80 --allow tcp:80
Created [...].
NAME: allow-80
NETWORK: default
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:80
DENY:
DISABLED: False
  • 进行ssh连接:gcloud compute ssh --zone us-central1-a [username]@[instance_name/host_name],另外所有的ssh key都在GCE的metadata页面中。在这个页面可以设置key的pub文件。
$ gcloud compute ssh myinstance
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts.
...

yourusername@myinstance:~#
  • 使用自定义的启动脚本创建GCE
$ gcloud compute instances create nginx \
         --metadata-from-file startup-script=startup.sh
  • 创建一个服务器集群用于负载均衡的过程:创建一个模板,然后创建目标池,这可以用于之后的负载均衡,然后在池中创建两个目标GCE,最后列出所有服务器,最后创建负载均衡
$ gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh
$ gcloud compute target-pools create nginx-pool
$ gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool
$ gcloud compute instances list
$ gcloud compute forwarding-rules create nginx-lb \
         --ports 80 \
         --target-pool nginx-pool
$ gcloud compute forwarding-rules list
NAME: nginx-lb
REGION: us-central1
IP_ADDRESS: X.X.X.X  # 这个地址可以访问lb地址了
IP_PROTOCOL: TCP
TARGET: us-central1/targetPools/nginx-pool
  • 所有的清理命令
$ gcloud compute forwarding-rules delete nginx-lb
$ gcloud compute instance-groups managed delete nginx-group
$ gcloud compute target-pools delete nginx-pool
$ gcloud compute instance-templates delete nginx-template
$ gcloud compute instances delete nginx
$ gcloud compute instances delete myinstance
$ gcloud compute firewall-rules delete allow-80
  • 以上都是来自官方的codelabs,真的很好:https://codelabs.developers.google.com/codelabs/cloud-compute-engine?hl=zh-cn#0

如果是windowsGCE需要用RDP客户端,这对于Linux就是ssh。

Auto Scaling

  • Predictive autoscaling:针对instance group进行预测性的扩展,一般在组创建三天后生效,因为需要预测的base data。
  • Cool down period:从启动到可用的时间。
  • Minimum&Maximum number of instances:和AWS一样,是扩展的范围。
  • Auto healing:健康检查功能,检测如果发现异常,会重建实例的功能,如果不开健康检查功能,那么只有在实例不跑了的时候才会重建。
  • Rolling updata/restart/replace:滚动更新,有助于重新启动或替换组中的实例。可能需要重新启动或类似的维护补丁。策略:maximum surge(最大的更新速率或数量)/maximum unavailable(重启更新时候的最大不可用数量)。
  • gcloud:
gcloud compute instance-groups managed \
set-autoscaling instance-group-2 \
--max-num-replicas 3 \
--min-num-replicas 1 \
--target-cpu-utilization 0.60 \
--cool-down-period 120 \
--zone=us-central1-a

Google Kubernetes Engine/Cluster

  • 术语:
  • Pod 是一个集合,里面可以有多个容器,共享一个PodIP,一个Pod就是一个application的copy。
  • Node 是一个虚拟机实例,一个Node可以有一个或者多个Pod,docker和kubernetes预装在这些虚拟机里。
  • Services 是endpoint for user,PodIP在重启的时候IP会变,但是service可以提供不变的服务端点。
  • Deployment 翻译为部署,每个pod都是容器构成的,一个容器其实就是一段代码,部署就是这些代码的复制,它的作用就是确保pod维持需要数量的运行。
  • Deamonset:Node节点级别的控制,确保软件的copy在每个节点运行。
  • Secrets:运行容器的时候使用的敏感数据,作为环境变量存储。runtime时候使用。现在只能用kubecli CLI设置
  • Configmaps:非敏感数据的环境变量。在runtime时候使用。现在只能用kubecli CLI设置
  • 工作方式:
  • 通过deployment.yaml文件定义pod的config以及要配置的数量。kube会据此创建实例,并在数量不够的时候进行替换。
  • 如果我们需要用Service暴露实例,每次更新实例,服务的endpoint都会映射到新的podIP。
  • 创建GKE的三个部分是:Cluster basics, Node pools, Cluster(automation, networking, security(可以设置SA), metadata, features)
  • 对于Workload可以进行设置和deploy。设置内容:application name, namespace, labels, cluster。这里namespace很重要,他是区分不同code的方式,比如一个node可以有很多版本的code,这里就是通过namespace区分的。
  • Service是attach pod也就是组织pod是,以及整合他们的IP为一个endpoint给用户,并且可以进行load balancer。通过对应用的expose进行设置。我认为这是一个设置对外端口的步骤,所以用暴露这个单词。
  • IP组织方式:Load Balancer IP(对外开放的接口)--> Cluster IP --> NodeIP
  • 删除cluster:gcloud container clusters delete [cluster-name] --zone [zone]
  • 命令行合集:
# enable api
gcloud services enable container.googleapis.com
# create cluster
gcloud container clusters create fancy-cluster --num-nodes 3
# create container
# enable cloud build api
gcloud services enable cloudbuild.googleapis.com
# create image
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
# deploy container to gke
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
# delete pod
kubectl delete pod/<POD_NAME>
# check the status of pod service and deployment
kubectl get all
# espose the service
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
# get the service info of cluster ip, external ip and ports
kubectl get service
# scale the deployment to 3
kubectl scale deployment monolith --replicas=3
# rebuild application image with a new version!
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
# deploy the new version without downtime
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

codeslabs:https://codelabs.developers.google.com/codelabs/cloud-deploy-website-on-gke#0

Cloud Run:

  • 事件驱动。web服务restAPI后端。轻量级数据转换。使用webhooks的业务工作流程。
  • image可以来自Container Registry。
  • 部署image后会有一个端口URL,通过requests请求就可以执行在image中部署的代码了。

APP Engine

  • HTTP/HTTPS应用程序开发平台。web开发和移动后端开发。
  • 每个项目只能有一个APP Engine。
  • 版本控制
  • split traffic可以进行canary test。
  • 可以缓存内置静态资源。
  • 可以开启本地开发服务器,一个命令即可。
  • 数据库的首选是NoSQL数据库Firestore。

codelabs:https://codelabs.developers.google.com/codelabs/cloud-app-engine-python3#0

Storage

Google Cloud Storage

  • 根据使用频率可以分几个classes:
  • Multi-regional - Part of Standard now
  • Regional - Part of Standard now
  • Nearline
  • Coldline
  • Archive
  • 可托管静态网页,和S3一样。
  • 可署名URL
  • 使用Service Account的私钥来为生成的 URL 生成加密签名
  • gcloud auth activate-service-account --key-file [path/to/key_file.json]
  • 需要的包:pip3 install pyopenssl
  • 创建url:gsutil signurl -d 10m -u gs://[bucket_name]/demo.txt
  • 文件操作
# create
gsutil mb gs://<bucketname>
# list
gsutil ls
# upload
gsutil mv ./demo.txt gs://[bucketname]
gsutil cp ./demo.txt gs://[bucketname]
# multithread upload
gsutil -m mv . gs://cloudstoragelab/
# upload bigfile by chunks
gsutil -o GSUTIL:parallel_composite_upload_component_size=10M mv [bigfile] gs://[bucketname]
  • 文件生命周期设置
# get
gsutil lifecycle get gs://cloudstoragelab/
# set rules by json file
gsutil lifecycle set rules.json gs://[bucket_name]

Bigtable

  • NoSQL
  • 每行中的单个值都被索引,该值称为行键。
  • Cloud Bigtable 非常适合以极低的延迟存储大量单键数据。比如IoT数据,动态实时查询,时间序列,图数据。
  • 它支持低延迟的高读写吞吐量,是MapReduce操作的理想数据源。

codelabs:https://codelabs.developers.google.com/codelabs/cloud-bigtable-intro-java#0

BigQuery

  • 经济高效的云数据仓库。关键词:分析
  • BigQuery Data Transfer Service支持从 Google SaaS 应用(Google Ads、Cloud Storage)、Amazon S3 和其他数据仓库(Teradata、Redshift)将数据传输到 BigQuery。
  • 可以使用 Cloud Dataflow pipeline、Cloud Dataproc jobs或直接使用 BigQuery 流提取 API 将流数据(例如日志或 IoT 设备数据)写入 BigQuery。
  • bq query --use_legacy_sql=false --dry_run 'SELECT * FROM bigquery-public-data.stackoverflow.posts_answers LIMIT 1000'其中的dry_run可以提示计算成本。
  • Partitioning and Clustering(提高查询效率,降低成本):分区是将数据分割成较小的独立单元,以提高性能和可扩展性,而聚类是将相关数据放在一起以提高查询性能和减少磁盘 I/O 操作。分区通常是水平的,而聚类则是垂直的。水平分区是按行分割数据,减少单个存储单元上的数据量,而垂直分区是按列分割数据,将相关的数据物理上放置在一起。
CREATE OR REPLACE TABLE `stackoverflow.questions_2018_clustered`
PARTITION BY
  DATE(creation_date)
CLUSTER BY
  tags AS
SELECT
  id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count, tags
FROM
  `bigquery-public-data.stackoverflow.posts_questions`
WHERE
  creation_date BETWEEN '2018-01-01' AND '2019-01-01';

Cloud SQL

  • 对标传统关系型数据库MySQL,PostgreSQL,SQLServer,提供这些数据库的托管服务
  • 使用 CloudSQL 作为 Drupal 或 WordPress 等平台的 CMS(内容管理服务)后端
  • Cloud SQL 非常适合轻松入门或提升和迁移现有 SQL 数据库。
  • 但对于现代云数据库,Cloud SQL 存在一些局限性。诸如水平扩展、区域方面的全球可用性等限制。 GCP 的 Cloud Spanner 服务解决了这些限制,并为解决方案提供了无需停机即可水平扩展的能力。总体而言,CloudSQL 的常见用例是将 SQL 数据库从本地提升并转移到云端。
  • 命令行合集:(也可以使用UI)
# create sql instance
gcloud sql instances create [instance-name]
# create database in the instance
gcloud sql databases create [database-name] --instance [instance-name]
# connect to CloudSQL / need activate CloudSQL Admin API
gcloud sql connect [project name] --user=root --quiet
# or user mysql client
mysql -h [IP-of-instance] -u [user] -p
# delete the instance
gcloud sql instances delete [instance-name]

Cloud Spanner

  • Modern cloud-based RDBMS-现代的基于云的关系型数据库。
  • 计算和存储分离,跨区复制的高可用性。(可以一个region多个zone,或者多个region)
  • 跨区域复制以提供高可用性。目前最多可对 4 个区域进行复制。
  • 自动分片sharding(水平分割)
  • 高可用性、全球范围内的强一致性、RDBMS和水平扩展。无需管理高可用性副本和只读副本。
  • 命令行合集:
gcloud spanner instances list
gcloud spanner databases list --instance [INSTANCE-ID]
gcloud spanner instances delete [Instance-ID]

Cloud Datastore升级到了Firestore

  • 自动扩展、高性能和易于应用程序开发而构建的 NoSQL 数据库。
  • Firestore更像是document数据库,collection group适合应用开发后台数据库
  • ACID原子属性交易事物,高读写操作。
  • 关键词:key-value pair、NoSQL database、之类的关键字时App Engine or app,SQL like query language
  • 独特术语:
  • Kind - > Table
  • Entity - > row
  • Property - > Column
  • Key - > Primary key
  • Firebase 存储在幕后使用storage bucket。所以,它是带有移动SDK(移动软件开发工具包)的云存储。

Networking

VPC

  • 谷歌的VPC是全球资源。子网是区域资源。VPC就像是谷歌里的一个大城市,子网就像是街区,里面的instance就像是大楼。
  • VPC设置的IP分配有自动模式和自定义模型。

Load Balancer

  • 三种类型:HTTPS Load Balancer,TCP Load Balancer,UDP Load Balancer.
  • 根据流量来源,来决定是内部internal还是外部external的HTTPSLB
  • TCP-LB提供单区域或多区域的LB
  • 要求SSL offload的情况使用SSL Proxy
  • 不要求SSL但是需要全球traffic或者IPv6的情况使用TCP Proxy

Cloud DNS

  • 低延迟,高可用性
  • 域名系统
  • public&private

Event trigger

Cloud Functions

  • 最高memory:4GB
  • 最长执行time:9minites
  • 支持语言:Python,Java,Go,Node.js
  • usecase:文件处理,视频处理,小型微服务移动后端

codelabs:https://codelabs.developers.google.com/codelabs/cloud-starting-cloudfunctions#0

Cloud PubSub

  • 可以将 PubSub 视为 Apache Kafka 的替代方案,后者是开源替代方案。
  • Publisher > Topic > Message Storage > Subscription > Subscriber
  • delivery方式:push / pull
  • 关键词:Capture Streaming data、Pubsub、Decoupled(解藕),Asynchronous application architecture(异步应用构架)

Monitoring and Logging

Cloud Operations

Monitoring

Logging

  • Cloud Operations:Monitoring,Dashboard,Metrics Explorer,Alerting,通过group可以整合资源管理,通过setting可以增加pj和account统一管理。其他还有logging,error report,trace服务。这里讲Logging。
  • 通过Cloud Logging API和Log Router存储和整合。
  • Log viewer 功能可以query log
  • Logs dashboard
  • Logs-based metrics
  • Log Storage:50GB/项目免费配额,审计日志存储在单独的存储桶中,最长保留期为 400 天。对于其余日志,保留期限为 30 天。可以为此创建警报,以便一旦超过 50 GB 就用排除项目删除不必要的日志。

Trace

  • 追踪端点延迟
  • codelabs:https://codelabs.developers.google.com/codelabs/cloud-function-logs-traces#6

Profiler

  • Cloud Profiler 是一种统计性、低开销的分析器,可以持续从生产应用程序收集 CPU 使用情况和内存分配信息。
  • 根据不同的编程语言支持不同的分析内容,似乎Go的最多
  • codelabs:https://codelabs.developers.google.com/codelabs/cloud-profiler#0
  • 这中间有很多模拟程序,很有趣

Debugger:实时调试云应用程序,无需重新启动或停止

Error Reporting:自动收集和分析错误和异常

其他服务

  • 价格计算服务:Pricing Calculator:keyword:updated prices, latest prices, cost estimation
  • CI/CD:Deployment Manager
  • yaml文件整合资源
  • 一个resource代表一个API resource
  • Manifest文件是当前部署的只读主文件。它包含用户定义的资源和配置,以及由部署管理器创建的附加资源,以支持有用资源的创建。
  • Cloud Marketplace:Google Cloud Platform的一键部署解决方案。您可以从云市场部署任何流行的软件、CMS、工具或 API。 比如WordPress 是一个非常流行的内容管理系统。

SSL offload SSL卸载

SSL offload(SSL 卸载)是一种网络安全技术,旨在减轻服务器负载和提高性能。在 SSL offload 中,SSL(安全套接层)和 TLS(传输层安全)的加密和解密操作从服务器转移到专门的硬件设备或者专用的 SSL 加速器中进行处理。

通常情况下,当客户端与服务器之间建立安全连接时,会使用 SSL/TLS 协议对通信进行加密。加密和解密操作对服务器的 CPU 和内存等资源造成了较大的负担,特别是在高负载情况下。为了减轻服务器的负载并提高性能,可以使用 SSL offload 技术。

SSL offload 的工作原理如下:

  1. 客户端发起连接请求时,请求通过负载均衡器或者专用的硬件设备(如 SSL 加速器)。
  2. 负载均衡器或者 SSL 加速器接收到连接请求后,会负责 SSL 握手过程中的密钥交换、加密和解密操作。
  3. 一旦安全连接建立完成,负载均衡器或者 SSL 加速器将未加密的请求转发到后端的服务器上。
  4. 后端的服务器只需要处理未加密的请求,不需要负责 SSL 握手和加解密操作,从而减轻了服务器的负载。

使用 SSL offload 技术的主要优势包括:

  • 降低服务器负载:通过将 SSL 加解密操作从服务器转移到专用的硬件设备或者 SSL 加速器中,可以减轻服务器的负载,提高服务器的处理性能和吞吐量。
  • 提高性能:减轻了服务器的负载后,可以更有效地利用服务器资源,提高应用程序的性能和响应速度。
  • 简化管理:SSL offload 技术可以集中管理 SSL/TLS 证书和密钥,简化了 SSL/TLS 配置和管理的复杂性。

总的来说,SSL offload 技术是一种有效的网络安全技术,可以帮助提高服务器的性能和可用性,并简化 SSL/TLS 配置和管理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)

1. HarmonyOS Style 、 Extend、自定义扩展&#xff08;AttributeModifier、AttributeUpdater&#xff09; Styles装饰器&#xff1a;定义组件重用样式   ;Extend装饰器&#xff1a;定义扩展组件样式   自定义扩展&#xff1a;AttributeModifier、AttributeUpdater 1.1. 区…

排序(一)插入排序,希尔排序,选择排序,堆排序,冒泡排序

目录 一.排序 1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 二.整体代码 1.Sort.h 2.Sort.c 3.test.c 一.排序 1.插入排序 插入排序基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止…

【UE5.3 Cesium for Unreal】编译GlobePawn

目录 前言 效果 步骤 一、下载所需文件 二、下载CesiumForUnreal插件 三、处理下载的文件 四、修改代码 “CesiumForUnreal.uplugin”部分 “CesiumEditor.cpp”部分 “CesiumEditor.h”部分 “CesiumPanel.cpp”部分 “IonQuickAddPanel.cpp”部分 “IonQuickAd…

线程的理解及基本操作

目录 一、线程的理解 &#xff08;1&#xff09;什么是线程呢&#xff1f; &#xff08;2&#xff09;线程的优缺点及异常 二、线程的基本操作 &#xff08;1&#xff09;创建一个新的进程 &#xff08;2&#xff09;获取线程id &#xff08;3&#xff09;线程终止 &…

SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能

文章目录 一、RabbitMq 下载安装二、开发步骤&#xff1a;1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网&#xff1a;https://www.rabbitmq.com/docs 二、开发步骤&#xff1a;…

AC的旁挂和直连的方式的使用场景

AC组网架构 AC中文含义为无线接入控制器&#xff0c;主要功能是可以批量配置和管理无线AP。经常工作在大中型园区网络、企业办公网络等应用场景。 下面来介绍一下无线AC的几种经典架构。 一1旁挂式组网 旁挂式组网顾名思义&#xff0c;就是旁挂在网络中&#xff0c;对AP来进行…

view design之table自定义单元格模版

View Design之table自定义单元格模版 在 columns 的某列声明 slot 后&#xff0c;就可以在 Table 的 slot 中使用参数。 slot 的参数有 3 个&#xff1a;当前行数据 row&#xff0c;当前列数据 column&#xff0c;当前行序号 index。 完整示例 <template><Table …

乘云而上,OceanBase再越山峰

一座山峰都是一个挑战&#xff0c;每一次攀登都是一次超越。 商业数据库时代&#xff0c;面对国外数据库巨头这座大山&#xff0c;实现市场突破一直都是中国数据库产业多年夙愿&#xff0c;而OceanBase在金融核心系统等领域的攻坚克难&#xff0c;为产业突破交出一副令人信服的…

在Ubuntu(Linux)系统下安装Anaconda3

1、到官网下载Linux版本的包&#xff1a;https://www.anaconda.com/download/success 2、到所在目录中&#xff0c;运行下方命令&#xff0c;Anaconda3-2024.06-1-Linux-x86_64.sh是下载包的名字 bash Anaconda3-2024.06-1-Linux-x86_64.sh输入yes确定 3、输入~/anaconda3/b…

MySQL数据库集群-PXC方案视频教程下载 MySQL架构设计及常见业务处理

MySQL数据库集群-PXC方案视频教程下载 MySQL架构设计及常见业务处理30套数据库系列Mysql/SQLServer/Redis/Mongodb/Nosql精讲训练营项目实战&#xff0c;数据库设计&#xff0c;架构设计&#xff0c;性能管理&#xff0c;集群搭建&#xff0c;查询优化&#xff0c;索引优化&…

Spring Boot植物健康系统:智慧农业的新趋势

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

经常聊架构模式,设计模式,编程模式,也谈谈“反模式”

在软件工程中&#xff0c;反模式&#xff08;Anti-Pattern&#xff09;是指那些表面上看起来是一个解决方案&#xff0c;但实际上会导致更多问题或者效果不佳的常见实践。它们可能在某些情况下被广泛使用&#xff0c;但实际上是无效甚至产生反效果的。 文档中并没有详细描述具…

四、Prompt工程——简单应用

Prompt工程——简单应用 一、提示工程&#xff08;Prompt Engineering&#xff09;二、Prompt基本法则三、Prompt 调优四、简单的例子文本总结文本判断文本提取文本转化——翻译文本转化——语气 更多结语 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程也…

【华为HCIP实战课程二十五】中间到中间系统协议IS-IS配置实战续系统ID区域ID,网络工程师

上章简单讲解了ISIS基本配置,本章继续详细讲解ISIS配置及实施 IS-IS配置拓扑 1、R1进行配置IS-IS [R1]display current-configuration configuration isis isis 1 network-entity 49.0124.1111.1111.1111.00 //配置NET地址,由三部分组成,区域ID、系统ID和固定的SEL 00 i…

python道格拉斯算法的实现

废话不多说 直接开干 需要用到模块 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple math #对浮点数的数学运算函数 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple shapely #提供几何形状的操作和分析&#xff0c;如交集、并集、差集等 pip install -i …

如何保证自动化测试的可信性?

对于自动化测试的可信性&#xff0c;这是一个与自动化测试ROI&#xff08;投资回报率&#xff09;紧密关联的关键问题。自动化测试的可信性&#xff0c;不仅关乎自动化的持续性和价值&#xff0c;更重要的是它是否能够准确、真实地反映产品的质量状态。 举例来说&#xff0c;假…

鸿蒙开发-this指向+样式复用+代码调试

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;鸿蒙开发篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来鸿蒙开发篇专栏内容:鸿蒙开发-this指向样式复用代码调试 目录 一、this指向 1.原生 鸿蒙 this使用细节 -…

windows下使用nvm进行多版本nodejs管理

目录 一&#xff1a;背景 二&#xff1a;nvm的介绍 三&#xff1a;环境切换使用 一&#xff1a;背景 最近在开发node js的项目&#xff0c;其中一个项目的前端和后台使用了两个node版本&#xff0c;因此需要不同的环境配置来进行开发任务&#xff0c;刚好nvm这个插件可以实现…

vue使用高德地图实现轨迹显隐

<template><div><el-button type"primary" click"pathShowOrHide">轨迹显/隐</el-button><div id"container" /></div> </template><script> import AMapLoader from amap/amap-jsapi-loaderex…

Linux基础环境搭建(CentOS7)- 安装Scala和Spark

#Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装Scala和Spark Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装Scala和Spark 大家注意以下的环境搭建版本号&#xff0c;如果版本不匹配有可能出现问题&#xff01;&#xff08;spark不要下2.4版本的 会报错…