- 博客(82)
- 资源 (4)
- 收藏
- 关注
原创 微服务可用性设计(三):降级、重试、负载均衡、最佳实践
通过降级回复来减少工作量,或者丢弃不重要的请求。而且需要了解哪些流量可以降级,并且有能力区分不同的请求。我们通常提供降低回复的质量来答复减少所需的计算量或者时间。我们自动降级通常需要考虑几个点:确定具体采用哪个指标作为流量评估和优雅降级的决定性指标(如,CPU、延迟、队列长度、线程数量、错误等)。当服务进入降级模式时,需要执行什么动作?流量抛弃或者优雅降级应该在服务的哪一层实现?是否需要在整个服务的每一层都实现,还是可以选择某个高层面的关键节点来实现?同时我们要考虑一下几点:优雅降级不应该被
2022-03-18 11:49:59 589
原创 微服务可用性设计(二):过载保护,限流
微服务可用性设计(一):隔离,超时过载保护令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。令牌桶算法的描述如下:假设限制2r/s,则按照500毫秒的固定速率往桶中添加令牌。桶中最多存放 b 个令牌,当桶满时,新添加的令牌被丢弃或拒绝。当一个 n 个字节大小的数据包到达,将从桶中删除n 个令牌,接着数据包被发送到网络上。如果桶中的令牌不足 n 个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么缓冲区等待)。token-bucket rate limit algori
2022-01-28 18:51:13 744
原创 微服务可用性设计(一):隔离,超时
微服务最关键的问题一个是数据一致化,另一个就是可用性。可用性的核心就是围绕出了事故如何处理,一般事故可分为责任事故和非责任事故。所谓责任事故就是不按照标准作业流程(SOP)操作最终造成的事故。本片讲的可用性是围绕工程上的可用性,但在实际生产中可用性最终还是落实到人身上。隔离...
2022-01-19 14:26:40 2822
原创 Python内置异常总结
层级结构:BaseException # 所有异常的基类 +-- SystemExit # 解释器请求退出 +-- KeyboardInterrupt # 用户中断执行(通常是输入^C) +-- GeneratorExit # 生成器(generator)发生异常来通知退出 +-- Exception # 常规异常的基类 +-- StopIteration # 迭代器没有更多的值 +-- StopAsyncIteration # 必须通过异步迭代器对象的__a
2021-07-02 15:55:05 222
原创 取消Homebrew自动升级
vi ~/.bash_profile添加export HOMEBREW_NO_AUTO_UPDATE=true刷新source ~/.bash_profile
2021-06-11 11:42:35 203
原创 MongoDB的三种集群模式和区别
MongoDB 有三种集群部署模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。Replica Set高可用(主要目标):当一个结点故障时自动切换到其他结点数据冗余(主要目标):数据复制到n个结点上,增加数据安全性,同时为高可用提供基础功能隔离(次要目标):使用不同的结点隔离某些有特殊需求的功能,比如使用一个结点进行OLAP运算(大规模资源占用),使用一个结点在远程做灾备(性能要求不如本地高),读写分离等等;Sharded Clus
2021-06-02 15:30:14 2792
原创 git rebase与git merge的选择
概念与区别首先要理解的是git rebase 解决的是和git merge同样的问题:将更改从一个分支合并到另一个分支。但二者的合并方式却有很大的不同。当你在专用分支上开发新 feature 时,然后另一个团队成员在 master 分支提交了新的 commits,这会发生什么?这会导致分叉的历史记录,对于这个问题,使用 Git 作为协作工具的任何人来说都应该很熟悉。现在,假设在 master 分支上的新提交与你正在开发的 feature 相关。需要将新提交合并到你的 feature 分支中,你可以有两
2021-05-13 18:01:09 494
原创 腾讯蓝鲸bk_cmdb本地开发IP地址变更操作
项目地址 https://github.com/Tencent/bk-cmdb场景: 再开已经配置了mongodb并启动服务后,本机ip地址发生变化1.停止cmdb服务注意:使用stop.sh停止cmdb后,用ps -ef确保cmdb所有服务真的停了,有时可能停不掉,需要手动kill2.更改mongodb的节点ip例如: 新的服务地址为192.168.5.199一 修改mongodb的配置文件中的bindIp字段修改为192.168.5.199二 重启mongodb三 配置新的节点信息在m
2021-05-11 18:10:28 786
原创 解决zsh提示Insecure completion-dependent directories detected
解决方法编辑 ~/.zshrc文件头部添加ZSH_DISABLE_COMPFIX=true然后source ~/.zshrc现在zsh不再显示异常
2021-01-23 09:28:11 2008 1
原创 homebrew秒装亲测
官方的安装方式我挂了VPN还是很慢(大概1小时)亲民版/bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”附带国内镜像源 免去手动更改的繁琐
2021-01-18 19:27:44 99
原创 centos7安装配置openldap
更新yum源yum update安装软件包yum -y install openldap openldap-clients openldap-servers openldap-devel复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生产密码时会报错cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG授权给ldap用户,此用户yum安装时便会自动创建chown -R ldap.
2021-01-07 11:58:17 518
原创 Macbook Pro拆机清灰体验
拆开盖第一件事是拔掉电池电源线!拆开盖第一件事是拔掉电池电源线!拆开盖第一件事是拔掉电池电源线!准备工具在tb上可以买到对应mbp机型的工具套装拆后盖首先用用1.2五角星螺丝刀拆掉后盖6个螺丝,注意顺序角上的螺丝与其他不同,拆下后尽量按顺序排放便于归位。螺丝全部拧下后,用塑料撬棒将风口撬开一个缝隙,用信用卡插入0.5cm(不可太深否则会伤到喇叭)沿缝隙往侧面滑动,直到听到清脆“啪”的一声,说明侧面的暗扣已经打开。对侧的暗扣用同样方法打开。在这里插入图片描述接下来用吸盘拉起底部起后盖
2020-12-28 11:36:49 5903
原创 Jenkins学习笔记(五)用户权限管理
利用Role-based Authorization Strategy 插件来管理Jenkins用户权限安装Role-based Authorization Strategy插件授权策略切换为“Role-Based Strategy”保存创建角色在系统管理页面进入 Manage and Assign Roles点击"Manage Roles"角色权限与划分Global RolesGlobal roles(全局角色):管理员等高级用户可以创建基于全局的角色默认的admin会拥有所有权限
2020-12-23 18:39:08 581
原创 原创 原创 Jenkins学习笔记(五)-流水线Pipeline
概念Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。优点代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接收交互式输入,以确定是否继续执Pipeline。 多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持f
2020-11-11 13:52:08 310
原创 Jenkins学习笔记(四)-Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。安装Maven上传Maven到Jenkins服务器tar -xzf apache-maven-3.6.2-bin.tar.gz 解压mkdir -p /opt/maven 创建目录mv apache-maven-3.6.2/* /opt/maven 移动文件配置环境变量vi /etc/profile添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport
2020-11-10 17:13:09 245
原创 Jenkins学习笔记(三)-添加Git凭证
jenkins默认集成git插件,若无请手动安装在Source Code Management中添加SSH全局凭证生成sshkey终端输入ssh-keygen -t rsa -C 'foo.bar@xxx.com'一路回车Generating public/private rsa key pair.Enter file in which to save the key (/Users/foo/.ssh/id_rsa): /Users/foo/.ssh/id2_rsaEnter passph
2020-11-09 17:26:13 5878
原创 Jenkins学习笔记(二)-创建一个Hello World流水线
流水线Pipeline所谓流水线,就是当你想要把一个项目从代码提交到最终的部署上线所包含的一系列阶段和步骤全部组装到一起,这个过程一般可能涉及源代码拉取、项目构建(打包)、构建镜像、安装部署、测试等步骤,而通过流水线插件,就可以把这些所有的步骤统一管理起来,方便维护和操作。创建第一个Hello World流水线配置要求Jenkins 2.x 或以上版本(旧版本到 1.642.3 可能可以,但不建议)流水线插件 pipline创建流水线从Jenkins主页左上角New Item 新建
2020-11-09 11:44:48 697
原创 Jenkins学习笔记(一)-简介,部署,与基本配置
jenkins 介绍jenkins 介绍jenkins 是一个基于 java 开发的在自动化服务器,是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。特性:易于安装易于配置集成 RSS/Email,通过 RSS 发布构建结果或通过 email 通知生成 Junit/TestNG 测试报告支持分布式构建,让多台计算机一起构建文件识别,能跟踪哪次构建了哪些包插件支持,大量官方插件以及可自定义插件jenkins 搭建war 部署下载最新的 jenki
2020-11-09 09:04:35 306
原创 Jenkins邮件服务器配置
可使⽤插件Mail Extension PluginMailer Plugin这里以Mailer为例配置填写管理员邮箱配置完后点击 Save 保存配置 SMTP 服务器腾讯企业邮箱进⼊企业邮箱⻚⾯-设置-收发信设置,将 开启IMAP/SMTP服务 , 开启POP/SMTP服务 勾上QQ邮箱设置同理需开启SMTP服务然后回到之前Jenkins的配置邮箱⻚⾯ 中的 E-mail Notification 填写⽤户名密码端⼝(端⼝号可参考帮助⽂档),填好之后可以勾选测试发送验证
2020-11-05 17:56:45 456
原创 python读写excel表操作
安装xlrd模块pip install xlrd或者去官网下载使用读取文件file = xlrd.open_workbook("./sample.xlsx")此时file是整个文件对象,获取某个工作表可以用序号或者表名序号获取sheet0 = file.sheet_by_index(0)sheet1 = file.sheet_by_index(1)表名基本信息sheet_1 = file.sheet_by_name("Sheet1")print("表名:\t" ,she
2020-11-03 16:34:27 2559 1
原创 数据卷容器
什么是数据卷容器在集中管理集群中,如果大批量的容器都需要官员在相同的多个数据卷时,可以采用数据卷容器来进行统一管理创建数据卷容器docker run -d -v /path/to/db --name=‘db’ mysql然后在其他容器中使用--volums-from来挂载db容器中的数据卷docker run -d --volumes-from db --name=‘db1’ mysqldocker run -d --volumes-from db --name=‘db2’ mysql
2020-10-12 17:08:53 218
原创 解决macOS docker启动卡在k8s starting
问题描述mac docker自带了k8s,启动一直卡在starting, 重启也没用解决1,git clone https://github.com/maguowei/k8s-docker-for-mac.git2,cd k8s-docker-for-mac/3, ./load_images.sh (确保你的docker desktop已经运行)这一步拉取镜像,耗时比较长4,设置 https://registry.docker-cn.com...
2020-09-03 16:07:21 2366
原创 数据可视化现状调研
数据可视化现状调研概述数据可视(Data visualization)数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着,数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂。为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟
2020-09-02 11:34:36 7189
原创 在已有项目中创建git远程仓库
我在本地已经有一个开发中的程序,现在我想把它放到github上。操作到项目目录下初始git仓库git init打开github创建新项目(勾选init README.md,因为默认创建仓库没有master分支,会导致无法提交)。复制项目地址在项目目录下添加上一步复制的地址git remote add origin https://github.com/xxx/xxx.git添加成功后,检查当前项目的git远程地址git remote -vorigin h
2020-08-17 11:22:45 1023
原创 解决SELECT list is not in GROUP BY clause and contains nonaggregated column..
问题描述在一次zabbix库中写联合查询语句时报错1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xxxx.xxx’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
2020-07-28 16:40:58 5655
原创 微服务中鉴权方式OAtuh2与JWT的比较
统一认证与授权是微服务架构的基础功能,微服务架构不同于单体应用的架构,认证和授权非常集中。当服务拆分之后,对各个微服务认证与授权变得非常分散,所以在微服务架构中,将集成统一认证与授权的功能,作为横切关注点。常见的认证与授权方案常见的认证与授权方案有 OAuth、分布式 Session、OpenID 和 JWT 等OAtuh2OAuth2 相关理论的介绍主要来自于OAuth2官方文档,相关地址为https://tools.ietf.org/html/rfc6749。OAuth2是当前授权的行业标准,
2020-07-15 20:03:08 1075
原创 微服务框架Kratos学习笔记
Kratos来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒险历程。目标:致力于提供完整的微服务研发体验,整合相关框架及工具后,微服务治理相关部分可对整体业务开发周期无感,从而更加聚焦于业务交付。对每位开发者而言,整套Kratos框架也是不错的学习仓库,可以了解和参考到bilibili在微服务方面的技术积累和经验。FeaturesHTTP Blademaster:核心基于gin进行模块化设计,简单易用、核心足够轻量;GRPC Ward.
2020-07-10 16:39:01 2199 1
原创 使用google wire注入依赖
使用google wire解决依赖注入google wire是golang的一个依赖注入解决的工具,这个工具能够自动生成类的依赖关系。实例package mainimport ( "fmt" "time")// 采集函数type F func()// 采集对象type Worker struct { Interval time.Duration Work F}//采集模块type Beater struct { Name string Version
2020-07-07 17:05:08 1307
原创 初探go protobuf
Google Protobuf##简介Protocol Buffers是一种轻量高效的结构化数据存储格式,独立于语言,平台,以二进制传输,可用于网络传输,配置,数据存储等.Google提供了多种语言的实现,每一种都包含了相应的语言的编译器和库文件优点跨语言、支持多种语言, 包括 C++、Java、Go 和 Python.编解码的性能非常高.相比与 xml json等传统的序列化工具, 它更小、更快、更简单.支持不同协议版本的前向兼容.支持定义可选和必选字段.环境搭建安装protoc
2020-07-07 15:32:03 405 1
原创 snmp_exporter解析mib原理
snmp_exporter创建mib文件目录,下载mib文件make all首先从给定的uri中下载mib文件解析mib文件./generator generate解析根据generator.yml规则,从MIB目录中生成snmp.yml格式文件原理net_snmp.go文件中使用了C库中net-snmp/net-snmp-config.h,net-snmp/mib_api.h处理原始mib文件C.netsnmp_init_mib解析MIB文件C.get_tree_head()
2020-06-17 16:48:57 5458 3
原创 MIB与OID
MIB文件的作用MIB的重要性被大大地夸大了。刚开始时,MIB显得非常复杂,但是它们其实非常简单。OID是数字的和全局的键值对。一个OID看起来和一个IPv6的地址很象,并且不同的厂商有不同的前缀等信息。OID都非常长,使得人们难以记住,或者对他非常感冒。因此,人们就设计了一种将数字OID翻译为人们可读的格式。这种翻译映射被保存在一个被称为 “管理信息基础"(Management Infomation Base) 或MIB的、可传递的无格式文本文件里。使用SNMP或者向SNMP设备查询,你不需要使用MIB
2020-06-17 16:43:49 3220
原创 GIT开发团队协作常用术语
WIP Work in progress, do not merge yet.在开发中ACK acknowledgement.我确认了或者我接受了,我承认了LGTM Looks good to me.Riview完别人的PR , 没有问题PTAL Please take a look.帮我看下,一般都是请别人 review 自己的 PRCC Carbon copy抄送某人RFC request for comments.我觉得这个想法很好, 我们来一起讨论下IIRC if I rec
2020-06-15 18:42:44 216
原创 SNMP识别负载均衡设备
主流厂商F5 Radware A10F5由于BIGIP是对负载均衡的实现,利用查询是否存在节点1.3.6.1.4.1.3375.2(bigipTrafficMgmt)判断是否为负载均衡设备RadwarerndBrgFeatures节点(其他一些厂商也有类似节点比如cisco)1.3.6.1.4.1.89.2.5返回一个20字节的比特串官方解释 含义: "A bit mask that defines the features supported by a particular configu
2020-06-09 15:36:32 552
原创 SNMP协议识别防火墙设备
防火墙特征防火墙和路由器对比防火墙有安全域概念,区分每个接口所连接的安全域登记会话状态 路由器不关注会话状态,防火墙会基路每一个会话状态的信息,比如三次握手是否符合规则,会话检测在前两个能力的基础上,防火墙可以做安全策略,由于对会话的精确控制,可以控制数据的流向,比如A不能主动访问B,B可以主动访问A.二路由器只能做到包过滤,即双向阻断防火墙能否代替路由器在中小型网络是可以的,因为数据量不大,而且设备性价比高,维护方便而在大型网络中不可能用防火墙代替路由器,因为路由器在路由协议上的算法和性
2020-06-05 17:36:12 1176 3
原创 AIX6.1安装GCC
下载安装包来源http://www.perzl.org/http://www.oss4aix.orghttp://www.bullfreeware.com/上传到服务器安装cd到包所在目录顺序执行rpm -ivh libgcc-4.8.2-1.aix6.1.ppc.rpmrpm -ivh libstdc++-4.8.2-1.aix6.1.ppc.rpmrpm -ivh l...
2020-05-07 15:05:39 714 3
原创 AIX7.1安装GCC
AIX7.1配置gcc4.8.2环境系统配置系统7.1.0.0硬件System Model: IBM,8203-E4AMachine Serial Number: Processor Type: PowerPC_POWER6Processor Implementation Mode: POWER 6Processor Version: PV_6_CompatNumber Of...
2020-04-15 18:21:08 1356
原创 ./../x86_64-alpine-linux-musl/bin/ld: cannot find -ldl 报错解决
在alpine镜像基础上安装的go1.12的容器中编译go项目报错mkdir -p release/1.0.3GOOS=linux GOARCH=amd64 go build -o release/1.0.3/bknetworkdiscover-1.0.3-linux-amd64# github.com/honops/bknetworkdiscover/usr/local/go/pkg/...
2020-04-15 11:40:26 3645 1
原创 ERROR 1193 (HY000) at line 38: Unknown system variable ‘storage_engine‘解决
在导入employee训练集的时候报错INFOCREATING DATABASE STRUCTUREERROR 1193 (HY000) at line 38: Unknown system variable ‘storage_engine’employees.sql 第38行:set storage_engine = InnoDB;原因是MySQL5.7.5版本以后这个变量被...
2020-04-08 16:34:59 2863 2
原创 go: panic与recover
panic是go语言在运行时发生的错误,如数组访问越界、空指针引用等,这些运行时错误会引起程序崩溃。这并不是我们想看到的,程序崩溃可能造成体验停止、服务中断,就像没有人希望在马桶冲水冲到一半时坏掉。什么是panic?传统上一般用error来控制go语言中遇到的错误。Errors能满足我们大部分时候的开发需求但有情况下,程序在发生异常后无法继续运行下去,这时我们用panic终止程序。当一个...
2020-04-01 16:20:33 376
原创 让commit跳过gitlab-ci流程
只要在commit信息中包含[ci skip]或 [skip ci] ,提交到仓库以后会跳过CI流程在gitlab中看到本次提交跳过了CI
2020-03-10 16:28:56 3536 1
AIX6.1_file_reference.pdf
2020-05-07
AIX7.1_file_reference.pdf
2020-05-07
rpms_gcc4.8.2_aix7.1.zip
2020-05-07
rpms_gcc4.8.2_aix6.1.zip
2020-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人