自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小尾寒羊的博客

个人博客

  • 博客(50)
  • 收藏
  • 关注

原创 ELK+Kafka分布式日志收集系统环境搭建

一、ES与kafka环境搭建1、使用Docker搭建Elasticsearch Docker安装ES2、使用Docker搭建Kafka,因为这里是演示,所以Kafka没有搭建集群。 Docker安装kafka二、在项目中集成maven依赖:<dependencies> <!-- springboot 整合Kafka --> <dependency...

2019-08-09 20:37:07 796

原创 Docker安装Kafka和Zookeeper

1、下载kafka和Zookeeper镜像docker pull wurstmeister/kafkadocker pull wurstmeister/zookeeper2、运行Zookeeper环境docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper3、运行kafka环境(ip地址需要更换)d...

2019-08-09 18:55:52 1974

原创 基于Docker搭建Elasticsearch集群

一、环境搭建SpringBoot整合es时使用的集群环境,如果不搭建集群使用SpringBoot整合时会报错:None of the configured nodes are available我们只需要在一台虚拟机上面搭建多个docker容器即可。建立相应的文件夹cd /usr/local## 配置文件,用于挂载mkdir -p es/configcd esmkdir data1...

2019-08-09 11:57:35 659

原创 使用Logstash将MySQL同步到Elasticsearch

一、环境准备搭建es和kibana,可以参考我前面写的文章Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。二、环境搭建将logstash安装包上传到Linux服务器下,安装logstash-input-jdbc和logstash-output-elasticsearch两个插件。具体步骤...

2019-08-09 00:31:15 353

原创 使用Docker安装Elasticsearch和Kibana

一、Docker安装ES需要将Linux的内存设置大点,不然es无法启动。1、下载es镜像文件docker pull elasticsearch2、运行ESdocker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch注意:-p 5601:5601 是kibana...

2019-08-08 21:20:16 703

原创 使用Docker安装redis

一、拉取最新的redis镜像docker pull redis因为 redis 默认配置只能够本地连接,不能进行远程访问,使用 Redis Desktop Manager连接都会报错,因此需要手动挂载 redis 配置文件二、创建挂载文件1、新建文件夹## 数据存放目录mkdir -p /docker/redis/data## 配置文件存放目录mkdir -p /docker/r...

2019-08-08 20:58:38 1093 1

原创 基于Docker搭建GitLab环境

GitLab占用内存较大,虚拟机内存建议设置在2G以上。一、环境搭建一、下载镜像文件docker pull beginor/gitlab-ce:11.0.1-ce.0注意:一定要配置阿里云的加速镜像二、2.创建GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。mkdir -p /mnt/gitlab/...

2019-08-05 14:29:30 223

原创 Linux下常用命令收集

一、Docker常用命令收集1、docker images 查看镜像文件2、docker ps 查看正在运行的容器3、docker ps -a 查看所有容器4、docker container exec -it xxx(容器Id) /bin/bash 进入到容器5、exit 退出容器6、docker version 查看docker版本信息7、docker run -d -p 80:...

2019-08-05 13:44:30 120

原创 基于Docker搭建nexus私服

一、环境搭建1、下载nexus3镜像docker pull sonatype/nexus32、将容器内部/var/nexus-data挂载到主机/root/nexus-data目录docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nex...

2019-08-05 13:26:12 527

原创 Linux下配置mycat实现MySQL读写分离

一、什么是MyCatMyCAT是一款由阿里Cobar演变而来的用于支持数据库,读写分离、分表分库的分布式中间件。MyCAT支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也支持MongoDB等非关系型数据库。MyCAT原理MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做...

2019-08-05 10:48:39 533

原创 MySQL索引

一、为什么需要使用索引?MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。白话文:索引就像书的目录一样可以非常快速的定位到书的页码。如果向mysql发出一条sql语句请求,查询的字段没有创建索引的话,可能会导致全表扫描,这样的话查询效率非常低。二、数据结构Hash、平衡二叉树、B树、B+树区别2.1 数据结构Hash算法哈希表(Hash tab...

2019-08-05 08:39:43 120

原创 SpringBoot整合sharding-jdbc实现读写分离

一、什么是sharding-jdbcSharding-Jdbc在3.0后改名为Shardingsphere它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-Sphere定位...

2019-08-04 14:29:53 1662

原创 SpringBoot整合sharding-jdbc实现分表分库

一、Sharding-Jdbc分表分库LogicTable数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称。订单信息表拆分为2张表,分别是t_order_0、t_order_1,他们的逻辑表名为t_order。ActualTable在分片的数据库中真实存在的物理表。即上个示例中的t_order_0、t_order_1。DataNode数据分片的最小单元。由数据源名称和数据...

2019-08-04 14:26:20 388

原创 分布式链路监控与追踪系统(SpringCloud Sleuth + Zipkin)

一、分布式链路监控与追踪产生背景在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案服务与服...

2019-08-04 10:33:47 440

原创 MySQL主从复制环境搭建

一、MySQL在Linux环境下的安装1、先检查系统是否有安装木MySQLrpm -qa | grep mysql2、下载mysql的repo源wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm如果报错: -bash: wget: 未找到命令安装插件yum -y install wget3、安装...

2019-08-01 21:07:39 240

原创 高并发下分布式全局ID生成

一、高并发情况下,生成分布式全局id策略1、注意幂等性且全局唯一性2、注意安全性,不能被猜疑3、趋势递增性订单号命名规则:比如“业务编码 + 时间戳 + 机器编号[前4位] + 随机4位数 + 毫秒数”。二、利用全球唯一UUID生成订单号UUID基本概念:UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。UUID组成部分:当前日期和时间+时钟序列+随机数...

2019-08-01 21:06:43 291

原创 Elasticsearch集群环境搭建

一、ES集群管理ES是如何解决高并发ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心内容 分片机制、集群发现、分片负载均衡请求路由。二、ES基本概念名词Cluster代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,...

2019-07-31 22:28:49 191

原创 分布式日志收集ELK

一、传统系统的日志收集的问题在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常低下。通常,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有...

2019-07-31 22:27:32 311

原创 Spring Cloud2.0之Oauth2环境搭建(授权码模式和密码授权模式)

接口授权认证用Oauth2.0 管理微服务中的开放接口,对接口进行授权认证:在Spring Cloud需要使用oauth2来实现多个微服务的统一认证授权,通过向OAUTH服务发送某个类型的grant type进行集中认证和授权,从而获得access_token,而这个token是受其他微服务信任的,我们在后续的访问可以通过access_token来进行,从而实现了微服务的统一认证授权。客户...

2019-07-31 10:37:13 2879

原创 SpringCloud 微服务开放平台接口

一、什么是开放平台接口场景 :总公司与子公司 对接接口 还有一些合作伙伴总公司 提供接口1、能够获取到哪个子公司调用2、授权机制,能够灵活控制接口调用权限。例:阿里和顺丰闹矛盾,顺丰把权限修改阿里巴巴就不能调用接口。很多公司都有开放平台接口可以供我们练习使用的哈哈:比如腾讯的QQ互联网、微信开放平台、蚂蚁金服开放平台 、微博开放平台,比如实现功能QQ联合登陆、微信扫码登陆。都提供了...

2019-07-31 10:36:17 1871

原创 Spring Cloud 之 Spring-Security

一、什么是SpringSecuritySpring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系...

2019-07-31 10:34:48 4041

原创 Elasticsearch文档映射

一、文档映射把ElasticSearch的核心概念和关系数据库做了一个对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构。ElasticSearch中的映射(Mapping)用来定义一个文档,可以定义所包含的字段以及字段的类型、分词器及属性等等。文档映射就是给文档中的字段指定字段类型、分词器。在Elasticsearch7以后会将t...

2019-07-31 00:23:20 568

原创 中文分词器插件ik

一、分词器因为Elasticsearch中默认的标准分词器对中文分词不是很友好,会将中文词语拆分成一个一个中文的汉字。因此引入中文分词器-es-ik插件。**传统分词器演示效果:**会将词语拆分成一个一个汉字二、安装中文分词器1、下载对应插件https://github.com/medcl/elasticsearch-analysis-ik/releases注:插件一定要下载和es相...

2019-07-31 00:08:46 610

原创 Springboot2.0整合ElasticSearch

环境搭建1、maven依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</versi...

2019-07-30 18:48:50 2188 3

原创 使用Kibana进行简单的CURD和版本控制

一、简单的CURD操作先创建一个文档### 创建索引PUT /xwhy查看索引信息GET /xwhy创建文档### 创建文档 /索引/类型/id (id属于主键唯一标识,不能重复)PUT /xwhy/user/1{ "username":"mark", "age":21, "sex":"男"}可以对字段的值进行修改然后在执行上述命令,值就会修改,修改...

2019-07-30 18:02:14 250

原创 Linux环境下Elasticsearch6.4.3安装

一、安装说明Linux内存至少1G!由于Elasticsearch是Java写的,所以需要安装jdk环境。二、安装Elasticsearch1、将安装包使用上传工具上传到Linux上面的/usr/local目录下并且解压。tar -zxvf elasticsearch-6.4.3.tar.gz2、进入到es目录下的config文件夹下面,修改elasticsearch.yml文件n...

2019-07-30 17:30:51 1620

原创 kafka集群环境搭建

一、搭建Zookeeper集群环境首先搭建Zookeeper集群环境,可以参考我前面的博客Zookeeper集群环境搭建二、搭建kafka集群1、进入到/usr/local目录cd /usr/local2、下载卡夫卡安装包wget http://mirror.bit.edu.cn/apache/kafka/2.1.1/kafka_2.11-2.1.1.tgz3、解压并重命名tar ...

2019-07-28 21:51:53 503

原创 设计模式总结

一、设计模式六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Princi...

2019-07-26 19:05:46 134

原创 Zookeeper集群环境搭建

1、首选需要在centos里面安装jdk环境将下载的jdk包上传到服务器上的/usr/local目录下进行解压2、安装jdk1.8环境变量vi /etc/profileexport JAVA_HOME=/usr/local/jdk1.8.0_181export ZOOKEEPER_HOME=/usr/local/zookeeperexport CLASSPATH...

2019-07-26 19:04:29 191

原创 五种网站跨域问题解决方案

一、什么是跨域问题 是两个项目之间使用ajax(前端类似与后端技术httpclient)实现通讯,如果浏览器访问的域名地址和端口号与ajax访问的地址和端口号不一致的情况下,默认情况下浏览器会有安全机制,这个机制就是跨域问题,会造成无法获取到返回结果(但实际还是可以访问的,请求状态码为200,但无法获取到结果)。二、跨域问题怎么解决:跨域问题有如下5中解决方案:1、使...

2019-07-26 19:03:34 1994 3

原创 基于Zookeeper实现分布式锁

一、什么是分布式锁 分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序。在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借助分布式锁,保证在同一时间只有一个tomcat应用执行了定时任务。二、分布式锁常见的实现方案1、数据库实现分布式锁(不推荐,效率低)。2、基于Redis实现分布式锁...

2019-07-25 15:56:58 134

原创 基于Zookeeper实现服务Master选举(哨兵机制)

一、master选举使用场景及结构 现在很多时候我们的服务需要7*24小时工作,假如一台机器挂了,我们希望能有其它机器顶替它继续工作。此类问题现在多采用master-salve模式,也就是常说的主从模式,正常情况下主机提供服务,备机负责监听主机状态,当主机异常时,可以自动切换到备机继续提供服务(这里有点儿类似于数据库主库跟备库,备机正常情况下只监听,不工作),这个切换过程中选出下...

2019-07-25 15:42:08 868

原创 Consul+Upsync+Nginx动态负载均衡环境配置

一、什么是动态负载均衡传统的负载均衡,如果upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似于分布式配置中心。二、动态负载均衡的实现方案1、Consul+Consul-template 每次发现配置更改需要raload nginx...

2019-07-25 13:49:40 394

原创 lvs+keepalived+nginx实现高性能负载均衡集群

一、LVS作用LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。二、Keepalived作用LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出...

2019-07-25 13:48:52 388

原创 经典设计模式之单例模式

一、什么是单例模式单例模式确保一个类只有一个实例,并提供一个全局访问点,实现单例模式的方法是私有化构造函数,通过getInstance()方法实例化对象,并返回这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。二、单例模式的特点单例类只能有一个实例。单例类必须自己创建自己唯一的实例。单例类必须给所有其它对象提供这一实例。三、单例...

2019-06-18 22:09:19 174

原创 经典设计模式之适配器模式【Mybatis日志框架源码分析】

一、什么是适配器模式适配器模式就是将一个系统的接口转换成另外一种形式,从而使原来不能直接调用的接口变得可以调用。二、设计模式角色划分设计模式涉及三个角色:源(Adaptee):需要被适配的对象或类型,这里相当于插头。适配器(Adapter):连接目标和源的中间对象,相当于插头转换器,新版本与老版本能够实现兼容。这里相当于插头转换器。目标(Target):期待得到的目标。这里相当于...

2019-06-16 23:02:21 272

原创 经典设计模式之状态模式

一、什么是状态模式状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。二、状态模式应用场景1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。 通常,有多个操作包含这一相同的条件结构。State模式将每一个条件分支放...

2019-06-11 20:19:20 144

原创 经典设计模式之外观设计模式【门面模式】

一、什么是外观设计模式外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。二、外观设计模式原理图简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。1)门面角色:外观模式的核心...

2019-06-09 17:29:52 154

原创 经典设计模式之观察者模式

一、什么是观察者模式

2019-06-04 13:47:25 187

原创 纯手写JDK动态代理【深入了解Proxy类底层实现】

一、JDK动态代理原理分析1、在使用jdk动态代理的时候,必须要实现InvocationHandler接口public class JdkInvocationHandler implements InvocationHandler { /** * 被代理对象,目标对象 */ private Object target; public JdkIn...

2019-05-26 17:17:05 394

空空如也

空空如也

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

TA关注的人

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