自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (1)
  • 收藏
  • 关注

原创 Nocalhost: 云原生开发新体验

大家好,很高兴能参加 CSDN 举办的云原生 Meetup。今天给大家带来的分享是:《Nocalhost: 云原生开发新体验》。我是来自腾讯云 CODING DevOps 的黄鑫鑫,同时也是 Nocalhost 的项目的核心开发者。今天的分享主要分为以下几个方面:云原生场景下的开发痛点;目前主流的云原生开发方式;Nocalhost 初体验Nocalhost 核心机制Nocalhost 高级特性1. 云原生场景下的开发痛点当我们从开发传统应用过渡到云原生应用的时候,会发现应用架构的复杂性大大

2021-12-16 09:37:18 964

原创 浅谈 PodDisruptionBudgets

PodDisruptionBudgets,这个名字看起来有点奇怪,字面意思是 Pod 干扰预算,是什么意思呢?Disruption 我们可以简单地理解就是 Pod 被销毁了,Disruption budgets 意思就是我们允许有多少 Disruption 发生。举个例子,假设我们有一个 Deployment,它下面有 100 个 Pod,我们再给这个 Deployment 的 Pod 创建一个 PodDisruptionBudgets,并把 maxUnavaliable 设置为 10,此时可以理解为我们给

2021-06-17 20:31:22 1296

原创 Golang 日志框架 Zap 入坑指南

文章目录简介CaseCase 1: Hello WorldCase 2: SugaredLoggercase 3: 定制化 SugaredLogger简介众所周知,Zap 是个很 nb 的日志框架,作为入门篇,本文主要用几个例子来直观地感受下 Zap 写出来的日志长什么样,符不符合我们的需求(主要是审美需求),性能什么的我们攒钱不 care。以下栗子由浅入深,循序渐进,大部分栗子可以直接 copy 运行。CaseCase 1: Hello WorldZap 的 Hello World 代码大

2020-12-19 18:08:39 4813 7

原创 Golang 随机获取本机可用端口

// 获取可用端口func GetAvailablePort() (int, error) { address, err := net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:0", "0.0.0.0")) if err != nil { return 0, err } listener, err := net.ListenTCP("tcp", address) if err != nil { return 0, err } defer lis

2020-12-14 16:54:19 3680

原创 client-go入门之3:解析 yaml 文件并创建 k8s 资源对象

我们使用 k8s 提供的命令行工具 kubeclt 可以很方便地使用kubectl apply -f xx.yaml从 yaml 文件创建 k8s 的资源对象,但使用 client-go 的时候,通常是使用 clientset 的 list 或 get 接口先获取集群中已有的对象,再通过修改对象的属性之后调用 update 接口去操作集群中的资源对象,若要通过 client-go 使用 yaml 文件创建新的资源对象,则不能使用 clientset 而要使用 dynamicClient,这个用起来就没有 c

2020-10-31 19:29:49 5468 3

原创 Go 两种形式的“类型转换”

Go 的类型转换常常让人有点迷,有两种形式的类型转换:Type(obj) :这种形式的类型转换要求 obj 对象的类型和 Type 是等价类型,即实现了相同的方法obj.(Type) :这种形式用于向下转型,即接口对象转结构体对象,所以 obj 必须是一个接口对象代码示例:package mainimport "fmt"type Animal interface { GetName() string}// Cat 实现 Animal 接口type Cat struct { n

2020-10-31 13:52:07 3840

原创 Go 读取 yaml 文件并解析

yaml 文件:# items.yamlitems: - path: aaaa - path: bbbb weight: "10" - path: cccc weight: "-5"Go 代码:package mainimport ( "fmt" "gopkg.in/yaml.v2" "io/ioutil")type Item struct { Path string `yaml:"path"` Weight string `yaml:"weigh

2020-10-24 14:44:14 2842

原创 一个简单的Dockerfile

一个简单的Dockerfile,如下:FROM golang # 基础镜像COPY print-num.go /root/ # 拷贝文件到镜像中 WORKDIR /root # 设置默认工作目录CMD ["go", "run", "print-num.go", "100"] # 设置默认启动命令print-num.go 源码如下:package mainimport ( "fmt" "os" "strconv" "time"

2020-10-23 17:02:09 166

原创 使用ssh做端口转发

有时候Linux服务器上的某些服务监听的是本地(localhost,127.0.0.1)的端口,外部无法直接访问该服务,可以使用以下命令做端口转发:ssh -N -f -L 0.0.0.0:9091:127.0.0.1:9090外部访问9091端口时,就会被转发到9090端口。...

2020-08-18 22:59:00 620

原创 k8s Job详解

文章目录Job机制参考资料Job机制Job用来创建1个或多个Pod,并保证指定数量(.spec.completions)的Pod成功完成。当一个Pod成功完成时(.status.phase=Succeeded),Job会记录已完成的Pod的数量,但完成的数量达到指定值时,这个Job就完成了。可以通过以下两种方式来判断一个Job是否已完成:.status.completionTime是否为空。Job完成时该字段会被设置成Job完成的时间,否则为空.spec.completions和.status.s

2020-08-01 20:55:06 11486

原创 client-go入门之2:Job相关操作

文章目录首先要获取一个连接k8s的*kubernetes.Clientset对象,具体连接方法参考:创建连接Kubernetes集群的客户端创建Job的代码:import ( "fmt" v1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" "time")func CreateSimpleJob () { targetJob := &v1.Job{} targetJob.Namespace = "demo" // 所属的na

2020-07-24 16:17:10 2169

原创 Kubernetes Pod的生命周期(Lifecycle)

文章目录Pod LifeclePod的阶段:Pod phase容器的状态:Container states容器的探针:Container probes重启策略:restartPolicy参考资料Pod LifeclePod的阶段:Pod phasephase用于表示一个Pod处于其生命周期的哪个阶段,有且仅有以下5个可能的取值:Pending:Pod已经被k8s系统接受,但Pod中还有容器没有被创建。Pod被调度前和下载容器镜像的时候都处于这个阶段Running:Pod已经被调度到Node上,所

2020-07-21 21:33:05 6479

原创 client-go删除job同时删除job关联的pod

问题描述client-go使用以下方式删除job时,并不会把其关联的pod删除,从而导致这些pod成为了孤儿(orphan):err := clientSet.BatchV1().Jobs(namespace).Delete(name, &metav1.DeleteOptions{})在删除job的时候将job关联的pod也删除的方法:propagationPolicy := metav1.DeletePropagationBackgrounderr := clientSet.Batch

2020-07-15 11:55:04 1288

原创 client-go入门之1:创建连接Kubernetes集群的客户端

文章目录简介使用读取配置信息创建k8s客户端调用k8s api获取集群资源信息打印得到的资源信息简介我们可以使用Dashboard或kubectl来访问k8s的API,也可以使用编程语言,如Go,Java,Python作为客户端来访问k8s。client-go是一个使用go语言编写的库,用来连接k8s集群并对集群资源进行操作。使用以下代码使用go连上k8s集群,并查询集群的节点信息:package mainimport ( "fmt" metav1 "k8s.io/apimachinery

2020-07-10 13:22:24 1719

原创 SpringCloud Hystrix初体验

文章目录简介实验步骤bookstore应用初始化应用主程序应用配置访问应用reading应用初始化应用主程序BookService应用配置运行应用参考资料简介Hystrix是SpringCloud Netflix下的一个库,实现了Circuit Breaker(电路熔断器)模式。关于Circuit Breaker模式的原理,可以参考:Circuit Breaker(电路熔断器)模式原理 。本文主要介绍SpringCloud Hystrix的用法。实验步骤我们需要两个应用,分别为bookstore和r

2020-07-08 14:48:19 154

原创 Circuit Breaker(电路熔断器)模式原理

文章目录简介参考资料简介我们知道,在微服务架构中,一个服务通过远程调用去访问另一个服务是很常见的事,服务运行在不同的进程甚至不同的机器上,服务间的调用可能会一直得不到响应直到超时失败,更严重的是,如果有多个远程调用同时请求了一个没有响应的服务,可能会耗尽系统的资源从而导致跨服务的级联失败,为了防止这种灾难性的结果,有人(据说是一个叫Michael Nygard的人)就提出了一种叫做Circuit Breaker的模式,中文一般翻译为电路熔断器模式,它的原理就像电路中的保险丝一样,当电路出现异常(比如短路

2020-07-08 10:49:25 6004

原创 SpringCloud LoadBalancer初体验

文章目录简介步骤创建后端服务实例创建一个普通的Web应用主程序应用配置运行多个服务实例访问后端服务创建LoadBalancerClient应用初始化应用ClientSideLoadbalancerUserApplication.javaWebClientConfig.java配置LoadBalancer的后端服务实例注意事项参考资料简介一般情况下我们所说的负载均衡通常都是指服务端负载均衡,负载均衡器会维护一个可用的后端服务器清单,然后通过心跳机制来删除故障的服务端节点以保证清单中都是可以正常访问的服务端

2020-07-07 21:00:47 18957 5

原创 SpringCloud Zuul初体验

文章目录简介Zuul服务搭建后端服务book搭建创建一个web应用主程序配置application.properties访问book服务Zuul服务搭建创建应用添加一个pre过滤器主程序配置application.properties通过Zuul服务网关访问book服务参考资料简介Zuul在SpringCloud微服务架构中扮演服务网关的角色,对外部应用访问后端服务进行路由和过滤,服务网关(API网关)的作用的示意图如下:本文介绍搭建一个Zuul服务网关具体步骤。Zuul服务搭建我们一共需要创建

2020-07-07 12:54:40 244

原创 SpringCloud Eureka初体验

文章目录Eureka Server创建Eureka Server项目配置application.properties增加@EnableEurekaServer注解访问Eureka ServerEureka Client创建Eureka Client项目配置bootstrap.properties编写EurekaclientApplication.java访问Eureka Client在Eureka Server上查看Client的信息参考资料Eureka是SpringCloud Netflix提供的服务发

2020-07-06 23:08:40 182 1

原创 配置SpringCloud Config Client连上Config Server

SpringCloud Config Client实际上就是连接到Config Server的普通应用,前面一篇文章 SpringCloud Config Server搭建 已经介绍了如何搭建一个Config Server,本文介绍如何让一个Spring应用连上Config Server并使用Config Server上的配置信息。创建一个Spring应用不知道为什么,在https://start.spring.io/创建一个Config Client应用跑起来会有问题,所以我们创建一个普通的Sprin

2020-07-05 18:28:54 281

原创 SpringCloud Config Server搭建

文章目录1 创建Git仓库2 创建应用配置文件3 将应用配置文件commit到Git仓库中4 创建Config Server应用5 配置运行Config Server6 访问Config ServerSpringCloud Config Server的作用就是作为Spring应用和存放在Git中的配置文件之间的媒介,为其他应用提供一个统一的配置管理中心。关于SpringCloud Config的介绍可以参考:SpringCloud Config简介本文介绍SpringCloud Config Serve

2020-07-05 16:39:53 265

原创 SpringCloud Config简介

简介Spring Cloud Config为分布式系统的外部配置提供服务端和客户端的支持。使用Config服务端,你可以拥有一个集中的地方来管理所有环境下各个应用的配置。Config服务端和客户端的概念都源自于Spring的Environment和PropertySource抽象,所以它们可以很好地和Spring应用适配,但也能被用于其它任意语言的应用。当一个应用从开发阶段到测试阶段到生产上线,你可以管理这些环境中的配置,并且当应用迁移时,应用可以找到需要的所有配置信息。服务端的存储默认使用git实现,所

2020-07-05 10:17:24 314

原创 SpringMVC应用和RESTful应用的区别

SpringMVC应用的控制器需要依赖表现层(view)技术,在服务端把数据渲染成html后返回给浏览器,而RESTful应用的控制器直接返回一个对象,这个对象会被spring转成json格式写到http响应中。以下是一个简单的RESTful控制器:@RestControllerpublic class GreetingController { private static final String template = "Hello, %s!"; private final Ato

2020-07-04 12:14:29 773

翻译 《FreeFlow: Software-based Virtual RDMA Networking for Containerized Clouds》

FreeFlow: Software-based Virtual RDMA Networking for Containerized CloudsAbstract1 Introduction背景3 概述3.1 总体设计3.2 Verbs: the “narrow waist” for RDMA3.3 FreeFlow架构3.4 挑战4 透明地支持RDMA操作4.1 连接建立4.2 双向操作4.3 ...

2020-07-04 11:52:54 570

原创 MxGraph从入门到精通之5:在Vue项目中使用MxGraph

第一步:安装npm包npm install mxgraph第二步:在mxgraph.vue中使用mxgraph<template> <div> <div ref="graphContainer"> </div> </div></template><script>import mx from 'mxgraph'export default { name: 'Application

2020-07-03 16:26:00 3105 2

原创 NodeJS http服务端获取POST请求数据

http服务我们知道,使用nodejs标准库的http模块创建一个http服务很简单,如下:const http = require('http');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain');

2020-06-30 16:09:36 12376 2

原创 一句话说清楚NodeJS中module.exports和exports的区别

关于这个问题NodeJS的官方文档中有一句很精辟解释:What’s the difference between module.exports and exports?The first exposes the object it points to. The latter exposes the properties of the object it points to.翻译过来就是说,module.exports是直接导出整个对象,而exports导出的是对象中的属性。以下通过两个简单的例子可

2020-06-29 15:01:31 416 1

原创 MxGraph从入门到精通之4:布局

文章目录mxCircleLayout-圆形布局mxCompactTreeLayout-树状布局mxFastOrganicLayout-组织状布局本文介绍MxGraph支持的几种常用布局方式。mxCircleLayout-圆形布局圆形布局不关注节点之间的连线,节点之间有没有连线不影响最终效果。核心代码:for(let i=1; i< 10; i++){ graph.insertVertex(parent, null, 'Hello' + i, 0, 0, 80, 30);}let lay

2020-06-28 16:49:05 2627

原创 MxGraph从入门到精通之3:设置图形样式

文章目录设置节点样式创建指定样式的节点更新已有节点样式常用样式汇总shapefillColor通过上一节 MxGraph从入门到精通之2:HelloWorld程序解析,我们已经知道通过MxGraph绘制图形的核心步骤,绘制出来的图形默认的样式如下:我们可以在创建节点的时候通过参数来创建指定样式的节点或者调用graph的setCellStyle来更新节点的样式。设置节点样式创建指定样式的节点在上一节中helloworld示例程序插入顶点的方法可以传入第八个参数,来指定创建出来的顶点的样式,如下:

2020-06-19 17:45:17 4785

原创 MxGraph从入门到精通之2:HelloWorld程序解析

文章目录通过上一篇文章MxGraph从入门到精通之1:运行HelloWorld示例程序,我们已经把MxGraph运行起来,通过查看hellloworld.html可以总结该程序运行的核心步骤主要有以下几步:创建一个div元素,作为MxGraph渲染图形的容器在div元素上创建一块画布(graph)在画布上绘制顶点(Vertex)和边(Edge)把画布及其顶点和边更新渲染出来整个示例代码分析如下:<html><head> <title>Hello, W

2020-06-19 15:44:22 661

原创 MxGraph从入门到精通之1:运行HelloWorld示例程序

前言相信很多人和我一样,使用mxgraph是为了在浏览器上根据后端数据生成有向图,来实现数据可视化的效果,甚至在浏览器上添加一些暂停快进的按钮,来控制后端程序的执行过程。但是千里之行,始于足下,这个mxgraph到底要怎么跑起来看看效果先呢?官方文档虽然有写,但是官方文档写的东西太多了,很多同学可能根本找不着!还有一些同学可能跟我一样对前端项目是一脸懵逼,要让我把一个前端项目跑起来?领导,请给我几个月时间好好学一学前端吧,一个全栈工程师即将诞生!然鹅,就这,都要搞几个月,领导还不把你开了。好在,经过我的

2020-06-11 16:21:55 1265

原创 CloudStack那些事儿1 : 初识CloudStack

CloudStack是什么呢?百度百科对CloudStack的定义如下: CloudStack是一个开源的具有高可用性及扩展性的云计算平台,同时是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用CloudStack作为基础,数据中心操作者可以快速方便的通过现存基础架构创建云服务。但对于入门的人来说,这样的严肃的定义并不能给我们带来什么有意义的...

2020-06-08 10:20:16 3204 1

原创 MacBook各个快捷键符号

MacBook的idea,goland,clion等ide的快捷键表示是使用它们的符号,而不是shift、alt、command的来表示,蛋疼的是有些MacBook键盘上的按键并没有把这些符号印上去,找了好久终于找到这张图,花点时间记一下吧:...

2020-06-04 18:36:37 850

原创 Open vSwitch相关字段详解之L4:TCP, UDP, SCTP

Open vSwitch相关字段详解之L4:TCP, UDP, SCTP

2019-11-26 16:08:02 610

原创 Open vSwitch相关字段详解之L3:IPv4&IPv6

Open vSwitch相关字段详解之L3:IPv4&IPv6

2019-11-26 15:06:09 1869

原创 Open vSwitch ETHERNET相关字段详解(eth_src/dl_src、eth_dst/dl_dst、eth_type/dl_type)

文章目录字段概览字段详解eth_type/dl_type字段概览备注:由于历史原因,某些字段会有多个名字,如下表,/后面表示该字段的其他名字字段名长度格式Masking前置项访问权限OpenFlow 1.0OpenFlow 1.1NXM/OXM Support描述eth_src/dl_src48位以太网地址支持任意位掩码Ethernet读/写...

2019-11-24 21:26:30 3738

原创 Open vSwitch VLAN相关字段详解(dl_vlan、dl_vlan_pcp、vlan_vid、vlan_pcp、vlan_tci)

Open vSwitch VLAN相关字段(dl_vlan/dl_vlan_pcp/vlan_vid/vlan_pcp/vlan_tci)

2019-11-23 21:33:32 8680 1

原创 CentOS7.6 Open vSwitch安装

本教程基于openvswitch-2.11.1版本,若安装出现问题或使用其他版本,可参考:https://docs.openvswitch.org/en/latest/intro/install/fedora/安装步骤下载源码:https://www.openvswitch.org/releases/openvswitch-2.11.1.tar.gz解压:tar zxvf openvs...

2019-11-19 12:14:50 542

原创 Infiniband网络抓包

在机器上执行以下命令进行抓包ibdump -w ibdump201910210950_ib_send_bw.pcap # -w 指定保持数据的文件位置把.pcap文件用wireshark打开,如下图所示:

2019-10-21 14:36:22 1920 2

原创 Liunx下HPCC(HPC Challenge)的安装运行

安装运行步骤下载安装mpich或者其他MPI实现应该也行,参考网上相关教程,已安装则可以忽略这一步。下载安装blaswget http://www.netlib.org/blas/blas.tgztar zxvf blas.tgzcd BLAS-3.8.0/# sudo apt-get install gfortran 如果没有fortran编译器需要先安装一下gfortra...

2019-10-07 17:29:17 2633 4

proxychains-proxychains-4.2.0.tar.gz

proxychains可以让命令通过指定的proxy访问网络.proxychains-proxychains-4.2.0.tar.gz

2020-07-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除