Goroutine与主进程的通信

还记得前半年去某条面试,面试小哥问我,当一个进程启动多个goroutine时,某个goroutine挂了,如何让主进程知道,当时大概知道可以通过context这个包来实现,但是当时没有具体去了解和熟悉这块,在这里再总结下。

子goroutine与主线程同步的集中方式: - channel: 每个goroutine往主进程的chan写数据,然后由主进程去读取,直到读取完了全部goroutine的chan就算运行完毕,此时主进程即可正常退出。这种方式是子线程通知主线程结束. - context: 使用context中的cancel,这种模式是主线程通知子线程结束 - sync.WaitGroup: 通过Add方法设置等待子goroutine的数量,使用Done方法设置等待子goroutine的数量减1,当等待数量为0时,Wait函数退出.

Linux下快速构建Android编译环境

背景: 在移动互联网时代,大多数的企业内部都有移动客户端,而移动客户端又因为OS的不同产生了两个派系,即安卓(Android)苹果(IOS),而对于互联网技术从业者来说,这两者最直接的区别就是开源闭源,因而也导致了在构建移动客户端时,为了整体的稳定性和可靠性的考虑(甚至有成本的考虑),需要进行分别编译,本篇文章记录下如何在Linux环境下构建Android编译环境.

salt-master高可用架构

背景: 新来这家公司使用Salt来作为基础配置库管理和自动化运维的工具,但是前期同事刚开始使用时只是简单使用,因此对于可用性和可靠性来说都会存在很大问题(具体可能出现的问题下面会提到)。不过作为一个专业的SRE或者运维人员,在使用一个基础组件时,必须要考虑的一个问题就是可用性可靠性,以前使用Ansible作为配置管理和自动化运维工具时只需对ssh-key或者密码进行管理即可通过水平扩容来保证高可用,而在Salt中需要涉及到salt-minion的发现以及key的管理,接下来对高可用的Salt集群架构进行介绍和实施。