自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Forrest Gump的博客

小小开发

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

原创 RabbitMQ工作模式

一、工作模式介绍RabbbitMQ提供了6种工作模式:简单模式、work queues、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics主题模式、RPC远程调用模式(不太符合MQ)1.1 简单模式P:生产者,也就是要发送消息的程序C:消费者,消息的接收者,会一直等待消息到来Queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息1.2 Work queues 工作队列模式工作队列模式相对简单模式,

2022-06-19 21:22:43 1096

原创 RabbitMQ交换机

一、交换机的属性Name:交换机的名称Type:交换机的类型,direct,topic,fanout,headersDurability:是否需要持久化autodelete:假如没有队列绑定到该交换机,那么该交换机会自动删除Internal:当前交换机是否用户rabbitmq内部使用不常用,默认为falseArgurements:扩展参数,用户扩展AMQP 定制化协议二、交换机的类型2.1 直接交换机 direct exchange所有发送到direct exchange的消息都会被投递到

2022-06-19 21:22:15 933

原创 RabbitMQ安装部署及介绍

一、安装1.1 准备安装包erlang­18.3­1.el7.centos.x86_64.rpmsocat­1.7.3.2­5.el7.lux.x86_64.rpmrabbitmq­server­3.6.5­1.noarch.rpm1.2 安装rabbitmq依赖erlang,需要先安装erlang[root@localhost csdn]# rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm Preparing...

2022-06-19 21:21:59 359

原创 Kafka可视化管理、线上环境常见问题

下载kafka-manager包,进行解压、修改配置、启动修改kafka-manager.zkhosts为zookeeper集群地址即可启动命令kafka是scala语言开发,运行在JVM上,需要对JVM参数合理设置,修改bin/kafka-start-server.sh中的jvm设置,假设机器是32G内存,可以如下设置:这种大内存的情况一般都要用G1垃圾收集器,因为年轻代内存比较大,用G1可以设置GC最大停顿时间,不至于一次minor gc就花费太长时间,当然,因为像kafka,rocket

2022-06-19 16:18:55 277

原创 Kafka设计原理详解

在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。在kafka集群启动的时候,会自动选举一台broker作为controller来管理整个集群,选举的过程是集群中每个broker都会尝试在zookeeper上创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,这个broker就会成为集群的总控器controller。当这个controlle

2022-06-19 16:16:24 336

原创 java集成kafka实战

java集成kafka

2022-06-14 18:28:29 1311

原创 Redis缓存设计与性能优化

一、缓存设计1.1 缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个:第一, 自身业务代码或者数据出现问题。第二, 一些恶意攻击、 爬虫等造成大量空命中。缓存穿透问题解决方案:1、缓存空对象String get(String key) { // 从缓存中获取数据 String

2022-05-07 10:54:23 447

原创 Redis典型应用场景

一、String1.1 字符串常用操作SET key value //存入字符串键值对MSET key value [key value ...] //批量存储字符串键值对SETNX key value //存入一个不存在的字符串键值对GET key //获取一个字符串键值MGET key [key ...] //批量获取字符串键值DEL key [key ...] //删除一个键EXPIRE key seconds

2022-05-07 10:53:52 144

原创 六、MVCC 与 BufferPool缓存机制

一、MVCC多版本并发控制机制Mysql在可重复读隔离级别下可以保证事务较高的隔离性,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。这个隔离性就是靠MVCC(Multi-Version Concurrency Control)机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。Mysql在读已提交和可重复读隔离级别下

2022-03-02 09:56:43 75

原创 五、Mysql 事务隔离级别与锁机制

一、概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。二、事务及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。原子性(Atomicity) :事务是一个原子操作单元,其对

2022-03-02 09:55:53 66

原创 四、Mysql索引优化

一、优化总结1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。2、order by满足两种情况会使用Using index。1) order by语句使用索引最左前列。2) 使用where子句与order by子句条件列组合满足索引最左前列。3、尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。4、如果order by的条件不在索引列上,就会产生Using fil

2022-03-02 09:55:09 1608

原创 三、SQL语句在Mysql中的执行过程

一、Mysql 内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MyS

2022-03-02 09:41:40 333

原创 二、Explain 介绍

一、简介使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。举个栗子:在查询中的每个表会输出一行,如果有两个表通过 join 连接查询,那么会输出两行Explain 两个变种:1、explain extended:会在 explain 的基础

2022-03-02 09:38:50 335

原创 一、Mysql 索引

一、什么是索引索引是帮助MySQL高效获取数据的排好序的数据结构索引常用的数据结构:二叉树、红黑树、Hash表、B-Tree,MySQL当前使用的是B+Tree,B+Tree是B-Tree的变种。B-Tree特性:叶节点具有相同的深度,叶节点的指针为空所有索引元素不重复节点中的数据索引从左到右递增排序索引有可能在非叶子节点结束自动分层控制B+Tree特性:非叶子节点不存储data,只存储索引,可以放更多的索引叶子节点包含所有索引字段,所有查找都在叶子节点结束叶子节点用指针连接、提

2022-03-02 09:37:43 196

原创 Stream 流

1、概念Stream是Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL 执行的数据库查询。也可以使用Stream API来并行执行操作。简而言之,Stream API提供了一-种高效且易于使用的处理数据的方式。①Stream自己不会存储元素②Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream③Stream操作是延迟执行的。这意味着他们会等到需要结果

2020-07-06 17:21:52 326

原创 Lambda 表达式

1、概述Java8中引入了一个新的操作符"->” 该操作符称为箭头操作符或Lambda 操作符。箭头操作符将Lambda表达式拆分成两部分:左侧: Lambda表达式的参数列表;右侧: Lambda表达式中所需执行的功能,即Lambda体。2、语法举栗2.1 无参数,无返回值 @Test public void test(){ int num=3; Runnable runnable=()->System.out.println("Hello

2020-07-06 17:20:17 143

原创 五十六、Linux 性能调优概述

1、Linux 最大文件打开数为了防止失控的进程破坏系统的性能,Unix和Linux会跟踪进程使用的大部分资源,并允许用户和系统管理员使用对进程的资源限制,例如控制某个进程打开的系统文件数、对某个用户打开系统进程数进行限制等,一般限制手段包括:软限制和硬限制。**软限制(soft limit)**是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值,(noproc)最大线程数和(nofile)文件数;**硬限制(hard limit)**是可以在任何时候任何进程中设置,

2020-06-12 17:09:55 425

原创 五十五、TCP/IP 浅述

1、TCP/IP 报文TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地,而IP是给因特网的每台联网设备规定一个地址。TCP/IP 协议数据封装的过程包括:用户数据经过应用层协议封装后传递给传输层...

2020-06-12 17:09:25 142

原创 kafka 原理分析

1、Producer 原理分析kafka 生产者客户端由两个线程协调运行,这两个线程分别为主线程和 Sender 线程 (发送线程)。在主线程中由 KafkaProducer 创建消息,然后通过拦截器、序列化器和分区器的作用之后缓存到消息累加器( RecordAccumulator,也称为消息收集器〉中。 Sender 线程负责从RecordAccumulator 中获取消息并将其发送到 Kafka 中 。核心代码:org.apache.kafka.clients.producer.KafkaPro

2020-05-20 09:44:58 291

原创 kafka架构分析与集群搭建

1、kafka 简介Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica)、 基于zookeeper协调的分布式消息系统,它最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎、web/nginx 日志、访问日志、消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为其顶级开源项目。优势:高吞吐量、低延迟:

2020-05-20 09:44:08 570

原创 Zookeeper Java Api

1、原生maven依赖<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version></dependency>主类为 ...

2020-05-02 22:06:36 159

原创 Zookeeper 核心概念

1、角色Leader:Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO,写操作都走leader。Follower: Follower的逻辑就比较简单了。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行...

2020-05-02 22:06:25 167

原创 Zookeeper 部署

1、简介ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used ...

2020-05-02 22:06:14 183

原创 五十五、Kubernetes 滚动升级

1、概念高并发、高可用系统普及的今天,服务的升级更新至少要做到“业务不中断”。而滚动更新(Rolling-update)恰是满足这一需求的一种系统更新升级方案。滚动更新就是针对多实例服务的一种不中断服务的更新升级方式。一般情况,对于多实例服务,滚动更新采用对各个实例逐个进行单独更新而非同一时刻对所有实例进行全部更新的方式。对于Kubernetes集群部署的Service来说,Rolling up...

2020-04-28 13:36:17 440

原创 五十四、Kubernetes + Docker

1、介绍Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下:节省网络带宽,针对于每个镜像不用去Docker官网仓库下载;下载Docker镜像从本地私有仓库中下载;组建公司内部私有仓库,方便各部门使用,服务器管理更加统一;可以基于GIT或者SVN、Jenkins更新本地Docker私有仓库镜...

2020-04-27 16:05:56 319

原创 五十三、Kubernetes 概念介绍与部署

1、OpenStack 介绍OpenStack是一个由美国国家航空航天局(National Aeronautics and Space Administration,NASA)和Rackspace合作研究并发起的,以Apache许可证授权的自由软件和开放源代码项目,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,...

2020-04-27 16:05:39 240

原创 五十二、Firewalld

1、简介从CentOS7开始,默认是没有iptables的,而是使用了firewalld防火墙。Firewalld 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。什么是动态防火墙?回忆一下iptables service 管理防火墙规则的模式:用户将新的防火墙规则添加进/etc/sysconfig/iptables 配置文件当中,再执行命令 serv...

2020-04-18 23:05:13 358

原创 五十一、IPtables

1、IT安全问题随着互联网IT技术飞速发展,安全概念非常重要。IT 安全主要体现在硬件层面、软件层面、系统层面和网络层面。硬件层面:进出机房,设置门禁、指纹识别、来访登记、具体操作的事项;防止静电、监控机房温度、电子监控、空调安全运行的情况;电力安全保障、UPS+服务器双电源、灭火器、消防设备;接地线、防水、防地震、机房异地灾备、机柜加固、防雷。软件层面:软件服务的BUG、是否存在...

2020-04-18 23:04:59 145

原创 Sleuth 服务链路追踪

1、简介随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂。 在微服务的应用中,一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生请求结果。在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求后的失败。怎么样将请求过程的数据...

2020-04-17 19:56:46 314

原创 Config 配置中心

1、简介Spring Cloud Config为分布式系统外部化配置提供了服务器端和客户端的支持,它包括Config Server和Config Client两部分。由于Config Server和Config Client都实现了对 Spring Environment和PropertySource抽象的映射,因此,Spring Cloud Config非常适合Spring应用程序,当然也可与...

2020-04-17 19:56:37 160

原创 Zuul 网关

1、简介Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。 Zuul的核心是一系列的过滤器。所有从设备或网站来的请求都会经过Zuul到达后端的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:认证和安全,识别每个需要认证的资源,拒绝不符合要求的请求。性能监测,在服务边界追踪并统计...

2020-04-17 19:56:25 165

原创 五十、ELK日志平台

1、简介ELK由ElasticSearch、Logstash和Kibana三个开源工具组成,不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式、零配置、自动发现、索引自动分片、索引副本机制、restfu...

2020-04-16 00:34:44 283

原创 Hystrix详解

1、 分布式系统面对的问题在一个高度服务化的系统中,我们实现的一个业务逻辑通常会依赖多个服务。 如果其中的某一个服务不可用, 就会出现线程池里所有线程都因等待响应而被阻塞, 从而造成服务雪崩。什么是服务雪崩效应?因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,就叫服务雪崩效应。导致服务不可用的原因有很多,比如程序Bug、大流量请求、硬件故障、缓存击穿等。在服务提供者不可用...

2020-04-11 21:40:49 256

原创 四十九、Jenkins 持续集成

1、简介持续集成(Continuous Integration,CI|CD)是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础,持续集成意义如下:持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发...

2020-04-11 18:28:20 178

原创 四十八、Ansible Playbook

1、简介laybook由一个或多个"play"组成的列表,play的主要功能Ansible中的Task定义好的角色,指定剧本对应的服务器组。Task是一个任务,Task调用Ansible各种模块module,将多个paly组织在一个playbook剧本中,然后组成一个非常完整的流程控制集合。基于Ansible Playbook还可以收集命令、可以创建任务集,这样能够大大降低管理工作的复杂程度,P...

2020-04-04 18:07:51 290 1

原创 四十七、Ansible-常用模块详解

1、 Ansible ping模块ping模块主要用于判断远程客户端是否在线,用于ping本身服务器,返回值为changed、ping。[root@localhost ~]# ansible -k all -m pingSSH password: 10.0.0.149 | SUCCESS => { "ansible_facts": { "discovered_...

2020-04-04 18:07:12 593

原创 四十六、Ansible-自动化运维

1、简介随着互联网IT运维飞速发展,目前市场上涌现了大量的自动化配置维护工具,例如 PSSH、Puppet、Chef、SaltStack、Ansible等。目前互联网企业使用最多的两款自动化配置工具是Ansible和Saltstack。1.1 Puppet自动运维工具Puppet是早期的Linux自动化运维工具,是一种Linux、Unix、Windows平台的集中配置管理系统,发展至今目前已...

2020-04-04 18:06:49 236 1

原创 Feign 入门

1、简介1.1 什么是FeignFeign是Netflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS-2.0以及WebSocket。Feign可帮助我们更加便捷、优雅地调用HTTP API。 Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。Spring Cloud对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ri...

2020-04-04 16:42:39 187

原创 Ribbon 使用到原理浅析

1、什么是 RibbonSpring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon 客户端组件提供一系列的完善的配置,如超时、重试等。通过Load Balancer(LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询、随机等)去调用这些服务。 Ribbon也可以实现我们自己的负载均衡算法。客户端负载均衡:就是进程...

2020-04-04 16:42:18 743

原创 四十五、Docker-搭建本地镜像仓库

1、Docker UI1.1 简介通常来讲,开发人员和管理人员默认通过命令行来创建及运行Docker容器,但Docker的Remote API让他们可以通过充分利用REST(代表性状态传输协议)的API,运行相同的命令。Docker UI也是基于API方式管理宿主机的Docker引擎。Docker UI Web前端程序让你可以处理通常通过Web浏览器的命令行来管理的许多任务。安装镜像[ro...

2020-03-30 16:22:38 742 1

空空如也

空空如也

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

TA关注的人

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