分布式、微服务、中间件
文章平均质量分 78
分布式、微服务、中间件
AloneDrifters
这个作者很懒,什么都没留下…
展开
-
Spring Data Elasticsearch
文章目录一、 ELK二、 Elasticsearch简介三、 Linux安装Elasticsearch四、SpringData Elasticsearchpom.xmlapplication.yml创建实体创建索引 设置映射简单增删改查搜索五、 LogStash六、 使用Logback向Logstash中输出日志七、 在Kibana中查看日志信息八、 搭建日志系统九、 在Java代码中获取日志信息一、 ELKElasticsearch官网中提供了很多技术,其中一些技术是可以配合使用的,里面比较出名的就原创 2022-03-29 17:48:56 · 2943 阅读 · 0 评论 -
SpringCache与Redis
文章目录SpringCache简介常⽤注解Cacheable自定义CacheManager配置和过期时间自定义缓存KeyGenerator常用注解CachePut 和 CacheEvict多注解组合CachingSpringCache简介⽂档:https://spring.io/guides/gs/caching/⾃Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache⽀持,且提供了Cache抽象提供基本的Cache抽象,⽅便切换各种底层Cache只需要更少的代码就原创 2022-03-25 16:05:10 · 3172 阅读 · 0 评论 -
Redis(案例六:ZSet数据)
案例实战之SortedSet⽤户积分实时榜单最佳实践背景⽤户玩游戏-积分实时榜单IT视频热销实时榜单电商商品热销实时榜单⼀般的排⾏榜读多写少,可以对 master 进⾏写⼊操作,然后多个 slave 进⾏读取操作。如果是对象记得重写HashCode与Equals⽅法UserPointVOpackage net.xdclass.xdclassredis.vo;import java.util.Objects;public class UserPointVO { public原创 2022-03-23 17:00:52 · 5074 阅读 · 0 评论 -
Redis(案例五:Set数据)
案例实战需求之⼤数据下的⽤户画像标签去重介绍⽤户画像 英⽂为User Profile,是根据⽤户基本属性、社会属性、⾏为属性、⼼理属性等真实信息⽽抽象出的⼀个标签化的、虚拟的⽤户模型。“⽤户画像”的实质是对 “⼈”的数字化。应⽤场景有很多,⽐如个性化推荐、精准营销、⾦融⻛控、精细化运营等等, 举个例⼦来理解⽤户画像的实际应⽤价值,我们经常⽤⼿机⽹购,淘宝⾥⾯的千⼈千⾯通过“标签 tag”来对⽤户的多维度特征进⾏提炼和标识,那每个⼈的⽤户画像就需要存储,set集合就适合去重⽤户画像不⽌针对某个⼈,也可以原创 2022-03-23 16:54:25 · 1210 阅读 · 0 评论 -
Redis(案例四:购物车实现案例-Hash数据)
文章目录购物车常见实现方式购物⻋数据结构介绍相关VO类和数据准备数据源层json⼯具类添加购物车接口、查看我的购物车、清空购物车购物车常见实现方式1、实现方式⼀:存储到数据库性能存在瓶颈2、实现方式⼆:前端本地存储-localstoragesessionstoragelocalstorage在浏览器中存储key/value 对,没有过期时间。sessionstorage在浏览器中存储 key/value 对,在关闭会话窗⼝后将会删除这些数据。3、实现方式三:后端存储到缓存如redis可以开启AO原创 2022-03-22 17:35:38 · 2646 阅读 · 3 评论 -
Redis(案例三:天热销视频榜单实战-List数据)
需求1.⼩滴课堂官⽹需要⼀个视频学习榜单,每天更新⼀次2.需要⽀持⼈⼯运营替换榜单位置企业中流程1.定时任务计算昨天最多⼈学习的视频2.晚上12点到1点更新到榜单上3.预留⼀个接⼝,⽀持⼈⼯运营类似场景京东:热销⼿机榜单、电脑榜单等百度:搜索热榜疑惑:为啥不是实时计算?真正⾼并发下项⽬,都是预先计算好结果,然后直接返回数据,且存储结构最简单开发接⼝import net.xdclass.xdclassredis.model.VideoDO;import net.xdcl原创 2022-03-21 18:24:53 · 444 阅读 · 0 评论 -
分布式锁之Redis6+Lua脚本实现原生分布式锁
文章目录简介设计分布式锁应该考虑的东⻄基于Redis实现分布式锁总结解决解锁的原子性代码实现遗留⼀个问题简介分布式锁核⼼知识介绍和注意事项背景就是保证同⼀时间只有⼀个客户端可以对共享资源进⾏操作案例优惠券领劵限制张数、商品库存超卖核⼼为了防⽌分布式系统中的多个进程之间相互⼲扰,我们需要⼀种分布式协调技术来对这些进程进⾏调度利⽤互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题避免共享资源并发操作导致数据问题加锁本地锁:synchronize、lock等,锁在当前进原创 2022-03-21 18:05:03 · 310 阅读 · 0 评论 -
Redis(案例二:高并发商品首页热点数据开发实战)
热点数据经常会被查询,但是不经常被修改或者删除的数据⾸⻚-详情⻚链路逻辑检查缓存是否有缓存不存在则查询数据库查询结果放到缓存,设置过期时间下次访问则命中缓存代码实现pojo —热点视频@Data@NoArgsConstructor@AllArgsConstructorpublic class VideoDO { private int id; private String title; private String img; pri原创 2022-03-20 17:14:55 · 241 阅读 · 0 评论 -
Redis(案例一:注册登录-图形验证码+谷歌开源Kaptcha)
文章目录背景Kaptcha 框架介绍添加Kaptcha依赖Kaptcha配置CommonUtil⼯具类接⼝开发JsonData响应⼯具类封装校验逻辑背景注册-登录-修改密码⼀般需要发送验证码,但是容易被攻击恶意调⽤什么是短信-邮箱轰炸机⼿机短信轰炸机是批、循环给⼿机⽆限发送各种⽹站的注册验证码短信的⽅法。公司带来的损失短信⼀条5分钱,如果被⼤盗刷⼤家⾃⼰计算邮箱通知不⽤钱,但被⼤盗刷,带宽、接等都被占⽤,导致⽆法正常使⽤如何避免⾃⼰的⽹站成为”⾁鸡“或者被刷呢?增加图形验证码(原创 2022-03-20 15:35:34 · 1112 阅读 · 0 评论 -
Redis(入门)
一、 Redis简介1 NoSQL简介目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一,连接数据库关闭数据库都是消耗性能的过程。尽量减少对数据库的操作,能够明显的提升程序运行效率。针对上面的问题,市场上就出现了各种NoSQL(Not Only SQL,不仅仅可以使用关系型数据库)数据库,它们的宣传口号:不是什么样的场景都必须使用关系型数据库,一些特定的场景使用NoSQL数据库更好。常见NoSQL数据库:memcached :原创 2021-10-24 18:49:56 · 1739 阅读 · 0 评论 -
RabbitMQ消息可靠性 (投递+消费)
文章目录Rabbitmq的消息可靠性投递Rabbitmq的消息可靠性投递confirmCallbackRabbitmq的消息可靠性投递returnCallbackRabbitmq的消息确机制ACKRabbitmq的消息可靠性投递什么是消息的可靠性投递保证消息百分百发送到消息队列中去1 保证mq节点成功接受消息,消息发送端需要接受到mq服务端接受到消息的确认应答2 完善的消息补偿机制,发送失败的消息可以再感知并⼆次处理RabbitMQ消息投递路径⽣产者–>交换机->队列->原创 2022-05-08 18:02:47 · 1076 阅读 · 0 评论 -
RabbitMQ(mall项目学习 死信、延迟队列)
业务场景说明用于解决用户下单以后,订单超时如何取消订单的问题。用户进行下单操作(会有锁定商品库存、使用优惠券、积分一系列的操作);生成订单,获取订单的id;获取到设置的订单超时时间(假设设置的为60分钟不支付取消订单);按订单超时时间发送一个延迟消息给RabbitMQ,让它在订单超时后触发取消订单的操作;如果用户没有支付,进行取消订单操作(释放锁定商品库存、返还优惠券、返回积分一系列操作)。在pom.xml中添加相关依赖<!--消息队列相关依赖--><dependen原创 2022-03-08 17:07:20 · 187 阅读 · 0 评论 -
RabbitMQ
文章目录一、 AMQP简介二、 RabbitMQ简介1 RabbitMQ介绍2 RabbitMQ适用场景三、 RabbitMQ原理四、 RabbitMq账户管理五、 Exchange 交换器(交换机)1 direct交换器2 fanout交换器3 topic交换器六、 例---direct交换器 -------点对点1.父项目amqp_rabbit1.1 pom.xml2.amqp_rabbit_consumer2.1 pom.xml2.2 InfoLogconsumer.java2.3 LogConsum原创 2021-10-22 12:26:18 · 144 阅读 · 0 评论 -
SpringSecurity
文章目录SpringSecurity(前后端分离)(三更)介绍0. 简介1. 入门案例(非前后端)1.1 准备工作1.2 引入SpringSecurity2. 认证2.1 登陆校验流程2.2 原理初探2.2.1 SpringSecurity完整流程2.2.2 认证流程详解(入门案例认证流程)2.3 解决问题2.3.1 思路分析2.3.2 准备工作2.3.3 实现2.3.3.1 数据库校验用户准备工作核心代码实现2.3.3.2 密码加密存储2.3.3.3 登陆接口2.3.3.4 认证过滤器2.3.3.5 退出原创 2022-03-03 16:11:23 · 162 阅读 · 0 评论 -
SpringSecurity授权(访问控制)
一、 访问控制url匹配在前面讲解了认证中所有常用配置,主要是对httpSecurity.formLogin()进行操作。而在配置类中httphttpSecurity.authorizeRequests()主要是对url进行控制,也就是我们所说的授权(访问控制)。httpSecurity.authorizeRequests()也支持连缀写法,可以有很多url匹配规则和很多权限控制方法。这些内容进行各种组合就形成了Spring Security中的授权。在所有匹配规则中取所有规则的交集。配置顺序影响了之原创 2021-10-30 14:48:30 · 5603 阅读 · 0 评论 -
SpringSecurity认证
一、 Spring Security简介1 概括Spring Security是一个高度自定义的安全框架。利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。使用Spring Secruity的原因有很多,但大部分都是发现了javaEE的Servlet规范或EJB规范中的安全功能缺乏典型企业应用场景。同时认识到他们在WAR或EAR级别无法移植。因此如果你更换服务器环境,还有大量工作去重新配置你的应用程序。使用Spring Secu原创 2021-10-30 14:04:14 · 530 阅读 · 1 评论 -
SpringBoot整合Shiro实现登录认证和授权&&CHCache
注意:整体项目结构。省略数据访问层相关代码,使用固定数据进行认证。文章目录一、 Spring Boot整合Shiro实现登录认证1 添加依赖2 编写配置文件3 新建实体类4 编写业务层代码5 自定义Realm6 编写配置7 编写控制器8 编写启动类9 编写页面9.1 编写登录页面9.2 编写主页面二、 凭证匹配器1 修改ShiroConfig2 修改UserServiceImpl3 修改MyRealm三、 remember me实现1 修改ShiroConfig2 修改控制器方法四、 退出实现1 修改配置原创 2021-08-24 12:19:19 · 537 阅读 · 1 评论 -
shiro初步学习
Shiro简介Shiro架构原理INI文件介绍Shiro环境搭建及认证过程第一个Shiro演示授权加密及凭证匹配器自定义Realm凭证匹配器一、 Shiro 简介1 概述权限体系在现代软件应用中有着非常重要的地位。一个应用如果没有权限体系都会显着这个系统“特别不安全”,无论是传统的MIS系统还是互联网项目出于对业务数据和应用自身的安全,都会设置自己的安全策略。目前市场上专门的Java权限框架有Apache Shiro 和 Spring Security。相较于Spring Se.原创 2021-08-24 11:58:47 · 688 阅读 · 0 评论 -
SpringCloud Netflix Hystrix
文章目录一、 Hystrix简介1 什么是灾难性雪崩效应2 什么是Hystrix二、 服务降级(Ribbon中)三、 服务熔断(Ribbon中)(服务降级的强化版)四、 请求缓存(Ribbon中)(不推荐)(查询频率高,修改频率低时谨慎使用)五、 Openfeign的雪崩处理1 服务降级2 服务熔断六、 可视化的数据监控Hystrix-dashboard一、 Hystrix简介1 什么是灾难性雪崩效应造成灾难性雪崩效应的原因,可以简单归结为下述三种:1.服务提供者不可用。如:硬件故障、程序BUG原创 2021-11-04 13:22:37 · 771 阅读 · 0 评论 -
SpringCloud Netflix Ribbon
@[to]一、 Ribbon简介Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的。它不像spring cloud服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个spring cloud 微服务中。包括feign提供的声明式服务调用也是基于该Ribbon实现的。ribbon默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。Ribbon可以用于解决并提供微服务的负载均衡的问题。二、 使用Ribb原创 2021-11-02 20:51:53 · 692 阅读 · 0 评论 -
SpringCloud Netflix Eureka
一、 Eureka简介Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka组件Eureka包含两个组件:Eureka Server和Eureka Client。1.1 Eureka ServerEureka Server提供服务注册服务,各个原创 2021-11-01 22:14:59 · 238 阅读 · 0 评论 -
SpringCloud介绍
一、微服务单体应用特点大部分的开发者都开发过单体应用,无论是传统的 Servlet + JSP,还是 SSM,还是现在的 SpringBoot,它们都是单体应用,那么长期陪伴我们的单体应用有什么弊端?我们是面临了什么问题,导致我们要抛弃单体应用转向微服务架构?主要原因如下:部署成本高(无论是修改1行代码,还是10行代码,都要全量替换)。改动影响大,风险高(不论代码改动多小,成本都相同)。因为成本高,风险高,所以导致部署频率低(无法快速交付客户需求)。无法满足快速扩容,弹性伸缩,无法适应云环境特原创 2021-11-01 21:32:24 · 103 阅读 · 0 评论 -
Nginx
Nginx简介简介FastDFS是没有文件访问功能的,需要借助其他工具实现图片HTTP访问的。Nginx就具备代理虚拟机主机功能。Nginx (engine x) 是一个高性能的HTTP和反向代理服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错原创 2021-10-20 15:37:19 · 798 阅读 · 0 评论 -
图片管理应用
一、简介内容:实现一个图片管理应用。可以上传图片,查看图片,删除图片,下载图片。技术:SpringBoot:开发平台Dubbo:远程服务调用技术MyBatis:数据库访问MySQL:数据库Zookeeper:Dubbo的注册中心FastDFS:集中管理所有上传的图片Nginx:为FastDFS中的Storage服务器,提供一个虚拟主机,就是可以在线使用浏览器查看Storage内的图片。实现:实体 - 定义module : img_pojomodule中定义需要的实体类型原创 2021-10-16 16:18:39 · 269 阅读 · 0 评论 -
FastDFS(分布式文件系统)
一、架构架构图:Client:客户端。使用java语言编写的项目属于客户端。Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。在内存中记录集群中group和storage server的状态信息,是连接Client和Storage server的枢纽。Storage Server:存储服务器,文件和文件属性(meta data)都保存到存储服务器上架构解读:只有两个角色,tracker server和storage server,不需要存储文件索引信息。原创 2021-10-14 14:27:33 · 14899 阅读 · 2 评论 -
dubbo小项目2
1、项目结构搭建父项目pom.xml<?xml version="1.0" encoding="UTF-8"?>-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apa原创 2021-10-13 22:18:41 · 106 阅读 · 0 评论 -
dubbo小项目
完整Dubbo项目演示1 原型1.1 部门显示,显示全部部门信息1.2 员工新增1.3 查看部门员工2 按照分布式架构进行设计项目设定员工管理和部门管理不在同一个模块中,需要有一个员工管理项目和一个部门管理项目。为了方便,不去每个项目使用一个窗口,而是使用聚合项目。3 创建数据库表create table dept(id int(11) primary key auto_increment,name varchar(20));insert into dept values原创 2021-10-13 21:33:10 · 327 阅读 · 0 评论 -
MyBatis逆向工程
作用:帮助程序员根据数据库表生成实体类、mapper接口、mapper.xml内容。生成后根据设定API执行单表操作。使用:只需要把mygen项目直接open,运行主方法所在类。生成的内容是追加的,每次运行主方法所在类时先删除之前的文件夹。1 使用示例@SpringBootTest(classes = GeneratorApplication.class)@RunWith(SpringJUnit4ClassRunner.class)public class MyTest { @Autow原创 2021-10-13 18:25:12 · 69 阅读 · 0 评论 -
Dubbo
文章目录一、Dubbo架构二、Dubbo支持的协议三、Dubbo支持的注册中心一、Dubbo架构1 架构图2 架构说明2.1 虚线虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。2.2 Provider提供者。编写持久层、业务层和事务代码。2.3 Container容器(Spring容器),Dubbo完全基于Spring实现的。2.4 Registry注册中心。放置所有Provider对外提供的信息。包含Provider的IP原创 2021-10-07 22:37:14 · 72 阅读 · 0 评论 -
zookeeper
1 Zookeeper简介zookeeper分布式管理软件。常用它做注册中心(依赖zookeeper的发布/订阅功能)、配置文件中心、分布式锁配置、集群管理等。zookeeper一共就有两个版本。主要使用的是java语言写的。2 安装2.1 上传压缩文件上传到 /usr/local/tmp中2.2 解压#tar zxf apache-zookeeper-3.5.5-bin.tar.gz#cp -r apache-zookeeper-3.5.5-bin /usr/local/zooke原创 2021-10-06 22:11:23 · 220 阅读 · 0 评论 -
RPC(远程过程调用)
1、RPC和HTTP对比1.1 具体实现RPC:可以基于TCP协议,也可以基于HTTP协议。HTTP:基于HTTP协议1.2 效率RPC:自定义具体实现可以减少很多无用的报文内容,使得报文体积更小。HTTP:如果是HTTP 1.1 报文中很多内容都是无用的。如果是HTTP2.0以后和RPC相差不大,比RPC少的可能就是一些服务治理等功能。1.3 连接方式RPC:长连接支持。HTTP:每次连接都是3次握手。(断开链接为4次挥手)1.4 性能RPC可以基于很多序列化方式。如:原创 2021-10-06 22:01:07 · 397 阅读 · 0 评论