Go语言入门基础
内建变量
- bool
- string
- (u)int[8/16/32/64],uintptr
- byte
- rune go的char类型,长度32位
- float[32/64]
- complex[64/128] 复数类型
变量定义
1 | // 1 单个定义 |
常量与枚举
1 | // 1 单个定义 |
1 | // 1 单个定义 |
1 | // 1 单个定义 |
命令 | 描述 |
---|---|
create/apply | 从文件或stdin创建资源 |
expose | 为deployment、pod创建service |
run | 在集群中运行指定的镜像 |
set | 在对象上设置一个specific |
get | 最基本的查询命令 可以get一切资源信息 |
explain | 查看资源定义,如 kubectl explain replicaset |
edit | 使用系统编辑器编辑资源 kubectl edit deploy/foo |
delete | 删除指定资源,支持文件名、资源名、label selector。kubectl delete po -l foo=bar |
命令 | 描述 |
---|---|
rollout | Deployment、DaemonSet的升级过程管理 查看状态、操作历史、暂停升级、恢复升级、回滚 |
rolling-update | 客户端滚动升级,仅限ReplicationController |
scale | 修改Deployment、ReplicaSet、ReplicationController,Job的实例数 |
autoscale | 为Deployment、ReplicaSet、ReplicationController配置自动伸缩规则,依赖heapster和hpa |
Istio通过专门的服务端组件,提供一种扩展机制来手机服务运行的遥测数据和服务间的访问,执行一定的策略。
采集数据、存储数据、检索数据
通过Sidecar Inbound和Outbound都想Mixer上报数据。Mixer提供对应APM的Adapter。解耦Sidecar和APM的通讯,由Mixer来集中对接。
每个插件都是一个Adapter,Mixer通过它们与不同的基础设施后端连接。提供日志、监控、配额、ACL检查等功能。
因为每个基础设施后端都有不同的接口和操作,所以需要自定义代码进行处理,这就是Mixer的Adapter机制。
Mixer通过Protobuf格式定义Adapter的配置。
Envoy上报的数据istio中称为属性 attribute。属性是一小块数据,描述服务请求或者服务运行环境的信息。
属性列表: https://istio.io/docs/reference/config/policy-and-telemetry/attribute-vocabulary/
属性表达式: https://istio.io/docs/reference/config/policy-and-telemetry/expression-language/
istio主要通过handler、instance、rule这三个资源对象来描述Adapter的配置。
Handler来描述Adapters及其配置。Mixer每个Adapter都需要一些配置才能运行。不同额Adapter有不同的配置,比如服务后端信息之类的。
如果Adapter看做是一个模板的定义的话,Handler就是这个模板的实现。
1 | curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.5.2/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ |
Install kubectl on Linux
1 | curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl &&\ |
常用到,记录一下
1 | wget https://www.php.net/distributions/php-7.2.25.tar.gz |
1 | yum install -y systemd-devel libpng-devel openjpeg-devel libxml2-devel curl-devel libicu-devel libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel |
istio流量治理主要有以下流程
控制面:
数据面:
主要用户服务间访问。通过它可以在多个服务实例找到一个合适的后端把请求转发过去。
Pilot维护服务发现数据,下发给Envoy,Envoy根据负载均衡策略选择一个实例转发请求。
istio的熔断控制无需侵入代码,有别与hystrix。
常见的熔断器状态流转
序号 | 初始状态 | 条件 | 迁移状态 |
---|---|---|---|
1 | 熔断关闭 | 请求成功 | 熔断关闭 |
2 | 熔断关闭 | 请求失败,调用失败次数自增,不超过阀值 | 熔断关闭 |
3 | 熔断关闭 | 请求失败,调用失败次数自增,超过阀值 | 熔断开启 |
4 | 熔断开启 | 熔断器维护计时器,计时未到 | 熔断开启 |
5 | 熔断开启 | 熔断器维护计时器,计时到了 | 熔断半开启 |
6 | 熔断半开启 | 访问成功 | 熔断关闭 |
7 | 熔断半开启 | 访问失败 | 熔断开启 |
有些故障是不会经常触发的,以前模拟故障通常需要修改代码来模拟。而Istio也提供了这个能力。
你叫像AB测试发布,先让小部分用户尝试新版本。观察一段时间后决定使用哪个版本。
Istio主要架构分为控制面和数据面两部分。
数据面: Envoy
控制面: Pilot
、Mixer
、Citadel
由istio服务、服务版本、服务实例几个对象构成
name: <protocol>[-<suffix>],协议支持常用的服务协议,如mysql、redis,如无指定,默认为tcp协议
pod需要关联到服务
区分版本
k8s只要满足上文提到的服务模型约束,就可以转为 istio 的服务并配置规则进行流量治理。如最小的k8s模型加上端口命名
k8s主体是 workload,istio 的对象主体是 service,没有访问方式的workload 不是 istio 治理对象。Kubernetes 的 Service 定义 就是 Istio 服务 的 元 数据。
通过deployment的app: service-name
来关联服务。 通过version: v<version>
标签来区分服务不同版本。 可以根据这个实现灰度发布等功能。
Istio 的 ServiceInstance 主要包括 Endpoint、 Service、 Labels、 AvailabilityZone 和 ServiceAccount 等属性, Endpoint 是其中最主要 的属性,表示这个实例对应的网络后端( ip: port), Service 表示这个服务 实例归属的服务。
主要用于运营部使用h5图片,又想自定义标题. 但是时不时找我很烦,就搞了这个东西给她用。nodejs还挺好玩的。
原理,使用表单提交数据. 将数据用ejs渲染到模板上,然后保存成html.
安全码
:是防止恶意提交做的一个小验证,写死在 routes/index.js:13
xxx123
运行 npm run start
默认端口是4001
pm2运行 pm2 start npm --name "h5-generator" -- run start
删除任务 pm2 delete h5-generator
生成的文件目录在 ./public/html
由于用在www.xxx.com
所以我nginx配置如下
1 | # 访问程序 |
h5生成器页面: https://www.xxx.com/generate/h5
生成的文件访问地址: https://www.xxx.com/h5/生成文件名.html
主要代码
1 | var express = require('express'); |