自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Just do it!

人生不容迟疑,否则尽是忧伤。

  • 博客(153)
  • 资源 (1)
  • 收藏
  • 关注

原创 【MySQL】高可用

说明高可用对于互联网应用基本上是标配,目的是最大程度的为用户提供服务,避免因为服务器宕机等意外故障而终止服务。相比于无状态服务(如前后端应用),数据库服务的高可用问题更为复杂,不仅仅是能访问,更需要保证其数据的正确性。在考虑数据库高可用架构时,需要考虑以下问题:数据库服务器如果发生宕机或者意外中断等故障,能够尽快恢复数据库服务的可用性,减少停机时间用作备份、只读副本等功能的非主节点...

2018-08-26 20:27:04 4179 4

原创 如何理解RPC

简述远程过程调用(Remote Procedure Call,缩写为RPC),是一种用于构建基于C/S(客户端/服务器)的分布式应用程序技术。调用者与被调用者可能在同一台服务器上,也可能在由网络连接的不同服务器上,对于他们来说,网络通信是透明的,远程调用像本地调用一样简单。理解RPC就是要像调用本地函数一样去调用远程函数,要理解RPC,让我们先来看看如何完成一个本地函数的调用:...

2018-08-06 20:05:33 6645 4

原创 Docker登录Harbor私有仓库

说明在安装Harbor时,可以配置启用http或者https的访问方式。默认为http(非加密连接,数据传输不安全,使用相对简单);如果采用https的方式,使用TLS加密,数据传输更安全,但是需要配置证书,操作相对繁琐。harbor.cfg文件:#The protocol for accessing the UI and token/notification service, b...

2018-07-29 14:56:06 40964 17

原创 初识etcd

前言   etcd来自于两个单词:Unix的“/etc”目录和“distibuted”,etc目录通常保存单机的配置信息,etcd表示存储大型分布式系统的配置数据。  它是一个分布式、高可用的key-value型存储仓库,通常用于配置共享与服务发现,为分布式系统提供关键数据存储服务。它由CoreOS开发并开源,授权协议为Apache,据官网数据显示,目前有Kubernetes, Cl...

2018-02-18 11:50:33 1111 67

原创 浅析SSL/TLS协议基本运行机制

前言   在手动搭建kubernetes集群的时候,涉及到了TLS认证的配置,其步骤较为繁琐,如果不清楚TLS背后的流程和原理的话,会遇到各种各样千奇百怪的问题。  本文会简要介绍SSL/TLS协议的运行机制,帮助我们理解kubernetes集群的配置,具体配置步骤会在后文中总结。概述   TLS(Transport Layer Security,传输层安全协议),其前身为 SSL (S

2018-01-14 15:07:27 1152 62

原创 你一定要了解的Kubernetes

前言   随着容器技术的发展,Docker近几年突然崛起,变得炙手可热,已经成为容器技术的事实标准。然而想要在生成环境中成功部署和操作容器的关键是容器编排技术,市场上有各种各样的容器编排工具(如Docker原生的Swarm),其中谷歌公司开发的Kubernetes得到开源社区的全力支持,IBM、惠普、微软、RedHat等业界巨头纷纷加入,Kubernetes已经成为GitHub上的明星开

2020-04-24 17:48:20 3939 69

原创 四年回忆-既是终点,又是起点

  四年前,站在选择的路口,觉得路那样的长,如今回头望去,却忍不住感叹四年的时光不过弹指一挥间。幸运的是,我们一直保持着博客总结的习惯,因此成长过程便有迹可循:It’s my life-2016 做自己的主人-我的2016 2017-择善而从 没有起始,没有终结–2017...

2018-08-27 17:44:10 1970 14

原创 数据库中间件-Middleware

概念中间件,也就是处于中间的软件,通过位置而非功能或特性来定义。中间件根据不同的功能又可以分为不同的种类,比如服务中间件Tomcat,消息中间件MQ等,这里主要讨论数据库中间件。数据库平台需要解决以下三个问题:可以为各个服务提供高性能、大容量、高可用的数据访问满足增量数据的订阅与消费,比如缓存数据一致性的需求异地,异构数据源的同步 整个数据库解决方案中,各个部分都有与...

2018-08-19 19:37:52 1778 2

原创 LVS

简述Linux虚拟服务器(Linux Virtual Server,LVS)是一个虚拟的服务器集群系统,用于实现负载平衡。项目在1998年5月由章文嵩成立,是国内最早出现的自由软件项目之一,目前已经是Linux内核的一部分。工作原理IP负载LVS采用了IP负载均衡技术(效率最高)来实现虚拟网络服务,而在IP负载均衡技术中,主要有三种实现方式:NAT(网络地址转换)IP Tu...

2018-08-09 11:36:09 2573 3

原创 Rabbit MQ 安装

简述RabbitMQ是实现了AMQP的开源消息中间件,由Erlang语言(爱立信开发的一种通用并发程序设计语言)编写,现在是Pivotal公司的产品。 安装RabbitMQ的安装并不复杂,官方文档亦有很详细的安装流程,以CentOS 7为例,安装过程如下所示:Install Erlang因为RabbitMQ基于Erlang开发,所以需要先安装Erlang基础环境,文档...

2018-08-07 10:31:57 463 3

原创 Message Queue-消息队列

简述在计算机科学中,消息队列(Message Queue,MQ)是一种进程间通信或者同一进程的不同线程间的通信方式。MQ允许应用程序间通过发送消息来进行通信,当目标程序繁忙或者掉线,来不及处理消息,MQ会提供暂时的消息存储。 MQ中有两个关键字:消息:发送方与接收方之间传递的数据,其实际上就是一些带有头信息的字节数组。队列:一种数据结构,按照消息发送的时间顺序排列,先进先出。...

2018-08-04 17:16:25 1373 2

原创 分布式一致性

简述这里的Consistency(一致性)是指分布式系统中的数据一致性,而非数据库事务ACID特性中的Consistency。CAPCAP(或称布鲁尔定理)指出一个分布式计算系统不可能同时满足以下三点:一致性(Consistency):多个数据副本是否能够保持一致;可用性(Availability):每次请求都能获取非错的响应,但无法保证获取的数据是否最新;分区容忍性(P...

2018-07-30 15:05:00 3170 37

原创 Paxos

简述Paxos算法是Leslie Lamport于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法,是分布式一致性中的经典算法。Google在其分布式锁服务(Chubby lock)中应用了Paxos算法,Zookeeper的ZAB协议(ZooKeeper Atomic Broadcast protocol)也是参考Paxos来实现的。历史拜占庭将军问题(Byzantin...

2018-07-30 15:02:52 1965 10

原创 K8s生产环境下启用防火墙

简述当初在安装K8s集群时,为了安装方便关闭了所有机器的防火墙,但是如果是生产环境,非常不安全,因此有了这篇文章。文章总结了在开启防火墙状态下,需要开放哪些端口,以及需要注意的点。准备服务器操作系统:Ubuntu 16.04防火墙命令:ufw集群: 服务器角色 名称 ip etcd etcd1、2、3 192.168.22.104、1...

2018-07-29 14:49:23 16323 13

原创 【Mybatis】开启自动驼峰命名规则映射

说明  在数据库字段命名规范中,通常使用下划线“_”来连接两个单词,比如:user_type。但是在Java开发中,实体字段通常采用驼峰命名法,因此会在mapper文件的SQL语句中使用 “AS”设置别名来匹配实体。select user_type as userType from t_user  Mybatis 在 settings 配置项中有一个 mapUnderscoreToCa...

2018-07-25 09:20:27 20078 8

原创 【Redis】Cluster-集群

简介  在生产环境中,我们希望Redis可以支持以下特性:高可用:时刻保证Redis服务可用,降低单节点宕机带来的损失可拓展:随着数据的增多,可以通过简单的增加节点来实现横向扩展  Redis的主从复制与Sentinel相结合可以实现高可用,解决了扩展读的问题,但仍然是一个单实例Redis,没有解决扩展写问题,Redis Cluster便是官方给出的解决方案。原理  Re...

2018-07-16 17:02:44 434 8

原创 【Redis】HA-高可用

简述  虽然Redis的主从复制可以实现数据的备份,保障数据的安全,但是还不能实现高可用,需要手动故障转移,因此Master仍然可能存在单点故障,为此Redis提供了Sentinel(哨兵)模式来实现高可用。  Redis Sentinel 提供以下功能:Monitoring(监控):Sentinel会不断检查Master和Slave是否正常工作;Notification(通知):...

2018-07-16 16:57:18 923 6

原创 【Redis】Replication-主从复制

简述  在关系型数据库中,主从复制很常见,多是Master负责写数据,Slave负责读数据,从而提供数据库性能。Redis同样也采用了主从复制的方式,如果不考虑Redis Cluster(集群)或者Sentinel(哨兵模式)提供的高可用特性,基本的主从复制(leader-follower)很容易使用和配置。机制  主要机制:当Master-Slave连接正常时,客户端写操作、k...

2018-07-16 08:43:53 432 2

原创 【Redis】Persistence-持久化

概述Redis支持数据持久化,主要有两种方式:RDB(Redis Database)和AOF(Append Only File),可以单独使用,也可以两者相结合。RDBRDB是基于snapshot(快照)的方式进行持久化,会将某个时间点的所有数据保存到磁盘中,可以将快照复制到其他服务器上从而创建具有相同数据的服务器副本。优点:RDB文件是经过压缩的单个文件,保存了Re...

2018-07-14 17:19:31 711 4

原创 【Redis】Datatype-数据类型

简述Redis不仅仅是一个普通的key-value存储(仅支持字符串类型),确切来讲是一个数据结构服务器,支持多种数据类型。在Redis中,value值不限于简单的字符串类型,还能够处理更复杂的数据结构。内容KeyRedis key只能是字符串类型,并且是二进制安全的,这意味着你可以使用任意的二进制序列(从”foo”字符串到JPEG文件内容)都可以作为一个key值。空字符串...

2018-07-12 09:54:48 1506 1

原创 【Redis】Overview-概览

简介Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库,可用作数据库、缓存、消息代理,是目前最为流行的key-value型内存数据库。推荐使用Linux部署,官方不支持Windows构建。 特性In memory:基于内存,提供更高性能,同时支持持久化(默认开启),数据更安全。High availability:支持主从复制,通过Re...

2018-07-12 09:49:03 291 3

原创 Kubernetes Dashboard token失效时间设置

说明  升级了新版本的Dashboard(这里使用的v1.8.3),使用了较为复杂的双因子登录,正确输入用户名和密码之后还需要Token或者kubeconfig再次认证,保障了系统安全,同时也带来了一些不便。默认的Token失效时间是900秒,也就是15分钟,这意味着你每隔15分钟就要认证一次。// Expiration time (in seconds) of tokens gene...

2018-07-05 17:19:43 8218 5

原创 Transaction-事务

事务  数据库事务,是指作为单个逻辑工作单元的一系列操作,要么完全执行,要么完全不执行。事务中有的操作没有成功完成,整个事务中的所有操作都需要被回滚。 ACID  数据库事务拥有以下四个特性,习惯上称为:ACID。在数据库领域,ACID模型是最古老并且最重要的概念之一。原子性(Atomicity):原子在当时被认为是最小的物质,也就意味着不可在分。事务被视为是不可分割的最小...

2018-06-30 20:00:33 3180 6

原创 数据库-概览

概念  数据库,从字面上不难理解,可以看做存储电子文件的场所,如同仓库里的货物一样,用户可以对其数据进行添加、删除、更新、查询操作。所谓数据库就是以一定方式存储在一起、多个用户可以共享,具有最小的冗余度与应用程序彼此独立的数据集合。 类型  根据数据之间的组织方式,基本上可以把现代应用数据库分为两类:关系型、非关系型。关系数据库  Relational Database,...

2018-06-24 10:44:58 1857 9

原创 Spring Cloud Config-SVN

前言  Spring Cloud Config Server默认使用Git仓库来保存配置文件,同时也支持SVN,不过不同于使用Git仓库的配置,需要做一些调整。步骤依赖  首先需要添加svnkit的maven依赖,版本选择可以通过maven的中央仓库查看。<dependency> <groupId>org.tmatesoft.svnkit&l...

2018-06-17 20:46:19 449 11

原创 kubectl 安装与配置

简述  操作k8s集群可以分为两种方式:使用kubectl命令行工具;通过Dashboard页面可视化操作。Dashboard在k8s上是以插件的方式安装,集群出现问题时可能无法正常显示,还需要使用kubectl命令行工具来排查问题,并且命令行的方式效率很高,因此kubectl的安装与配置是管理员必须要掌握的。安装  kubectl本身只是一个可执行文件,不需要处理依赖关系,...

2018-06-10 14:39:26 18482 6

原创 Tomcat

概念Apache Tomcat最早是由Sun Microsystems开发的一个Servlet容器,在1999年被捐献给ASF(Apache Software Foundation),隶属于Jakarta项目,现在已经独立为一个顶级项目。Tomcat主要实现了Java EE中的Servlet、JSP规范,同时也提供HTTP服务,是市场上非常流行的Java Web容器。目录结构以...

2018-06-02 08:32:44 22909 12

原创 【Java】IDE

概念  集成开发环境(IDE,Integrated Development Environment ),通常包括编程语言编辑器、自动构建工具、调试器,有的IDE会有编译器/解释器,比如Visual Studio。IDE是生产力工具,初学者编程并不建议使用,但在实际项目中熟练掌握可以极大的提高开发效率。   每个程序员可能都有心中最喜欢的那个IDE,不过本文不准备讨论到底哪个IDE更好,只是总...

2018-05-31 19:27:25 6361 7

原创 Java EE-JPA

概念  JPA(Java Persistence API,Java持久层API),是一个基于ORM(对象关系映射)的标准规范,用来处理程序与数据库之间的关系。JPA最早由EJB3.0专家组开发,是JSR220实现的一部分,它只定义标准规则,不提供具体实现,JPA实现通常被称为:持久化提供者(persistence provider),目前主要的JPA实现有:Hibernate、EclipseL...

2018-05-30 11:22:02 422 20

原创 Web Services-网络服务

概念  在理解Web服务之前,我想我们需要理解什么是Service(服务),在经济学中服务区别于产品,即我们所说的第三产业。产品是属于有形的可以保存的财产;但服务是在产品制成后,利用这些产品去赚取利益。那么在计算机中,服务又是什么,通常我们把计算机中的服务认为是一种在后台运行的应用程序类型。  由于服务来源的不同,我们又可以把服务分为两种:本地服务(本地计算机提供的服务,不需要网络)和网络...

2018-05-26 16:31:36 1125 65

原创 JRE

概念   Java Runtime Environment(JRE),Java运行环境,简单的理解就是Java程序运行所需要的必要环境。JRE主要包括三部分:Java虚拟机(JVM)、核心类库以及其他一些必要的工具。JDK是JRE的超集,运行Java程序要需要安装JRE即可。JVM   Java虚拟机(Java Virtual Machine),可以运行Java字节码文件(c...

2018-05-20 15:32:24 4564 13

原创 【Java】Garbage Collection-垃圾回收

概念  垃圾回收(Garbage Collection)是一种自动的存储器管理机制,可以减轻程序员管理内存的负担,减少程序员犯错的机会。垃圾回收最早源于LISP语言,而非Java的伴生产物。Java与C/C++语言对于内存的管理,用钱钟书先生的《围城》描述非常形象:外面的人想进来,里面的人想出去。   垃圾回收主要需要解决三个问题:什么地方的垃圾需要回收 什么时间回收 使用...

2018-05-13 16:09:28 1219 59

原创 JVM-Java虚拟机

概念  虚拟机(Virtual Machine)指通过软件模拟物理机器,使其具有真实机器所具有的功能。根据应用范围与机器的相关性可以分为:系统虚拟机,提供可以运行完整操作系统的平台,如VirtualBox、VMware等程序虚拟机,为运行单个计算机程序设计,支持单个进程,如JVM、Dalvik(运行安卓)等  JVM主要有以下三个层面的相关概念:Specification:...

2018-05-06 16:15:02 816 14

原创 GitHub历史版本回退

问题描述  如题,最近几天的GitHub提交出了些问题,导致之前提交的更新丢失,考虑回退到之前的版本。在GitHub的Web页面上并没有找到回退的解决方案(如果大家知道的话,感谢告知),于是决定通过本地的 Git Bash来操作。解决方案查找 commit id:浏览GitHub上的提交历史记录,找到要回退的版本,复制commit id。 恢复历史版本:git r...

2018-04-29 08:33:49 23131 23

原创 【Java】包(Packages)

Packages前言  Java是面向对象语言,其基础类库的使用贯穿整个学习、开发过程。以JDK1.8来讲,类库数量还是非常多的,当然这不表示我们需要了解每一个类,所以先要对所有类有个整体上的认识,再根据其重要性选择性的去学习。包  查看Java SE8的API文档,根据包名基本上可以分为三类:java.*:标准类库,向后兼容javax.*:最早表示标准库的拓展(e...

2018-04-22 08:56:01 811 15

原创 【Java】异常(Exceptions)

概念   exception是“exceptional event”的缩写,是指执行程序中发生的事件,破坏了程序的正常执行流程。Java 异常处理机制使程序更加健壮易于调试,它可以告诉程序员三个问题:错误的类型、位置、原因,帮助程序员解决错误。 类别   Throwable是Java所有异常类的顶级父类,只有这个类的对象(或者其子类对象)才能被异常处理机制识别,也就是...

2018-04-12 11:29:04 2431 58

原创 【Java】泛型(Generics)

What    顾名思义,泛型:一般类型,也就是说可以为任何类型,泛型的本质是“参数化类型”,也就是说所操作的数据类型被指定为一个参数。泛型是在JDK1.5中引入的特性。Why    泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型,而不是在运行时才出现错误。在实际编程中,会出现很多这样的情况:同样的方法,只是数据类型不同。现在如果想申...

2018-04-08 21:06:14 5274 13

原创 【Java】原始数据类型与其包装类

Primitive types   Java语言中默认定义了8个原始数据类型,大致可以分为4类:整型:包含byte、short、int、long 浮点型:float、double 布尔型:boolean 字符:char  这8个基本的数据类型如果在声明的时候没有初始化,编译器会赋予默认值,引用类型的对象(如String)默认值为null。但如

2018-04-01 21:23:40 5677 13

原创 【kubernetes】无法使用本地镜像

问题描述   为了节省创建deployment的时间,提前在Node本地拉取了镜像,但是deployment在创建pod时,总是报错:can't pull image  这个错误表明,pod在创建的时候还是会去pull镜像,无论本地是否已经存在此镜像。解决方案   通过检查deployment的yaml文件,发现 imagePullPolicy 为“Always”(默认值),修改为“if

2018-03-25 17:51:50 8225 19

原创 高可用负载均衡服务器实现(keepalived + haproxy)

准备 两台Centos服务器,分别为118、119一个未被使用的ip地址,180配置 haproxy 安装haproxyyum -y install haproxy编辑 haproxy.service 文件vi /usr/lib/systemd/system/haproxy.service在 ExecStart 前添加 ExecStartPre ExecStartPre=/

2018-03-18 16:54:45 1407 20

魔方电脑大师之文件校验

可以验证文件的MD5 ,SHA1,CRC码,

2015-09-28

空空如也

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

TA关注的人

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