CloudNative 架构

CloudNative|云原生应用架构|云原生架构|容器化架构|微服务架构|平台架构|基础架构


  • 首页

  • 标签

  • 分类

  • 归档

  • k8s离线安装包

  • 搜索

Go chan 为啥没有判断 close 的接口

发表于 2020-11-16 | 分类于 golang , channel | | 热度: ℃
字数统计: 3,265 字 | 阅读时长 ≈ 14 分钟

大纲

  • Go 为什么没有判断 close 的接口?
  • Go 关闭 channel 究竟做了什么?
    -closechan
  • 一个判断 chan 是否 close 的函数
    • 思考方法一:通过“写”chan 实现
    • 思考方法二:通过“读”chan 实现
    • chan close 原则
    • 其实并不需要 isChanClose 函数 !!!
  • 怎么优雅关闭 chan ?
    • 方法一:panic-recover
    • 方法二:sync.Once
    • 方法三:事件同步来解决
  • 总结
阅读全文 »

Go Sync.Pool 背后的想法

发表于 2020-11-14 | 分类于 golang , sync | | 热度: ℃
字数统计: 1,001 字 | 阅读时长 ≈ 5 分钟

概述

我最近在我的一个项目中遇到了垃圾回收问题。大量对象被重复分配,并导致 GC 的巨大工作量。使用 sync.Pool,我能够减少分配和 GC 工作负载。

什么是 sync.Pool?

Go 1.3 版本的亮点之一是同步池。它是 sync 包下的一个组件,用于创建自我管理的临时检索对象池。

为什么要使用 sync.Pool?

我们希望尽可能减少 GC 开销。频繁的内存分配和回收会给 GC 带来沉重的负担。sync.Poll 可以缓存暂时不使用的对象,并在下次需要时直接使用它们(无需重新分配)。这可能会减少 GC 工作负载并提高性能。

阅读全文 »

我在 Go 中犯了 5 个错误

发表于 2020-11-13 | 分类于 golang , 犯错 | | 热度: ℃
字数统计: 2,365 字 | 阅读时长 ≈ 10 分钟

人皆犯错,宽恕是德 — Alexander Pope

这些都是我在写 Go 中犯的错误。尽管这些可能不会导致任何类型的错误,但它们可能会潜在地影响软件。

1 内循环

有几种方法可以造成循环内部的混乱,你需要注意。

阅读全文 »

用 Go 从头开始构建容器(第1部分:命名空间)

发表于 2020-11-12 | 分类于 golang , 容器 | | 热度: ℃
字数统计: 4,596 字 | 阅读时长 ≈ 18 分钟

概述

在过去几年中,容器的使用显著增加。容器的概念已经出现好几年了,但是 Docker 易于使用的命令行才从 2013 年开始在开发人员中普及容器。

在这个系列中,我试图演示容器是如何在下面工作的,以及我是如何开发容器的。

阅读全文 »

Kubernetes 网络模型来龙去脉

发表于 2020-11-11 | 分类于 kubernetes , 网络 | | 热度: ℃
字数统计: 3,881 字 | 阅读时长 ≈ 14 分钟

概述

network
容器网络发端于 Docker 的网络。Docker 使用了一个比较简单的网络模型,即内部的网桥加内部的保留 IP。这种设计的好处在于容器的网络和外部世界是解耦的,无需占用宿主机的 IP 或者宿主机的资源,完全是虚拟的。

阅读全文 »
1…345…22
icyboy

icyboy

109 日志
98 分类
182 标签
RSS
GitHub 微博 知乎
友情链接
  • 张家港水蜜桃
  • 运维开发
  • DevOps
© 2016 — 2021 icyboy | Site words total count: 330.8k
本站访客数:
博客全站共330.8k字