- 博客(37)
- 收藏
- 关注
原创 spring-cloud 服务间通信与调用(Feign)
spring-cloud 服务间通信与调用(Feign)Feign简介Feign 的主要作用就是简化远程调用我们可以对比一下使用Eureka做原始HTTP调用,Ribbon调用和Feign调用三种方式使用Eureka做原始HTTP调用Ribbon调用深入学习FeignFeign的体系架构Feign的底层机制动态代理重试Feign的项目结构...
2021-05-02 22:55:34
661
原创 微服务(Spring Cloud)——负载均衡
一、概述负载均衡组件库: Spring Cloud Netflix 组件库组件: Ribbon二、负载均衡介绍(一)、什么是负载均衡负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。—— 百度百科(二)、微服务中客户端负载均
2021-03-19 23:38:46
6787
原创 spring cloud之eureka注册中心高可用改造
环境 windows10 spring cloud eureka组件一、修改hosts文件路径: C:\Windows\System32\drivers\etc文件末尾添加内容:127.0.0.1 peer1127.0.0.1 peer2二、启用双注册中心(一)、创建第一个注册中心副本项目1.新建子项目项目名: eureka-server-peer2.引入pom依赖这里的依赖基本跟原注册中心一致,因为是副本节点 <packaging>jar</pac
2021-02-23 00:47:42
296
1
原创 spring cloud 初体验之服务注册Eureka
一、什么是服务治理and服务治理技术选型(一)、什么是服务治理1.概述服务治理主脑一样,是整个微服务架构的第一关,是所有微服务应用都要思考的第一个问题。下面这我从服务治理能做什么(目标)和服务治理是怎么完成这些目标的,从这两个方面来给大家介绍一下什么是服务治理。2.服务治理要实现什么目标在整个分布式系统中,服务治理要实现4个目标第一,实现要高可用第二,要实现分布式调用第三,实现生命周期管理第四,健康度检查高可用:即在服务治理麾下的所有节点,不论是因为服务器自身原因还是外部原因,即使只有一
2021-02-19 23:38:00
451
3
原创 Hello Spring Cloud
一、Spring Cloud和微服务之间的关系(一)、微服务与Spring Cloud微服务是一种理念,是一种模式,或者说微服务是一种架构风格。就像是Java中的一个接口,虽然大家都知道怎么回事,但是没办法直接拿过来用。我们如果要用呢,那必须还得实现它,而Spring Cloud就是微服务的一种实现,它真正从技术层面,支撑起了微服务的理念。(二)Spring Cloud的诞生在spring cloud诞生前,有着这么一位Java企业级开发领域的宠儿,他自诞生以来,就以开放的形式不断引领着技术的革新,
2021-01-31 23:51:39
150
转载 微服务-初篇
一、微服务概念介绍(一)、简介微服务是一种架构风格,将一个大项目拆分为多个小的、独立的微服务(功能单元)。微服务是系统架构上的一种设计风格,主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP/HTTPS协议的RESTful API进行通信协作,也可以通过RPC协议进行通信协作。被拆分成的每一个小型服务都围绕着系统中一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制。由于有了轻量级的通信
2021-01-28 22:11:21
192
原创 接口幂等性
一、概述1.概念幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生不同的结果。2.适用情况重复提交,接口重试,前端操作抖动。3.业务场景如果业务上要求,接口运行多次与运行一次的效果是一致的,那么此时就需要实现接口幂等性。例如订单支付,订单提交等。二、幂等性设计的核心思想1.幂等性的核心思想通过唯一的业务单号保证幂等性2.保证幂等性的策略非并发情况下,查询本次操作相应的业务单号有没有执行过业务逻辑过,没有则执行业务逻辑;并发情况下,整个过程加锁
2021-01-24 00:43:38
143
原创 分布式事务
一、分布式事务概述1.CAP原理2.ACID原理与BASE原理3.基于XA协议两段提交(不建议使用)4.事务补偿机制5.基于本地消息表的最终一致方案6.基于MQ消息队列的最终一致方案二、分库分表所引发的问题1.业务被拆分2.多个独立数据库之间,事务不统一3.数据可能出现不一致的情况应用场景举例:三、分布式事务解决方案(一)、基于XA协议的两段提交1.简介:XA协议是有X/Open组织提出的分布式事务的规范由一个事务管理器(TM)和多个资源管理器(RM)组成提交分为两个阶段
2021-01-17 17:20:42
144
原创 Sharding-jdbc实现读写分离、分库分表
一、简介Sharding-jdbc官网:http://shardingsphere.apache.org/1.概述a、Sharding-jdbc是一个开源的分布式的关系型数据库中间件b、Sharding-jdbc是客户端代理模式c、定位为轻量级的Java框架,以jar包提供服务;可以理解为增强版的jdbc驱动d、完全兼容各种ORM框架,如Mybatis等架构图:2.与Mycat之间的差别a、Mycat是服务端代理,sharding-jdbc是客户端代理b、MyCat不支持同一库内的水平
2021-01-13 01:13:31
584
4
原创 MyCat实现读写分离、分库分表——环境搭建
一、环境搭建环境准备:采用Vmware做虚拟机,3台虚拟机Linux centOS 7采用yum方式,其中两台安装MySql检查两台MySQL是否正确下载MyCat软件包第三台机器安装MyCat,并且修改配置文件架构图如下(一)MySQL安装概述 : Linux中,通过yum方式安装MySqlMySQL官方安装教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html1、 Adding t
2021-01-07 22:45:46
373
转载 RabbitMQ+keepalived+haproxy搭建高可用集群
一、搭建普通集群1.环境准备2.RabbitMQ普通集群配置(1)配置hosts文件更改三台MQ节点的计算机名分别为mq01、mq02 和mq03,然后修改hosts配置文件vim /etc/hostname //其他两台相同 mq01.localdomainvi /etc/hosts192.168.100.143 mq01 //注意不能带.注意-主机名称也要更改192.168.100.144 mq02192.168.100.145 mq03(2)三个节点配置yum源,
2020-08-17 02:18:38
500
原创 RabbitMQ与springboot进行整合
一、RabbitMQ集群架构实操1.RabbitMQ分析(1)市场滴滴,美团头条等大厂均在使用RabbitMQ,前景敞亮,用途广泛(2)性能性能优异,稳定性强(3)功能可靠性消息投递模式,业界首屈一指,并且包含其他多种消息投递模式,功能丰富。(4)适配性与springAMQP完美整合,提供了非常丰富的API(5)适用性集群模式丰富,配置简单2.RabbitMQ整体架构(1)AMQP协议(2)RabbitMQ整体架构图二、RabbitMQ与springboot进行整合三、M
2020-08-16 14:46:45
131
原创 CentOS7环境中安装RabbitMQ
一、Linux环境中安装RabbitMQ1.软件准备yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel2. 下载RabbitMQ所需软件包wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm wget http://repo.iotti.biz/Cen
2020-08-15 03:02:56
152
原创 Kafka集群架构模型与原理解析
一、Kafka集群架构模型与原理解析1.Kafka简介(1)Kafka是Linkedin开源的分布式消息系统,目前归属于Apache顶级开源项目(2)Kafka基于Pull模式来处理消息消费,追求高吞吐量,最开始是用于日志收集和传输(3)0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误等,没有严格的要求,适用于产生大量数据的互联网服务的的数据收集2.Kafa优势(1)分布式(2)跨平台(3)超强数据堆积能力(4)实时性(5)水平扩展性3.Kafka性能优异的原因(1)顺序
2020-08-12 23:20:00
954
原创 RabbitMQ集群架构模型与原理解析
一、RabbitMQ集群架构和原理解析1.RabbitMQ的四种集群架构模式(1)主从模式(2)远程模式(3)镜像模式(4)多活模式2.主从模式(1)简介warren,主备方案,主节点挂了,从节点继续提供服务(2)配置a.Haproxy配置bind 0.0.0.0:5672 #绑定0.0.0.0的5672端口mode tcp #方式为tcpoption clitcpkatimeout c
2020-08-12 00:16:49
545
原创 消息队列简介和Active集群架构模型与原理解析
一、关于分布式消息队列的认知1.消息队列的应用场景(1)服务解耦(2)削峰填谷(3)异步化缓冲2.应用过程中,需要注意的关注点(1)生产端可靠性投递数据强一致,必须保证可靠性(2)消费幂等性一条消息只能被消费1次,不能被多次消费(3)低延迟,高可用,可靠性(4)堆积能力二、RabbitMQ实战三、RabbitMQ可靠性投递基础组件封装四、kafka应用实战五、kafka高吞吐量日志收集实战六、架构思考:分布式日志,跟踪,告警,分析平台1.业界主流消息队列2.ActiveM
2020-08-11 23:20:55
401
1
原创 分布式文件系统概念讲解与FastDFS文件服务器概述
前瞻现存问题:(1)普通文件上传,上传文件只能存在于单一服务器中,并且必须依赖于tomcat等容器(2)不支持集群(3)文件数据冗余(4)可扩展性差一、分布式文件系统1.概述二、搭建fastdfs文件服务器三、整合第三方文件存储服务四、springboot与文件服务的整合...
2020-08-09 23:56:51
374
原创 springboot与fastdfs文件服务的整合
一、springboot与fastdfs文件服务的整合1. 引入 redis 依赖包<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.7</version></dependency>...
2020-08-09 23:55:47
289
原创 搭建fastdfs文件服务器
一、搭建fastdfs文件服务器1.FastDFS环境准备-tracker官方环境准备教程:https://github.com/happyfish100/fastdfs/wiki(1)准备软件包开源地址:https://github.com/happyfish100(2)安装基础环境yum install -y gcc gcc-c++ yum -y install libevent(3)安装libfatscommon函数库tar -zxvf libfastcommon-1.0.42.
2020-08-09 16:02:09
390
原创 Redis缓存雪崩,穿透
Redis缓存雪崩,穿透1.Redis缓存穿透(1)现象在用户请求过程中,假设被请求的数据不在Redis缓存中,此时请求会直接落到数据库,当当大量这种请求发生时,就会导致数据库崩溃。这种现象被称为Redis缓存穿透(2)解决a.如果被请求的数据不在Redis缓存中,但在数据库中能查询到相应的数据,那么在请求数据库后,将被请求的数据放入到Redis缓存。b.如果被请求的数据不在Redis缓存中,并且在数据库中也不能查询到数据,那么在请求数据库后,需要设置一个空值到Redis缓存,这时也需要对这个k
2020-08-04 23:15:26
141
原创 Redis的各种机制
一、Redis的持久化机制1.简介Redis有两种持久化机制,分别是RDB和AOF,RDB:每个一段时间保存一个快照;AOF:保存每次写的操作指令;2.RDB(1)RDB的概念RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,因为RDB的存在,那么重启redis后,则会恢复。(2)备份与恢复备份:内存备份 --> 磁盘临时文件恢复:磁盘临时文件 --> 恢复到内存(3)RDB优劣势分析优
2020-07-30 23:59:33
1139
原创 Redis在Java程序开发中的应用
一、阻塞、非阻塞和多路复用器1.阻塞就是在等待的过程中,你不去做其他任何事情,一直等待响应2.非阻塞非阻塞,就是你再等待的过程中可以去做其他的事3.多路复用器多路复用器,接收请求,转发请求,但不处理请求,不会等待请求。SpringBoot 整合 Redis1. 引入 redis 依赖包<!-- 引入 redis 依赖包 --> <dependency> <groupId>org.springframework.boot</groupId>
2020-07-30 22:55:15
286
原创 Redis的基本命令与数据类型
一、Redis的基本命令redis-cli -a password shutdown :关闭redis./redis_init_script stop :关闭redisredis-cli :进入到redis客户端auth pwd :输入密码set key value :设置缓存get key :获得缓存del key :删除缓存redis-cli -a password ping :查看是否存活select index:切换数据库,总共默认16个flushdb:删除当前下边db中的数据
2020-07-30 00:16:21
159
原创 Redis的安装与配置
一、安装与配置Redis1.下载安装包官网:https://redis.io/download2.上传至linux3.安装 Redis(1)解压 redis-5.0.8.tar.gz文件tar -zxvf redis-5.0.5.tar.gz(2)查看解压后的文件(3) 安装gcc编译环境,如果已经安装过了,那么就是 nothing to doyum install gcc-c++(4)进入到 redis-5.0.5 目录,执行make and make install:mak
2020-07-29 23:29:21
143
原创 Nginx与Keepalived与Lvs
一、Nginx与Keepalived1.Keepalived安装部署(1)下载Keepalivedhttps://www.keepalived.org/download.html(2)2. 通过ftp工具上传到linux中的/home/software目录下(3)解压tar -zxvf keepalived-2.0.18.tar.gz(4)解压后进入到解压出来的目录,看到会有 configure ,那么就可以做配置了(配置安装和nginx一模一样)(5)安装配置./configure
2020-07-27 00:37:06
320
原创 Nginx的使用说明
一、upstream 指令参数1.upstream 指令参数 max_conns限制每台server的连接数,用于保护避免过载,可起到限流作用。upstream tomcats { server 192.168.1.3:8080 max_conns=2; server 192.168.1.4:8080 max_conns=2; server 192.168.1.5:8080 max_conns=2; }2.upstream 指令参数 slow_start缓慢加载,真实服务在启动后的指定时
2020-07-26 19:15:29
229
原创 Nginx的常见问题解决
一、Nginx的日志切割-手动概述:nginx默认的日志都会存在 access.log 文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把文件切割为多份不同的小文件作为日志1.创建一个shell可执行文件: cut_my_log.sh ,内容为:#!/bin/bash LOG_PATH="/var/log/nginx/" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var
2020-07-26 18:09:02
176
原创 Nginx核心配置文件介绍
一、nginx.conf 核心配置文件说明1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为 nobodyuser root;2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行worker_processes 1;3. nginx 日志级别 debug | info | notice | warn | error | crit | alert | emerg ,错误级别从左到右越来越大4. 设置n
2020-07-26 16:20:17
169
原创 Nginx的安装与运行
安装Nginx与运行1. 去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2. 上传nginx到linux系统3. 安装依赖环境(1)安装gcc环境yum install gcc-c++(2)安装PCRE库,用于解析正则表达式yum install -y pcre pcre-devel(3)zlib压缩和解压缩依赖yum install -y zlib zlib-devel(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
2020-07-26 15:45:42
624
原创 Logstash采集数据到ES
一、使用Logstatsh采集数据库数据到ES1.环境搭建和工具准备(1)es环境搭建参考:https://editor.csdn.net/md/?articleId=107477555(2)MySQL数据库环境准备(3)准备Logstatsh工具本次使用版本为:logstash-6.4.3.tar.gz,包括es版本也是使用的6.4.3(4)Linux环境准备(5)准备MySQL驱动包本次使用版本为:mysql-connector-java-5.1.41.jar,最好跟数据库版本对应(
2020-07-25 17:50:12
1884
原创 Elasticsearch安装教程包含IK分词器、head插件安装
1.安装环境准备Linux 、elasticsearch-6.4.3.tar.gz、SecureCRTSecureFX_HH_x64_7.0.0.326、elasticsearch-analysis-ik-6.4.3 .zip2.文件上传将es安装文件elasticsearch-6.4.3.tar.gz通过SecureCRTSecureFX_HH_x64_7.0.0.326上传到服务器3.正式安装(1)解压文件: tar -zxvf elasticsearch-6.4.3.tar.gz(2)移动
2020-07-21 22:45:24
250
原创 Linux日常使用中的常用命令和错误解决方案
一、常用并且好用的命令1.查看文件内容并过滤注释more filename | grep ^ [^ #],#号表示普通配置文件中的注释语句;二、Linux使用过程中的日常错误解决方案1.使用su从非root切换到root用户时,root用户密码输入正确了,但还是切换失败使用sudo su命令,然后输入当前用户密码,即可切换成功。...
2020-07-20 22:53:02
588
原创 Elasticsearch集群的搭建与测试
一、Elasticsearch集群1. Elasticsearch集群的概念Elasticsearch集群是由多个计算机节点组成的,每个计算机节点提供相同服务的计算机群组,各个主分片均匀分配给不同的计算机节点,且每个主分片对应的副本分片不能与主分片部署到同一台节点。...
2020-07-19 22:50:56
1178
原创 分布式搜索引擎-ES-进阶
分布式搜索引擎-ES一、文档乐观锁控制1.版本7.2以前版本7.2以前ES根据version来做乐观锁控制(1) 更新文档的部分数据格式:post请求 – http://192.168.43.8:9200/索引库名称/_doc/文档id?version=版本号请求体中数据:{ "doc": { "name": "study-2", "desc": "study is very good, 学习非常优秀!!" }}(2) 更新文档的所有数据格式:post请求 – http:/
2020-07-13 23:39:25
294
原创 分布式搜索引擎-ES-基础语法
1. 查询集群信息在postman工具中,使用get请求加IP http://192.168.1.6:9200/注:这里的所有IP均为elasticsearch节点IP2.查询集群健康状态在postman工具中,使用get请求加IP http://192.168.1.6:9200/_cluster/health3.删除索引库在postman工具中,使用delete请求加IP http://192.168.1.6:9200/索引库名称4.新建索引库在postman工具中,使用put请求加IP
2020-07-12 13:19:42
300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人