redis专题01 数据结构之string/list/hash/set/zset
在日常应用开发中,redis常应用于热点内容缓存,分布式锁,权限认证等场景中,此redis专题试图对redis技术在内容缓存,分布式及redis集群场景中的应用,使用特性,原理及源码进行分析总结,内容来源于个人工作经验实践及网络学习资源的融合归纳总结;
在日常应用开发中,redis常应用于热点内容缓存,分布式锁,权限认证等场景中,此redis专题试图对redis技术在内容缓存,分布式及redis集群场景中的应用,使用特性,原理及源码进行分析总结,内容来源于个人工作经验实践及网络学习资源的融合归纳总结;
本文首先分别详细阐述了单向扫描、双向扫描快速排序算法原理,并用golang分别设计实现了这两种经典的快速排序算法; 然后本文从性能的角度分不同场景进一步讨论了快速排序改进算法并在文中通过程序设计实现了相关算法,最后基于上述场景从上述算法总结了快速算法的特性及适用场景;
Docker Registry 是一个用来管理Docker镜像的服务,本身也是一个Docker容器。搭建一个私有的Docker Registry的使用场景主要有下面几个:
1.当需要对容器镜像存储进行完全控制,就不能依赖官方提供的Docker Hub进行管理;
2.当内部使用存在网络问题或安全问题等情况都适合搭建私有的Docker Registry对镜像进行管理;
下面从需频繁pull镜像到某内部机器上新建容器的需求来搭建需要认证访问的Docker Registry,这样同时可以解决网络依赖问题及安全问题, 下面是搭建Docker Registry过程的记录和总结;
远程程序调用(Remote procedure call, RPC)是进程间通信的一种基本形式, 并且广泛用于分布式计算中。下面就通过一步一步构建一个简单的RPC服务器来总结加深对RPC应用的理解。
上篇文件总结了如何编写Dockerfile
及如何通过Dockerfile
构建镜像并运行相应的应用需求, 本文将通过编写Dockerfile
来创建MongoDB和Redis应用进一步学习实践Docker
的运行机制。
docker容器是在指定的镜像上运行的, 创建docker镜像的方法也有很多中比如直接到docker Hub
上通过docker pull
创建一个镜像, 也可以通过修改其它镜像然后提交修改docker commit
来创建新的镜像, 还有如导入某个现有的镜像, 但是在实际中难觅要定制化改进出符合特定场景的镜像, 虽然用上述方式也是可以创建新的镜像的, 但是缺点也很多, 主要缺点是不便于维护, 其实创建docker 镜像还有一种最好的办法就是手工打造Dockerfile
, 然后通过docker build
编译生成新的镜像, 下面本文就来实践怎么编写符合规范的Dockerfile, 然后又是怎么样通过Dockerfile来创建合适的镜像的。
Docker中的网络一直是比较弱的, 本文从基础配置到访问控制再到容器互联等几个方面进行总结, 在较早期的docker版本中只提供最基本的网络通信支持, 如早期版本支持的最常见的三种场景,
1.使用NAT方式连接外部网络;
2.映射容器和宿主机的端口, 使外部可以访问容器中的应用;
3.容器间网络互联.
在前面第一篇总结中已了解了一些镜像的概念,简单的说镜像就是一个容器的只读模板,用来创建容器。当运行容器时需要指定镜像,如果本地没有该镜像,则会从Docker Registry下载。默认查找的是Docker Hub
。Docker的镜像是增量的修改,每次创建新的镜像都会在老的镜像上面构建一个增量的层,使用到的技术是Another Union File System(AUFS),具体可参考 剖析Docker文件系统:Aufs与Devicemapper, 下面主要总结记录使用和管理docker镜像的过程。
Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷
(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用mount
挂载一个文件系统。
很早就使用docker了,只是工作上一直没用起来, 加之工作多/杂,就只是断断续续自己瞎折腾,现在打算系统的整理总结一下docker使用经历,这个第一篇主要总结一下几个方面,