idea开发环境配置指引手册
发表于
|
分类于
开发效率
分布式基础之cap理论详解
发表于
概述
在刚开始接触分布式就听说过cap理论,大致看过一点,其实不是很明白,也是由于当时自身水平受限。最近开始找工作,遇到了好几个
面试官询问cap相关知识,当时只能大致说一下cap的基本内容:
- 一致性,可用性,分区容错性
- 三者只能达其二
仅此而已,非常浅显,这是不够的,因此,特地各种查找资料,寻找示例,试图理解cap理论。
关于p
p,即Partition tolerance,很多翻译都说是分区容错性,在我理解了一些之后,我觉得这个翻译是有问题的,翻译成分区容忍更好。
什么意思,就是容忍系统有网络分区,处于不同网络的子系统之间可能因为网络不可达或者其他原因造成的系统被分为多个网络区。
p对我来说最难理解,不过当翻译变过来之后,就感觉很容易理解了。
一般来说,在分布式系统中,p几乎是必然存在的,为什么?因为网络层面的问题不可避免。
那么我们要如何保证分区容忍性呢?
- 当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。
- 提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。
保证了分区容忍性,就带来了另一个问题,数据的一致性。
为了保证数据一致性,数据同步的时间就越长,可用性就会降低。
java线程池的实现原理分析
发表于
|
分类于
java
git使用技巧—压缩琐碎的历史提交
发表于
|
分类于
git
概述
在开发runc仿制品toy-container的时候,在调试过程中,经常会对代码做简单的修改,
然后做了提交,虽然有意识的使用git commit –amend来共享上一次提交的日志,但是,不免还是会有一些琐碎的提交出现,因此想要使用git提供的
命令行工具,将历史提交给压缩一下,让提交变得整洁一些。
linux0.11中的mount工作流程
发表于
|
分类于
Linux 内核
概述在linux0.11内核中,有全局的super_block数组(大小为8)和全局的inode数组(大小为32)。super block数组的大小为8,以为着最多可以常驻8个文件系统的超级块,也就是说最多可以挂载8个不同的文件系统。inode数组的主要作用是为了缓存最近使用的inode数据。
对于
...
git使用技巧记录——日常更新
发表于
|
分类于
git
介绍git作为非常有用的开发工具,值得每个开发人员熟练掌握,并且,对于git的掌握越深入,对我们的开发工作就越有利。本片文章,是我日常使用git时的一些记录,并且会时常更新,如果已经记录过的命令,有了遗忘,我会在该命令下记录再次学习的时间,并且学习次数+1。
git diffgit diff命令是用
...
systemd学习笔记
发表于
|
分类于
linux
概述在各种新技术的教程中,看到了服务启动从service apache2 start变到了systemctl start apache2.service,心中充满了疑惑,这是什么东西?通过浏览各种博客,我下了一个初步的结论,service service-name start我不需要做过多的了解了,
...
grpc入门手册学习
发表于
|
分类于
docker
概述本篇文章之所以位于docker目录,是因为是在学习docker底层原理的过程中,涉及到了grpc框架,需要对该框架有一个完整的了解。本文基本上是对grpc官方文档的一个总结归纳,没有新鲜的东西。
主要包括以下一些内容:
gRPC
buffers.gRPC协议
Interface Definit
...