python if __name == __main__的详解
前言对于python来说,我们经常会见到一行代码:
12if __name__ == "__main__": balabala
那这句话是啥意思呢?
正文首先要明白__name__是python当中的一个属性,代表现在主模块的引用。
如果调用的是本模块(python文件相当于模块),那么默认的name就是_main__了。如果不是的话,name就会设置为引用模块的名称。
例如我有两个py文件,cal.py和hello.py,其中hello.py会引用cal.py。
1234567891011#cal.pydef return_max(num1, num2): if num1 >= num2: return num1 else: return num2num = return_max(3,5)print(num)print(__name__) #显示为__main__
1234#hello.pyimport calprint(cal.__name__) #显示为cal
按照上面的说法,这时如果我们运行hello ...
Mac mini使用iphone摄像头
前言前段时间我将自己的Mac换成了M1芯片的Mac Mini,由于是个裸机,除了主机啥也没有,所以我都是需要自己diy配件的。键盘鼠标音响耳机啥的都好说,但是摄像头捏?
正言之前就看到苹果的MacOS 13推出了一个功能,可以使用自己的iphone做为外置摄像头。
我试了很多次,姿势都不对,就很困惑。
后来查阅了很多资料之后,发现要满足以下条件:
电脑和手机使用同一个apple id
手机开启接力功能
手机锁屏横放,后置摄像头对着自己(重要)
调整合理角度,打开相关软件即可使用
已测试过的软件有:Facetime、Photo Booth、QuickTime Player、微信,配置正确且姿势合适即可调出摄像头使用。
后记手机成像效果好于Mac摄像头,如果能持续使用的话都是不错的。
ACP云原生容器工程师 - 应用案例
集群规划构建容器部署中的ECS选型
在创建Kubernetes实例时,物理部署实体的选型对上层应用的性能起着非常大的影响。通过大型客户在云容器部署实践的统计,很大一部分应用在容器部署中都没有采用正确的部署方式。
容器集群的高可靠配置
在容器集群部署规划中,除了ECS选型之外,哎呦很多配置方式会直接影响集群的可靠性,可总结为以下5点:
消灭SPOF:SPOF单点故障是高可靠性大敌,因此尽量直接使用Pod部署
单进程容器:单进程容器便于容器内进行监控以及容器重启操作
配置探活:通过探活和重启策略的配置监控容器内进程的健康状态
资源声明:Pod的资源声明可以保证K8s对Node资源的有效分配
多可用区:通过多可用区避免物理故障
容器节点操作系统选择
Alibaba Cloud Linux2是新一代阿里云Linux操作系统,为云上应用程序提供安全、稳定、高性能的定制化运行环境,并针对云基础设施进行了深度优化,并提供更好的运行时体验
网络规划
在创建K8s集群时,根据网络插件的不同,需要指定专有网络VPC、虚拟交换机、Pod网络CIDR和Service CIDR,并做好 ...
ACP云原生容器工程师 - ACK@Edge边缘容器
边缘计算概述
核心概念
分布式架构
靠近物或数据源头的一侧
就近提供服务
计算、存储、网络一体化平台
技术特性
临近性、低时延、高带宽
分布式、位置认知、数据入口
服务特点
本地化、自组织
可定义、可调度
标准开放、安全
计算在边缘终端,仅将计算结果送至中心处
适用于实时服务、安全与隐私保护等场景
边缘计算 - 应用
应用场景
技术场景
5G、物联网、工业物联网
人工智能、AR/VR、云边协同
业务场景
智能制造
智慧城市
互动直播
车联网
发展趋势
超过500亿的终端设备联网
超过40%数据在边缘侧计算
超过90%的企业在边缘部署应用
时长规模预计到2025年超157亿美元
边缘计算 - 与云原生的融合
边缘计算 + 云原生
以Kubernetes为容器应用编排的标准
在任何基础设施上提供和云上一致的功能和体验
元-边-端一体化的应用分发
大规模应用交付、运维、管控的诉求
安全的工作负载运行环境
边缘服务治理
网络自恢复能力和兼容性
异构资源融合
边缘容器
原生K ...
ACP云原生容器工程师 - ACR进阶
DevOpsDevOps是近年来非常火的概念,是一种重视开发人员和运维人员之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加快捷、频繁和可靠。
CD的特点:自动化、持续、有效反馈
CD的主要问题:
环境一致性问题
版本管理问题
通过容器镜像实现DevOps阿里云容器服务
实现步骤通过容器镜像实现DevOps
利用ACR搭建DevOps构建镜像仓库
在镜像仓库页面单击创建镜像仓库
在创建镜像仓库对话框中,设置命名空间、仓库名称、摘要和仓库类型
在设置代码源对话框中,选择已绑定的代码源,然后单击闯将镜像仓库
设置构建规则
在镜像仓库页面单击目标仓库右侧操作列中的管理
安吉左侧导航栏中的构建,在构建规则设置区域的左侧单击添加规则
在添加构建规则对话框中设置构建规则,然后单击确认
构建镜像仓库
手工构建
自动构建
绑定容器服务触发器
镜像信息页面,单击左侧操作栏中的触发器,新建一个触发器,病填入触发器的名称、URL、触发方式
使用免密组件拉取容器镜像背景信息免密组件通过读取ACK集群中的Ku ...
ACP云原生容器工程师 - ACR概述与使用
容器镜像基本概念
阿里云容器镜像产品ACR基本介绍
容器镜像服务(ACR)
提供云原生资产的安全托管和全生命周期管理
支持多场景下镜像的高效分发,与容器服务ACK无缝集成,大早云原生应用一站式解决方案
与阿里云容器服务、CodePipeline深度集成,自动完成从代码提交到应用部署的DevOps完整流程
ACR默认实例(个人版)
容器镜像服务ACR默认实例提供基础的容器镜像服务
ACR企业版
使用场景
业务全球地域部署
业务大规模部署
容器化DevSecOps提效
搬站上云
ACR企业版和个人版对比
主要区别在于企业版支持:
多样OCI制品托管
加速应用分发
多维度安全保障
提效云原生应用交付
ACR产品优势和应用场景特点总结
简单易用
无需自行搭建运维,一键创建镜像仓库
支持多地域,提供稳定快速的镜像上传、下载服务
安全可控
完善的镜像权限管理体系,保证镜像的分享安全、团队的协作便利
提供镜像安全扫描功能,保证镜像漏洞可识别,漏洞级别可提示
无缝集成
整合容器服务,实现新应用镜像生成后的持续部署
整合云Code、 ...
ACP云原生容器工程师 - ASM服务网格使用
ASM入门指引
部署ASM的基础环境
阿里云ECS弹性计算云服务器
阿里云Kubernetes集群(ACK/ASK)
部署ASM的主要步骤
创建一个服务网格ASM实例
添加一个Kubernetes集群到服务网格ASM实例中
为服务网格ASM实例中的集群部署入口网关
将应用部署到上述服务网格ASM实例的ACK Kubernetes集群中
为服务网格ASM实例定义虚拟服务和istio网关
部署过程创建ASM实例
前提条件
已开通以下服务,服务网格ASM、容器服务、弹性伸缩服务、访问控制服务、链路追踪服务
已获得以下角色授权:AliyunServiceMeshDefaultRole、AliyunCSClusterRole、AliyunCSMagedKubernetesRole
背景信息
创建ASM可能会进行如下操作:
创建安全组
创建VPC路由规则
创建弹性公网IP
创建专有网的负载均衡
暴露6443端口
暴露15011端口
收集被托管管控组件的日志信息
基本步骤
登录ASM控制台
在左侧导航栏,选择服务网格 - ...
ACP云原生容器工程师 - ASM服务网格概述
概述技术概要第一代服务网格
服务网格
基础设施层
微服务通信
保证请求可靠传递
隐藏通信细节
减少框架耦合
预言无关
数据平面
边车模式
通信代理服务
独立、平行、同步、透明
控制平面
集中式控制面板
统一运维管理
此时的服务网格面临的问题:
开发者需要更多地关注框架本身
框架本身只支持一种或多种特定语言,通用性并不好
框架耦合过大,不升级对服务无法透明
第二代服务网格
服务网格平台istio
连接
通信撸油
流量管理
安全
加密通信
身份验证
控制
自动策略
分布式资源调配
观察
量度指标
日志
追踪
ASM是对istio进行优化开发的产品
阿里云服务网格
统一管理微服务应用流量,兼容istio的托管式平台
通过流量控制、网格观测以及服务间通信安全等功能,服务网格可以全方位简化服务治理
在运行异构计算基础设施上的服务提供统一的管理能力
适用于Kubernetes集群、Serverless Kubernetes集群、ECS虚拟机以及自建集群
与阿里云产品深度融合,历经数个 ...
ACP云原生容器工程师 - ASK应用场景
ASK在线业务弹性伸缩的概况弹性伸缩特性
特性
根据业务需求和策略
经济地自动调整弹性计算资源
维度
调度层弹性:修改负载的调度容量变化
资源层弹性:补充ECI和集群容量规划
场景
在线业务弹性
大规模计算训练
深度学习或共享GPU的训练与推理
定时周期性负载变化
容器水平伸缩
容器水平伸缩制作步骤
查看应用详情,单击容器组水平伸缩,可在部署的详情中查看伸缩组信息
在实际使用环境中,应用汇根据CPU负载进行伸缩
容器定时伸缩
kubernetes-cronhpa-controller: 按照类似Crontab的策略,定时对容器服务进行扩缩容
kubernetes-cronhpa-controller包括三项参数
scaleTargetRef: 制定扩缩容对象
excludeDates: 日期数组,分、时、日、月、周、要做的事情
jobs: 支持在一个spec中设定多个cronhpa任务,其中name为必填项
kubernetes-cronhpa-controller组件安装
指标容器水平伸缩
alibaba-cloud- ...
ACP云原生容器工程师 - ASK弹性伸缩管理
概述背景介绍
弹性伸缩式ASK上被广泛采用的功能,典型的场景包含在线业务弹性、大规模计算训练、深度学习GPU或共享GPU的训练与推理、定时周期负载变化等
弹性层次包括调度层和资源层
容器水平伸缩HPA
通过容器服务控制台创建HPA应用
在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
在工作负载 - 无状态页面中,单击使用镜像创建
在应用基本信息页面填写应用的名称,设置应用部署集群和命名空间,单击下一步
在高级设置页的访问设置区域,单击服务的创建,设置服务的相关信息
在高级设置页面中容器组水平伸缩的开启,设置伸缩的条件和配置
单击右下角的创建,一个支持HPA的Deployment就已经创建完毕
验证结果
在工作负载 - 无状态中单击应用名称或操作列的详情,单击容器伸缩,在详情中查看指标伸缩信息
容器定时伸缩CronHPA
通过容器服务控制台创建HPA应用
创建一个新的Deployment并设置相关信息
在高级设置页选中定时伸缩的开启
设置定时任务名称、目标副本数、调度周期
单击右下角的创建,一个支持定时伸缩的Deployment ...
