根据服务名称查看golang程序的profile信息

go语言本身带有runtime/pprof包,使用pprof可以查看程序profile信息(例如cpu、内存、goroutine等)。一个项目中可能有很多服务,这些服务部署在k8s集群或不同节点,如果想查看某个服务的profile信息(前提是开启profile功能),通常需要找到该服务对应节点ip和端口,如果服务部署在k8s集群,可以通过端口映射、端口转发、ingress等方式获取服务的profile信息,有点麻烦,特别是服务多了之后,不容易管理和查看,为了方便管理,希望只需要知道服务名称就可以获取到对应服务的profile信息,不需要知道ip和端口,通过服务名称就可以查看该服务的profile信息。具体实现步骤:(1)使用自定义的路由(/goprofile/your-server-name)替换默认路由(/de[...]

继续阅读 »

go语言开发规范

1代码格式化go默认已经有了gofmt工具,但是建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包,目前IDE基本都支持goimports,安装goimports:gogetgolang.org/x/tools/cmd/goimports对import的包进行分组管理,用换行符分割,而且标准库作为分组的第一组。如果你的包引入了三种类型的包,有标准库包、程序内部包、第三方包,建议采用如下方式进行组织你的包:import("fmt""os""kmg/a"[...]

继续阅读 »

prometheus学习笔记

1prometheus介绍Prometheus是一个云原生计算基础项目,是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并且如果观察到某些条件为真,则可以触发警报。prometheus的主要区别特征是:一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)一个灵活的查询语言来利用这一维度不依赖于分布式存储;单个服务器节点是自治的时间序列集合通过HTTP上的拉模型进行通过中间网关支持推送时间序列通过服务发现或静态配置发现目标多种图形和仪表板支持模式支持分层和水平联合

继续阅读 »

rabbitmq安装和使用

官网:https://www.rabbitmq.com/1rabbitmq基础知识RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一个AdvancedMessageQueuingProtocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成。RabbitMQ内建的集群功能可以实现其高可用,允许消费者和生产者在RabbitMQ节点崩溃的情况下继续工作,同时可以通过添加更多的节点来提高消息处理的吞吐量。单个节点的RabbitMQ会将这些metadata保存到内存中,同时对于[...]

继续阅读 »

go news

数据来源:https://github.com/gocn/news2020-03-01理解Go1.13中sync.Pool的设计与实现Go中字典的CommaOk是如何实现的

继续阅读 »

mongoDB学习笔记

官网:https://www.mongodb.orgmogodb是文档数据库,存储的是文档(Bson,json的二进制数据),内部执行引擎为JS解析器(谷歌v8),把文档储存成bson结构,在查询是转换为JS对象,可以通过熟悉的JS语法来操作。mogodb和传统数据库区别:传统数据库:结构化数据,设计了表结构后,每一行内容的列的类型是固定的。mogodb文档数据库:表下的每篇文档都可以有自己独立的数据结构(json对象都可以有自己独特的属性和值)1安装mongodb1.1在主机安装和启动mongodb(1)安装mongodb

继续阅读 »

mysql学习笔记

1mysql安装与客户端连接1.1在主机上安装mysql下面是安装在Centos7系统上#安装前创建用户和数据文件存储文件夹mkdir-p/data/mysqlgroupaddmysqluseradd-gmysqlmysqlchownmysql.mysql-R/data/mysql#安装依赖包yum-yinstallncurses-devel#下载mysql源码wgethttp://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.15.tar.gz#解压tar-zxvfmysql-boost[...]

继续阅读 »

redis学习笔记

官网:http://redis.ioredis定义:是开源、BSD许可、高级的key-value存储系统。可以用来存储字符串、哈希结构、链表、集合,因此常用来提供数据结构服务。1redis安装1.1在主机上安装名称操作下载redis源代码wget

继续阅读 »

kubernetes学习笔记

1Kubernetes基础概念官网:https://kubernetes.ioKubernetes是一个用于容器集群的自动化部署、扩容以及运维的开源平台,它是master-nodes架构,master只需几个来做高可用,任何时候只有一个master在管理集群,nodes可以多个,是真正部署容器的节点。Kubernetes的特点:自动装箱。基于资源和依赖自动部署服务。自我修复。当有一个容器挂了,能够自动启动一个新的同样服务替换故障的容器。自动实现水平扩展。只要物理资源充足,设置触发阈值,可以实现自动实现水平伸缩服务。

继续阅读 »

搭建高可用redis集群

1常见redis集群常见redis集群有RedisCluster、Codis、Twemproxy,其中Codis、Twemproxy是有中心节点的,而RedisCluster是没中心节点,而且是redis内置的集群方案,推荐使用redisCluster集群。redisCluster特点:无中心节点,客户端与redis节点直连,不需要中间代理层。数据可以被分片存储,集群数据加起来就是全量数据。可以通过任意一个节点,读写不属于本节点的数据。管理方便,后续可自行增加或删除节点。由于RedisCluster是分片存储,当集群中一个节点故障时,会损失该节点数据,为了实现高可用,需[...]

继续阅读 »