Archive 2019

Kubernetes简介及环境搭建

发布于:2019-12-28

什么是Kubernetes Kubernetes是Google开源的容器集群管理系统,它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。 Kubernetes在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 Kubernetes功能概要 服务发现和负载均衡 Kubernetes可以使用DNS名称或自己的IP地址公开容器,如果到容器的流量很大,Kubernetes可以负载均衡并分配网络流量,从而使部署稳定。 存储编排 Kubernetes允许挂载多种存储系统,例如本地存储、公共云提供商等。 自动部署 …...

进入阅读

Go语言开发的顶级项目

发布于:2019-11-20

前言 自从10年前Google正式发布第一个版本的Go语言以来,Go语言的发展风风火火的走过10个年头,虽然现在仍然不能算是编程开发的王牌(于java、C、Pyhton相比),但是谁也不能忽视Go语言在如今编程领域的存在。 一个开发语言要想获得成功当然离不开自身的不带完善和优化,但是出色的顶级项目的出现也是激发更多人开始关注并且使用Go语言的重要原因,下面就来简单的盘点一下Go语言问世10周年以来那些由Go语言开发出来的赫赫有名的顶级项目,前半部分主要是国外友人的项目,最后几个是国人开发的项目。 Docker 官网地址:https://www.docker.com/ 官方文 …...

进入阅读

Mac上修改打开文件最大数目的方法

发布于:2019-09-29

too many open files too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 众所周知Mac系统是基于linux内核开发的,但是在使用上却有很多不同有liunx系统的操作,比如修改程序打开文件最大数目。出于系统安全的考虑,mac默认的程序打开的文件/socket连接数量超过系统设定值为256。由于一些特殊的研发场景,通常需 …...

进入阅读

流量复制技术

发布于:2019-09-20

为什么需要流量复制 对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况。以gemeter、ab,、webbench、http_load为例,这些通过模拟请求的压测工具,只能发送特定的参数,对于一些参数异常导致的程序处理异常是无法考虑到的,所以就需要一款能复制真实流量,并且不影响线上业务的工具。 流量复制工具有很多,例如Gor、tcpreplay、tcpcopy等,这些工具贴合真实场景,能模拟真实流量,并支持流量的放大或缩小,更容易测试出程序的瓶颈和潜在问题。 常见的流量复制工具有如下几种: …...

进入阅读

yum安装Nginx

发布于:2019-09-20

通过yum安装Nginx 在centos中安装软件的方式通常使用yum install xxx的方式,但是当运行命令yum install nginx的时候通常会报No package nginx available.,原因是nginx位于第三方的yum源里面,而不在centos官方yum源里面。 解决的办法就是添加epel(Extra Packages for Enterprise Linux)源,下载并安装epel的方法如下: #centos 6 wget …...

进入阅读

go modules使用

发布于:2019-08-26

go modules机制 go modules是golang在1.11版本中作为实验性功能加入,并在1.12版本中将go modules纳入正式支持。go modules是一个新型的go包管理工具,用于解决go程序的包依赖问题。 在go modules出现之前,go程序的第三方包依赖管理一直是个头疼的问题,曾经出现过的包管理工具有govendor、dep、glide、godep等,这些包管理工具都是基于GOPATH或者vendor目录,并不能很好的解决不同版本依赖问题。go modules是在GOPATH之外一套新的包管理方式。 模块是相关Go包的集合。modules是源代码交换和版本控制的单 …...

进入阅读

Docker网络和通信

发布于:2019-07-25

docker网络模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络,也就是在不使用–network参数时)、 none 、host。还有以后一种自定义模式,自定义模式有三种:bridge、overlay、macvlan。 host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 none:该模式关闭了容器的网络功能。 bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 通过如下命令可以查看docker网 …...

进入阅读

Prometheus简介

发布于:2019-07-14

Prometheus简介及其发展历程 Prometheus是一套基于Go语言开发的开源系统监控和报警框架。 它启发于Google的borgmon监控系统,从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发。 2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。 2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。 Prometheus作为新一代的云原生监控系统,目前已经有超过650+位贡献者参与到Prometheus的研发工作上,并且超过120+项的第三方集成。 …...

进入阅读

使用Dockerfile来定制Docker镜像

发布于:2019-07-12

Dockerfile定制镜像 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令,Docker程序将读取Dockerfile,根据指令生成定制的image。 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层, 因此每一条指令的内容,就是描述该层应当如何构建。 一般的,Dockerfile 分为四部分: 基础镜像信息 维护者信息 镜像操作指令 容器启动时执行指令 Dockerfile示例 #基础镜像信息 FROM ubuntu # …...

进入阅读

分布式系统最终一致性理论——BASE

发布于:2019-06-20

BASE理论 BASE理论是Basically Available(基本可用),Soft State(软状态)和Eventually Consistent(最终一致性)三个短语的缩写,由eBay架构师提出的,BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网分布式系统实践的总结,是基于CAP定律逐步演化而来。 其核心思想是即使无法做到强一致性,但每个应用都可以根据自身业务特点,才用适当的方式来使系统打到最终一致性 BASE思想的主要实现有: 按功能划分数据库 sharding碎片 基本可用(Basically Available) 基本可用是指分布式系统在出现故障的时候, …...

进入阅读

常见排序算法原理——Go语言实现

发布于:2019-06-17

冒泡排序——Bubble Sort 算法原理 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 package main import "fmt" func main() { arr := []int{1, 3, 45, 32, …...

进入阅读

分布式系统设计理论——CAP

发布于:2019-06-15

CAP定理 CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。 CAP的具体定义: Consistency(一致性):指数据在多个副本之间能够保持一致的特性,一般特指写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。 Availability(可用性):指系统提供的服务必须一直处于可用的状 …...

进入阅读

面向对象设计模式概述

发布于:2019-06-08

什么是设计模式 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结 使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。 设计模式七大原则 开闭原则OCP(Open Close Principle) 一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 在设计一个模块的时候,应当对这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。 为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。在很多面向对象编程语言 …...

进入阅读

Kafka常用命令行使用简介

发布于:2019-04-16

kafka-server-start.sh命令 kafka-server-start.sh命令用于启动kafka服务。一般用法 启动kafka服务,其中必须传递的参数是服务的配置文件路径。 kafka-server-start.sh ../config/server.properties 一般启动服务需要以后台运行的模式,需要额外新增 -daemon参数 kafka-server-start.sh -daemon ../config/server.properties 此外还可以通过 –override参数覆盖设置server.properties的配置, …...

进入阅读

Docker Compose的使用

发布于:2019-04-12

Docker Compose Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成,使用Docker Compose不再需要使用shell脚本来启动容器。 Docker Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。 Docker Compose可以通过Python的包管理工具pip进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker …...

进入阅读

分布式事务原理

发布于:2019-01-05

分布式事务 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。 分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚) DTP模型和XA事务协议 DTP模型X/Open组织定义的分布式事务处理模型。XA是DTP定义的 …...

进入阅读

Yum安装php7

发布于:2018-09-13

yum安装php7.0和php7.1 php7.0和php7.1的相关包在mirror.webtatic.com仓库中包含,还有一些相关依赖需要epel源。 需要添加epel和mirror.webtatic.com的rpm源,然后就可以开始相应安装了 #centos 6 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm #centos 7 rpm -Uvh …...

进入阅读

分类

开发
    --go (9)
    --java (5)
    --php (11)
    --mysql (9)
    --javascript (3)
    --html (1)
    --算法 (6)
架构
    --理论 (9)
    --网络 (3)
    --服务器 (2)
    --消息队列 (3)
    --容器 (5)
    --监控 (1)
    --搜索引擎 (3)
    --大数据 (0)
    --测试 (1)
系统
    --linux (10)
    --mac (2)
    --windows (1)
足球
    --世界杯 (60)
    --欧洲杯 (28)
    --文迷 (3)
大学时光
    --校园生活 (96)
    --假期生活 (17)
    --广院杯那些事 (14)
    --北京奥运 (6)
    --胡思乱写 (17)


最近发布

零拷贝技术介绍

服务网格技术简介

C语言标准和标准库简介

Kubernetes简介及环境搭建

Go语言开发的顶级项目


归档

2006 (109)
2007 (40)
2008 (47)
2009 (10)
2010 (6)
2012 (10)
2013 (14)
2014 (27)
2015 (15)
2016 (6)
2017 (8)
2018 (11)
2019 (17)
2020 (5)