python文件操作
open()函数
要想读取文件(如txt、csv等),第一步要用open()内建函数打开文件,它会返回一个文件对象,这个对象 拥有read()、write()、close()等方法。
语法:open(file, mode=‘r’, encoding=None)
file:打开的文件路径
mode(可选):打开文件的模式,如只读、追加、写入等
r:只读(默认)
w:只写
a:在原有内容的基础上追加内容(末尾)
w+:读写
如果需要以字节(二进制)形式读取文件,只需要在mode值追加‘b’即可,例如wb
文件对象操作
f = open(‘test.txt’)
示例:遍历打印每一行
f = open('computer.txt') for line in f: print(line.strip('\n')) # 去掉换行符
with语句
with语句:不管在处理文件过程中是否发生异常,都能保证 with 语句 执行完毕后已经关闭了打开的文件句柄。
示例:
with open("computer.txt" ...
python流程控制
条件判断
语法: if <表达式>: <代码块> elif <表达式>: <代码块> else: <代码块>
条件判断:单分支
示例:判断是否成年 age = int(input("请输入你的年龄: ")) if age > 18: print("恭喜,你已经成年!") else: print("抱歉,你还未成年!") 简写,也成三目表达式: "恭喜,你已经成年!" if age > 18 else "抱歉,你还未成年!"
条件判断:多分支
示例:根据人的年龄段划分 age = int(input("请输入你的年龄: ")) if age < 7 : print("儿童") elif age >= 7 and age < 17: print("少年") elif age > ...
python操作符
操作符有什么用?
操作符:一个特定的符号,用它与其他数据类型连接起来组成一个 表达式。常用于条件判断,根据表达式返回True/False采取动作。
比较操作符
比较操作符:比较两边值
逻辑操作符
逻辑操作符:判断条件逻辑
成员操作符
成员操作符:判断某个元素是否在数据类型里
身份操作符
身份操作符:判断两个对象是否相等
python数据类型
数据类型
在Python中,组合数据类型有:列表(list)、元组(tuple)、字典(dict)、集合(set)。 组合数据类型:为了方便处理数据,把一些同类数据放到一起,是一组数据的集合。
列表
列表(List):是一个序列的数据结构。
什么是序列? 是指它成员都是有序排列,并且可以通过索引访问一个或多个成员。
格式:名称 = [“元素1”,“元素2”,…]
列表:基本操作
定义列表:computer = [“主机”,“显示器”,“鼠标”,“键盘”]
列表:切片
与字符串切片使用方法一样。
语法格式:list[start:end:step]
示例:
截取第1个元素:computer[0]
截取第1个字符到第5个元素:computer[0:5]
截取第1个到倒数第2个元素:computer[0:-1]
截取最后1个元素:computer[-1]
列表:清空列表
重新初始化列表
computer = []
del语句删除列表
del computer
元组
元组(Tuple):与列表类似,也是一个序列数据结构。主要区别在于元组中的元素不能修改。
格式:名称 = (“元素1”,“元素 ...
python字符串
字符串格式化输出
name = "zhangsan" age = 30# 方法1 print("我的名字是%s,今年%s岁了。" % (name, age)) # 方法2 print(f"我的名字是{name},今年{age}岁了。")
字符串拼接
使用“+”可以对多个字符串进行拼接。
示例: str1 = "hello" str2 = "world"print(str1 + str2)
其他方式:
格式化输出
逗号
join() 字符串的内置函数,将序列中的元素拼接成一个字符串。后面讲到
获取字符串长度
len()内建函数:计算字符串的长度。
语法格式:len(string)
字符串切片
切片:截取字符串中的某部分内容
语法格式:string[start:end:step]
string 要切片的字符串
start 要切片的第一个字符的索引(包括该字符),如果不指定默认为0
end 要切片的最后一个字符的索引(不包括该 ...
python基础知识
Python介绍
Python是一种面向对象、解释型、多用途设计语言,具有很丰富和强大的库,语法简洁,强制用空格作为语法 缩进,能够完成快速项目开发,相比传统语言开发效率提高数倍。
应用领域:系统运维、网站开发、科学计算、爬虫、人工智能等
Web框架:
Django(最流行)
Flask(轻量级)
Tornado(异步)
为什么选择Python?
语法简单,易于学习
广泛的标准库,适合快速开发
跨平台,基本所有操作系统都能运行
是DevOps开发领域应用最广泛的语言
学习Python编程工具:
Python官方文档:https://www.python.org/doc
iPython:升级版的python解释器
PyCharm:一款功能强大的Python集成开发环境
Sublime:代码编辑器
Jupyter notebook:在网页中编写和运行代码
Pip:Python模块安装工具
Python安装
Linux安装:yum install python36 -y 一条命令完成安装。
或者编译安装指定版本:https:// ...
微服务治理istio初探下
Istio 流量管理核心资源
核心资源:
VirtualService(虚拟服务)
DestinationRule(目标规则)
Gateway(网关)
ServiceEntry(服务入口)
VirtualService
VirtualService(虚拟服务):
定义路由规则
描述满足条件的请求去哪里
kubectl get vs # 查看已创建的虚拟服务
DestinationRule
DestinationRule(目标规则):定义虚拟服务路由目标地址的 真实地址,即子集(subset),支持多种负载均衡策略:
随机
权重
最小请求数
Gateway
Gateway(网关):为网格内服务对外访问入口,管理进出网格的流量,根据流入流出方向分为:
IngressGateway:接收外部访问,并将流量转发到网格内的服务。
EgressGateway:网格内服务访问外部应用。
Gateway(网关)与Kubernetes Ingress有什么区别?
Kubernetes Ingress与Getaway都是用于为集群内服务提 ...
微服务治理istio初探上
Service Mesh
Service Mesh 的中文译为 “服务网格” ,是一个用于处理服务 和服务之间通信的基础设施层,它负责为构建复杂的云原生应用 传递可靠的网络请求,并为服务通信实现了微服务所需的基本组 件功能,例如服务发现、负载均衡、监控、流量管理、访问控制 等。在实践中,服务网格通常实现为一组和应用程序部署在一起 的轻量级的网络代理,但对应用程序来说是透明的。
右图,绿色方块为应用服务,蓝色方块为 Sidecar Proxy,应用 服务之间通过 Sidecar Proxy 进行通信,整个服务通信形成图中 的蓝色网络连线,图中所有蓝色部分就形成一个网络,这个就是 服务网格名字的由来。
Service Mesh特点
Service Mesh有以下特点:
治理能力独立(Sidecar)
应用程序无感知
服务通信的基础设施层
解耦应用程序的重试/超时、监控、追踪和服务发现
Istio概述
Isito是Service Mesh的产品化落地,是目前最受欢迎的服务网格,功能丰富、成熟度高。
Linkerd是世界上第一个服务网格类的产品。
连接(Connec ...
基于Jenkins构建微服务发布平台
发布流程设计
准备基础环境:Harbor、Gitlab、Jenkins
Harbor镜像仓库
项目地址:https://github.com/goharbor/harbor
1.安装docker与docker-compose
2.解压离线包部署
# tar zxvf harbor-offline-installer-v2.0.0.tgz# cd harbor# cp harbor.yml.tmpl harbor.yml# vi harbor.ymlhostname: 192.168.0.14https: # 先注释https相关配置harbor_admin_password: Harbor12345# ./prepare# ./install.sh --with-chartmuseum# docker-compose ps
在Jenkins主机配置Docker可信任,如果是HTTPS需要拷贝证书
由于habor未配置https,还需要在docker配置可信任。
# cat /etc/docker/daemon.json {"registry-mirrors ...
微服务容器化迁移
从运维角度看微服务
单体应用 vs 微服务
特点:
易于部署
易于测试
不足:
代码膨胀,难以维护
构建、部署成本大
新人上手难
微服务特点
服务组件化
每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署。
技术栈灵活
约定通信方式,使得服务本身功能实现对技术要求不再那么敏感。
独立部署
每个微服务独立部署,加快部署速度,方便扩展。
扩展性强
每个微服务可以部署多个,并且有负载均衡能力。
独立数据
每个微服务有独立的基本组件,例如数据库、缓存等。
微服务不足
沟通成本
数据一致性
运维成本:部署、监控
内部架构复杂性
大量服务治理
Java微服务框架
Spring Boot:快速开发微服务的框架
Spring Cloud:基于SpringBoot实现的一个完整的微服务解决方案
Dubbo:阿里巴巴开源的微服务治理框架
在K8s平台部署微服务考虑的问题
常见微服务架构图
对微服务项目架构理解
微服务间如何通信?REST API,RPC,MQ
微服务如何发现彼此?注册中心
组件之间怎么个调 ...