深入理解 Python 元类

这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关 Python OOP 编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。于是 e-satis 同学给出了神一般的回复,该回复获得了 985 点的赞同点数,更有人评论说这段回复应该加入到 Python 的官方文档中去。

[阅读全文]

21天入门机器学习

小白入行 AI 的必修课

21天入门机器学习

AI 时代,大家都对各种人工智能岗位充满好奇和憧憬,但普遍都不了解,各个岗位具体是做什么工作的。在这里给大家打个比喻,虽然不太恰当,但非常形象!

  • 做算法是屠龙,仗剑江湖,天外飞仙;
  • 做工程是狩猎,跃马奔腾,纵酒狂歌;
  • 做数据是养猪,每天拌猪食清猪粪,一脸土一身泥。

AI 原本是一个专业领域,没什么特别的。作为码农一枚,笔者的工作内容正好在这个领域。

[阅读全文]

Kubernetes 部署策略详解

Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。

选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:

  • 重建(recreate):停止旧版本部署新版本

  • 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本

  • 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量

  • 金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布

  • A/B 测(a/b testing):以精确的方式(HTTP 头、cookie、权重等)向部分用户发布新版本。A/B测实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如 Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等)。

[阅读全文]

Helm monitor 插件(附视频)

Helm release 基于日志或监控的自动回滚

helm monitor 使用Helm可以很方便的部署 Kubernetes 应用,但是如果对于线上的应用部署或者更新后出现了问题,要及时回滚到之前的版本该如何去做呢?当然我们可以手动通过kubectl rollout去进行控制,但是难免需要手动去操作。今天给大家介绍一个 Helm 的插件 Helm monitro,通过监听 Prometheus 或 ElasticSearch 监控或者日志数据,在发生故障时自动回滚 release。

[阅读全文]

Istio 实训免费视频课程

istio

Istio,是一个由 Google,Lyft,IBM 联合开发的开源项目,是服务网格(Service Mesh)技术的一个标准化的开源实现,致力于解决应用的微服务化组件之间的连接控制与安全、流量管理与可观测性。Istio 是云原生领域在 Kubernetes 之后最受关注的项目,帮助容器技术实践者从基础设施层的“容器编排“进阶到应用层的“服务治理”。Istio 先天与 Kubernetes 无缝衔接,了解并使用 Istio 可以极大地提升研发和运维的工作效率。

[阅读全文]

办公环境下 kubernetes 网络互通方案

office-env-k8s-network

在 kubernetes 的网络模型中,基于官方默认的 CNI 网络插件 Flannel,这种 Overlay Network(覆盖网络)可以轻松的实现 pod 间网络的互通。当我们把基于 spring cloud 的微服务迁移到 k8s 中后,无须任何改动,微服务 pod 可以通过 Eureka 注册后可以互相轻松访问。除此之外,我们可以通过 ingress + ingress controller ,在每个节点上,把基于 http 80 端口、https 443 端口的用户请求流量引入到集群服务中。

[阅读全文]

Prometheus 删除数据指标

有的时候我们可能希望从 Prometheus 中删除一些不需要的数据指标,或者只是单纯的想要释放一些磁盘空间。Prometheus 中的时间序列只能通过 HTTP API 来进行管理。

[阅读全文]

圣诞元旦课程优惠活动

学生 A:今天冬至了,老师你们的课程有没有优惠活动啊?

老师:呃……

学生 B:老师马上圣诞节了,课程可不可以优惠点啊?

老师:呃……

学生 C:老师你看马上就是元旦节了哦,肯定会有优惠的吧?

老师:呃……(为什么会有这么多节日呢?崩溃……)

[阅读全文]

Prometheus Operator 高级配置

Prometheus Operator 自动发现以及数据持久化

Prometheus Operator 高级配置 上节课我们一起学习了如何在 Prometheus Operator 下面自定义一个监控选项,以及自定义报警规则的使用。那么我们还能够直接使用前面课程中的自动发现功能吗?如果在我们的 Kubernetes 集群中有了很多的 Service/Pod,那么我们都需要一个一个的去建立一个对应的 ServiceMonitor 对象来进行监控吗?这样岂不是又变得麻烦起来了?

[阅读全文]