Golang 的十二条最佳实践

本文是对十二条 Golang 最佳实践的解读,补充了 Rob Pike 给我们整理的 Go 箴言,大家可以学习学习。

  1. 首先避免嵌套处理错误
  2. 尽可能避免重复
  3. 重要的代码先行
  4. 注释代码
  5. 短即是好/越短越好
  6. 具有多个文件的包
  7. 让你的包能够通过 “go get” 得到
  8. 了解你自己的需求
  9. 保持包的独立
  10. 避免在你的方法中内置并发
  11. 使用 goroutines 来管理状态
  12. 避免 goroutine 泄漏

Kafka 入门指南

本文是 Kafka 的入门指南。

kafka(http://kafka.apache.org/) 非常强大,应用场景也很多,性能很好。


基本要求

  1. JDK
  2. zookeeper

单机单点安装测试

第一步:下载解压

下载地址 http://kafka.apache.org/downloads.html

tar -xzf kafka_2.11-0.11.0.1.tgz cd kafka_2.11-0.11.0.1

第二步:启动 zookeeper-server 和 kafka-server

bin/zookeeper-server-start.sh config/zookeeper.properties


bin/kafka-server-start.sh config/server.properties

关于 server.properties 配置文件请参考后文:《server.properties配置文件参数说明

logkit 进阶玩法

本文是我在使用 logkit 过程中遇到的问题总结,希望可以帮助到大家。

logkit(https://github.com/qiniu/logkit) 非常强大,一定要抽时间阅读分析源码。


前情回顾

在上一篇文章中已经介绍了 logkit 的使用,参考运维日志分析 – Nginx 日志分析搭建案例构建日志检索系统。

再来回看一下效果图吧,😜

Kibana 统计

以上图表中的数据均由 logkit 上报所得。

其实 logkit 最核心的就是主配置和 Runner 配置。

Pandora 平台提供的酷炫远不仅于此,你以为 logkit 只能用于日志上报构建日志检索系统吗?那你就错了。

logkit 还可以被用来打点数据

UDB、UDDB 以及 TokuDB 的使用分析总结

本文是我对 UDB, UDDB, TokuDB 的使用分析,以及一些问题总结,希望可以帮助到大家。

TokuDB 非常不错,你值得拥有。


自建数据库和云端数据库

几年前,一般企业可能都是自建数据库吧(至少得配一个 DBA),随着云服务(AWS, AliYun, UCloud)的蓬勃发展,云主机和云数据库都是他们的标配。我们用上云数据库也就顺理成章,也算是明智的选择吧。

不然常规的各种维护都会让你疲于奔命,哪还有人力去做产品,做迭代啊。

一般自建的数据库都存在这么几个问题:

  1. 单点
  2. 物理机故障
  3. 数据库故障
  4. 维护成本不低

鉴于我个人经验,我对 AWS,Aliyun 的产品没有怎么广泛使用,所以也没有什么发言权,今天就只说说我们正在使用的吧。

使用 Pandora 平台轻松玩转大数据

本文是我在使用 Pandora 大数据平台的过程中遇到的问题总结,希望可以帮助到大家。

pic


心动不如行动,赶紧开始使用 Pandora 来构建属于你们自己的大数据平台吧。


大数据是什么?

大数据(英语:Big data),又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。在总数据量相同的情况下,与个别分析独立的小型数据集(Data set)相比,将各个小型数据集合并后进行分析可得出许多额外的信息和数据关系性,可用来察觉商业趋势、判定研究质量、避免疾病扩散、打击犯罪或测定即时交通路况等;这样的用途正是大型数据集盛行的原因。【摘自维基百科】

大数据平台又是什么?

我先给大家看看使用 Pandora 大数据平台构建的一些效果图吧。

Grafana 统计监控:

Grafana 统计监控1 Grafana 统计监控2 Grafana 统计监控 24h

配置告警后的告警历史 Grafana 监控告警

触发警戒值之后还会发邮件的哦(带图的哦)

Grafana 邮件告警

日志上报后的查询界面 Kibana 统计

上面这些图表和功能,有没有让你心动呢?


基本介绍

Pandora 潘多拉是一套面向海量数据,以及基础技术人员的,管理大数据传输、计算、存储和分析的大数据平台。

Pandora Arch

Pandora 共包含五个组件级服务:

组件服务 概述
大数据工作流引擎 数据接收,(实时/离线)计算和导出(支持多种数据格式:HTTP,日志检索服务,时序数据库,对象存储);
时序数据库 时间序列数据库(高速存储,聚合和检索);
日志检索服务 海量日志存储和检索;
报表工作室 基于数据快速制作动态/静态报表,生成气象观测台;
XSpark 基于 Spark 和容器云,快速进行海量数据分析与可视化;

如何开始?

目前 Pandora 大数据平台产品处于有限开放、免费试用阶段,你可以联系七牛的销售或客服申请开通试用,也可以发送邮件给 pandora[AT]qiniu.com 注明您的公司名称及联系方式,申请试用。他们在收到申请后一个工作日内为您审核。

  • 申请注册七牛账号,登录之后的界面如下:

七牛控制台

  • 申请 Pandora 大数据平台的相关权限,通过之后登录的界面如下:

七牛控制台-大数据平台

从图中,我们可以看出,侧边栏多了大数据工作流引擎、时序数据库、日志检索,容器应用市场,这是 Pandora 包含的 5 个组件的入口。

  • 容器应用市场

容器应用市场-审核中


准备工作

Pandora 大数据平台的基本流程如下:

  • 通过(logkit/SDK/API )打数据到工作流(workflow);
  • 在 workflow 中,进行数据计算和导出 (可导出到 TSDB/LogDB/HTTP/对象存储);
  • 然后在 TSDB/LogDB 中查询数据,或通过 Grafana 进行图表绘制。

其中几个组件服务的基本情况:

  1. 实时工作流、离线工作流(实时的数据源和消息队列的数据存储时间是2天);
  2. 时序数据库:创建仓库(类比:数据库)、序列(类比:表)[最大的数据存储时限是30天];
  3. 日志检索:创建仓库[数据存储时限:最大可设置为永久]
  4. 容器应用市场:目前官方应用提供有Grafana,Kibana,XSpark;(这 3 个默认是没有开通的,还需要再申请开通),第三方应用暂无;

TiDB 集群的入门与实战

本文耗时较长,包括实战演练以及经验总结。

我很早就接触了 TiDB ,不过一直都是单机版,最近对于大数据存储以及性能、可扩展性方面有所要求,所以对 TiDB 有了更深的投入,首先就是搭建一个测试集群环境,实打实的试用一段时间才知道是什么感觉。

本文是我对搭建 TiDB 集群的入门和实践过程的纪要,希望对大家有所帮助。

本文分为以下几个方面来进行介绍:

  • 准备工作
  • 安装、配置调试
  • 监控
  • 总结
  • 参考资料

Gitlab 血泪迁移升级史

本文耗时较长,包括实战演练。

准备 gitlab 的迁移、升级方案

准备工作

  1. 申请一台新的云主机用于重新安装,然后迁移备份好的 Gitlab;
  2. 配置开放 ssh 端口 380(修改SSH的端口很大程度上能杜绝被黑客扫描,增加系统的安全系数)
1
2
3
4
5
6
vim /etc/ssh/sshd_config(开放 380 端口)
  Port 22
  Port 380
  ListenAddress 0.0.0.0:22
  ListenAddress 0.0.0.0:380
/etc/init.d/sshd restart

注意:

我们要先设置成两个端口,测试成功后再关闭一个端口 22,这是为了在修改的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试,以免发生连接不上的状况。

安装

  1. 配置清华大学的开源源站地址 Gitlab Community Edition 镜像使用帮助

RHEL/CentOS 用户

新建 /etc/yum.repos.d/gitlab-ce.repo,内容为

[gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1

再执行

sudo yum makecache sudo yum install gitlab-ce-8.13.11-ce.0.el6.x86_64 sudo gitlab-ctl status; sudo gitlab-ctl reconfigure;

注意

  1. 我们这里选择的 omnibus 方式的 Gitlab 版本(8.13.11);
  2. 安装好之后,启动一下刷新配置,然后再重新启动,确认是否可以正常访问。

MySQL 数据库索引列长度限制

本文耗时 60 分钟。 本文是基于 MySQL #1071 - Specified key was too long; max key length is xxx bytes展开的实战和分析讨论。 演示错误 MySQL 当前主要的运行版本是 5.5 5.6 5.7,下面的实战主要