k8s技术实践
1、前言
随着容器技术的快速发展,诸如Kubernetes(以下简称k8s)此类容器编排技术应运而生,当人们逐渐意识到容器是云计算的未来,越来越多的人投入到容器技术的怀抱,也就是在这短短几年里,k8s赢得了这场战争,实际上,k8s的带来的影响已经远超容器管理领域本身。
服务网格的概念已经走进大家视线,而这也恰好让人们意识到,k8s岂不正是实现微服务的一种解决方案,这也进一步将k8s推向风口浪尖。
2、k8s的核心概念
本文是建立在已经对docker技术有一定了解的基础上的,就不再赘述docker相关的概念了,初步介绍一下k8s的核心概念和思想,目的是让大家快速熟悉,更好理解接下来的内容。
1. POD
这是k8s里定义的最小单元,因为k8s是源于google,而该项目目标也不仅仅是支持docker这一种容器技术,抽象出一个pod的概念,其实k8s本身不关心pod内部是什么类型容器,可以有多个容器在pod内启动(官方建议单一pod单一容器),pod内容器共享网络,共享存储,pod可以由控制器启动,控制器也就是k8s负责编排的组件之一,常见的有
Deployment,通过指定副 ...
成都记忆
没有照片,也可以有,等哪天有了心情,整理一下
1. 观察
成都第一天的生活,不紧不慢,不慌不忙,想走就走,想逛就逛,想吃就吃,想躺就躺
慢下来,才开始观察周围,观察周围人,也开始观察自己
这间民宿很优秀,处处透露出房东的细心和热情,让人感觉很舒服,格局装饰也非常温馨,很荣幸入住这间房子
出门就是宽窄巷子,逛了一圈,有一些宅院可以进去参观,算是有些味道,但总的来说商业化严重,东西贵且不好吃,不远处的奎星楼街上倒是有不少美食,有不少网红店,开始尝试第一波作死,尝试了冒椒火辣串串,emmmmm,很不错,除了里面的泡椒牛肉,是真的辣。。。
看了少年的你,讲的是个啥校园霸凌,不是说没有同情心,这种事有人关注自然是好事,但是相比之下,少年的那种泰然自若的视死如归,确实有打动到我,最后两人对视着,笑,哭,恍惚间,觉得我的生命里似乎缺少了什么
一直以来,我都是个以自我为中心的人,没有什么能够真正的影响到我,身边的人,身边的事,我都无感,工作也好,情感也罢,事情做便做了,喜欢一个人便喜欢了,好与坏似乎也不是很关心,有些人看了说,干的不错,值得嘉奖,咱也不知道哪里干的不错,那反正你都这么说了,我就 ...
跳表
redis 的有序集合是用跳跃表(skiplist)实现,这是一种比较神奇的数据结构
1. 简述
假如我们要用某种数据结构来维护一组有序的int型数据的集合,并且希望这个数据结构在插入、删除、查找等操作上能够尽可能着快速,那么,你会用什么样的数据结构呢?数组,还是链表
1. 数组
在查找方面,用数组存储的话,采用二分法可以在 O(logn) 的时间里找到指定的元素,不过数组在插入、删除这些操作中比较不友好,找到目标位置所需时间为 O(logn) ,进行插入和删除这个动作所需的时间复杂度为 O(n) ,因为都需要移动移动元素,所以最终所需要的时间复杂度为 O(n) 。
2. 链表
另外一种简单的方法应该就是用链表了,链表在插入、删除的支持上就相对友好,当我们找到目标位置之后,插入、删除元素所需的时间复杂度为 O(1) ,注意,我说的是找到目标位置之后,插入、删除的时间复杂度才为O(1)。
但链表在查找上就不友好了,不能像数组那样采用二分查找的方式,只能一个一个结点遍历,所以加上查找所需的时间,插入、删除所需的总的时间复杂度为O(n)。
3. 跳跃表
这时候,如果能够提升链表的 ...
银河补习班
毫无疑问,这是一部好电影
很有教育意义的一部好电影
人生就像射箭,梦想就像箭靶子,连箭靶子都找不到在哪,你每天拉弓有什么用
一直想
刻在门上的字,似乎只要一直不停的思考,就总会有源源不断的动力
把自己的桥修好,是世界上最大的事儿。
大人也是需要照顾的
我确信,我是在那一刻长大了
当你能够做到自己身处黑暗之中,还能把光明留给别人,你就是一个成年人了
那爸爸,你现在开始辅导我吧;可是我已经辅导你一整天了
对不起儿子,爸爸也只是第一次学着当爸爸
他一生中最重要的时刻,应该是均匀的散布在每一天,每一分,每一秒
kong调研
1. kong简介
Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
具体介绍参考
2. kong安装配置
1. 下载安装(以centos 6为例,其他平台见链接)
下载rpm包
1https://bintray.com/kong/kong-rpm/download_file?file_path=centos/6/kong-1.1.2.el6.noarch.rpm
12sudo yum install epel-releasesudo yum install kong-1.1.2.*.noarch.rpm --nogpgcheck
...
令人抓狂的lettuce
lettuce初探
1. 起因
由于对Springboot不够熟悉,由于对lettuce不够熟悉,出现了各种匪夷所思的问题
比如线程泄露问题,比如command reject问题,等等
2. 进展
查阅相关源码,从片段中看出一些端倪,修改了相关配置,
比如修改clientResource,disconnectedBehavior等
果然正常了,但是始终心中不放心
3. 实验
花费了大量时间,进行实验,分为三个部分
1. 使用lettuce直接连接
123456789101112131415161718/** * 创建RedisClient */ @Bean(destroyMethod = "shutdown") RedisClient redisClient(@Qualifier("commonClientResources") ClientResources commonClientResources, @Qualifier(&quo ...
redis基本数据结构
Redis最为常用的数据类型:
String – 字符串
Hash – 哈希
List – 列表
Set – 集合
Sorted set – 有序集合
1. String
用途比较广泛,主要是缓存,计数器等;
底层编码
int:8个字节的长整型。
embstr:小于等于39个字节的字符串。
raw:大于39个字节的字符串。
主要实现方式是简单动态字符串(SDS),不过这要看存储的字符串长度,因为redis会根据实际的存储数据进行相应的优化,比如如果是整形值,就会用长整型
2. hash
主要用于
哈希类型的内部编码有两种:
ziplist(压缩列表):
1)当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)
2)所有值都小于hash-max-ziplist-value配置(默认64字节)
hashtable(哈希表):当哈希类型无法满足ziplist的条件时使用hashtable
Redis使用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashta ...
redlock
分布式锁应该具有的特性(Safety & Liveness)
我们将从三个特性的角度出发来设计RedLock模型:
安全性(Safety):在任意时刻,只有一个客户端可以获得锁(排他性)。
避免死锁:客户端最终一定可以获得锁,即使锁住某个资源的客户端在释放锁之前崩溃或者网络不可达。
容错性:只要Redsi集群中的大部分节点存活,client就可以进行加锁解锁操作。
通过Redis为某个资源加锁的最简单方式就是在一个Redis实例中使用过期特性(expire)创建一个key, 如果获得锁的客户端没有释放锁,那么在一定时间内这个Key将会自动删除,避免死锁。
这种做法在表面上看起来可行,但分布式锁作为架构中的一个组件,为了避免Redis宕机引起锁服务不可用, 我们需要为Redis实例(master)增加热备(slave),如果master不可用则将slave提升为master。
这种主从的配置方式存在一定的安全风险,由于Redis的主从复制是异步进行的, 可能会发生多个客户端同时持有一个锁的现象。
此类场景是非常典型的竞态模型:
Client A 获得在master节 ...
ffmpeg的常用命令
1. 关于mac安装
参考此文章
从brew的2.0版本开始,brew不再提供针对ffmepg的options的一键关联安装了,如果需要将options和ffmpeg关联起来的话,需要采用第三方的options仓库
以下为核心命令搬运
123456brew tap homebrew-ffmpeg/ffmpegbrew options homebrew-ffmpeg/ffmpeg/ffmpegbrew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-<option1> --with-<option2>
2. 常用命令
1. 格式转换
1ffmpeg -i movie.avi -c copy -map 0 output.mp4
-i 输入
-c 编码方式
2. 截图,截取视频
12345678//从m3u8截取视频ffmpeg -i "https://xxx/index.m3u8" -vcode ...
gitlab搭建
gitlab使用配置
按照官网安装 (安装完成后,组件无法启动,可能是缺少一些基础库依赖,需要注意)
1. 配置文件
1/etc/gitlab/gitlab.rb
配置url
1external_url 'http://gitlab.xxxxx.com'
然后gitlab-ctl reconfigure
再重启 gitlab-ctl restart
单机版就可用了
2. 常用命令
12345678gitlab-ctl status 查看状态gitlab-ctl start (可单独启动)gitlab-ctl stopgitlab-ctl restartgitlab-ctl tail 查看日志(可单独查看对应组件日志)gitlab-ctl reconfigure gitlab-ctl show-config 验证配置文件
配置目录
123456/var/opt/gitlab/git-data/repositories/:库默认存 ...