不会飞的章鱼

熟能生巧,勤能补拙;静能生慧,为而不争;莫向外求,但求心觅;念念不忘,必有回响。

什么是goroutine

goroutine是由Go运行时管理的用户层轻量级线程。

相比较于操作系统线程,goroutine的资源占用和使用代价都要小得多,可以创建几十个、几百个甚至成千上万个goroutine也不会造成系统资源的枯竭,Go的运行时负责对goroutine进行管理。而所谓的管理 == 调度。

goroutine调度器

一个Go程序中可以创建成千上万个并发的goroutine,而将这些goroutine按照一定算法放到CPU上执行的程序就称为goroutine调度器

阅读全文 »

题目

剑指 Offer 42. 连续子数组的最大和

题解

暴力求解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func maxSubArray(nums []int) int {
//一个临时值,和一个最大值
temp,max := 0,nums[0]
for i:=0;i<len(nums);i++ {
if (temp + nums[i]) > nums[i] {
temp = temp + nums[i]
} else {
temp = nums[i]
}
if temp > max {
max = temp
}
}

return max //返回最大值
}
阅读全文 »

版本更新描述

在基于版本2的基础上继续优化 WordPress 网站的部署,其中的关键是让数据库 MariaDB 实现数据持久化。

架构图

网站的整体架构图变化不大,前面的 Nginx、WordPress 还是原样,只需要修改 MariaDB:

阅读全文 »

版本更新描述

完全舍弃了 Docker,把所有的应用都放在 Kubernetes 集群里运行,部署方式也不再是裸 Pod,而是使用 Deployment,稳定性大幅度提升。

架构图

原来的 Nginx 的作用是反向代理,那么在 Kubernetes 里它就升级成了具有相同功能的 Ingress Controller。WordPress 原来只有一个实例,现在变成了两个实例(你也可以任意横向扩容),可用性也就因此提高了不少。而 MariaDB 数据库因为要保证数据的一致性,暂时还是一个实例。

阅读全文 »

架构图


MariaDB 作为后面的关系型数据库,端口号是 3306;WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80;Nginx 是前面的反向代理,它对外暴露 80 端口,然后把请求转发给 WordPress。

使用 docker pull 拉取镜像

1
2
3
docker pull wordpress:5
docker pull mariadb:10
docker pull nginx:alpine

启动 MariaDB

阅读全文 »

本文将介绍如何搭建最简单的私有镜像仓库——Docker Registry

首先,你需要使用 docker pull 命令拉取镜像:

1
# docker pull registry

然后,我们需要做一个端口映射,对外暴露端口,这样 Docker Registry 才能提供服务。它的容器内端口是 5000,简单起见,我们在外面也使用同样的 5000 端口,所以运行命令:

1
# docker run -d -p 5000:5000 registry
阅读全文 »

架构图

本文我将尝试用Kubernetes集群上搭建一个WordPress网站,他们的内部逻辑关系如下:

搭建步骤

编排 MariaDB 对象

MariaDB需要4个环境变量,比如数据库名、用户名、密码等,在Docker里我们是在命令行里使用参数--env,而在Kubernetes里我们就应该使用ConfigMap,为此需要定义一个maria-cm对象:

阅读全文 »