Dig101-Go之深入理解mutex

Dig101: dig more, simplified more and know more

sync.MutexGo实现的互斥锁,提供了基本的同步操作,使用很方便。

不过,你是否好奇过,Go是如何实现的Mutex,又是为什么要这样实现?

今天跟随几个问题,我们一起探索下Mutex背后的设计。

(不用担心,不会有大段的源码分析出现在本文😳)

Read More

Dig101-Go之如何在函数内修改指针指向

Dig101: dig more, simplified more and know more

今天来看一个小问题:如何在函数内部修改一个指针(参数或接收者)指向,使其值的改变能反映在函数外部

直接上代码,这样可以么?

1
2
3
4
5
6
7
8
9
type ArgType struct {
A string
b int
}

func modifyPointerArg1(arg *ArgType) {
arg = &ArgType{"arg1", 1}
fmt.Println("inside modifyPointerArg1:", arg)
}

Read More

OPA进阶-分布式利器Bundle

BundleOPA管理policydata的一种方式。

OPA实现的轻量级策略引擎,一开始就是为了云原生环境的service提供解耦的策略服务,分布式是必然要考虑的问题。

Bundle api的设计中,其实就全面考虑并体现了在分布式应用中如何更好的解耦策略引擎的管理。

比如:

  • 如何做集中配置管理
  • 如何动态更新策略
  • 如何监控策略引擎节点的状态以及决策日志收集

有了这些功能,再加上其高效的策略描述语言RegoOPA才真正称得上是云原生时代的通用策略引擎

本文将带大家简单梳理一遍Bundle的组织方式、管理api、及监控方式。

考虑到一次性过完不易消化,文末会提供一个直接可实操的docker-compose版本的demo,将全面覆盖本文细节

建议大家看完本文,本机运行去体验一下,会有更直观的理解。

Read More