自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咸鱼翻面的博客

Java交流学习

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

原创 工作小记--求【数组中小于某个数的所有数中的最大值】

工作内容项目需求满5元,送1元,连续10天满5元,活动结束再送5元满10元,送2元,连续10天满10元,活动结束再送10元满20元,送4元,连续10天满20元,活动结束再送20元满30元,送5元,连续10天满30元,活动结束再送30元满50元,送10元,连续10天满30元,活动结束再送50元满100元,送20元,连续10天满100元,活动结束再送100元代码判断/** * @Description 数组中小于等于某个数的所有数中的最大值 */public static int g

2020-08-17 16:07:18 1126 1

原创 45. hystrix高可用系统架构介绍

目录前言hystrihystrix要解决的分布式系统可用性问题以及其设计原则前言之前的章节专注在高并发这一块,缓存架构,承载高并发,在各种高并发导致的令人崩溃/异常的场景下能够运行。现在我们研究什么样的情况下,可能会导致系统的崩溃,以及系统不可用,针对各种各样的一些情况,然后我们用什么技术,去保护整个系统处于高可用的一个情况下hystri参考博客: Hystrix都停更了,我为什么还要学...

2020-05-03 22:14:45 247

原创 44. 热点缓存问题:秒杀时的超热商品可能导致系统全盘崩溃的场景

目录前言瞬间缓存热点问题基于nginx+lua+storm的热点缓存的流量分发策略自动降级解决方案方案思路storm实时计算热点storm发送热点到nginxnginx的分发策略降级storm热点取消逻辑实战热点商品计算流量分发nginx服务应用nginx负载均衡流量分发策略热点缓存消失逻辑测试前言项目地址:切换到本章对应的tag标签。my-eshop-stormv0.5 基于ngin...

2020-05-02 18:29:05 1002 1

原创 43. 缓存冷启动问题解决方案:基于storm实时热点统计的分布式并行缓存预热

缓存冷启动缓存冷启动即缓存空的情况下启动,两种情形出现:新系统第一次上线,此时在缓存里可能是没有数据的系统在线上稳定运行着,但是突然间重要的redis缓存全盘崩溃了,而且不幸的是,数据全都无法找回来系统第一次上线启动,系统在redis故障的情况下重新启动,在高并发的场景下出现的问题:解决:redis重启过程中保证mysql不挂掉...

2020-05-01 18:02:08 525

原创 1. springcloud微服务中文件上传服务报临时文件错误:The temporary upload location....

问题springcloud微服务网关:gateway;新建的文件上传服务注册到网关上,文件上传经常失败:原因springboot的应用服务在启动时,会在操作系统的/tmp目录下生成一个Tomcat.*的文件目录,用于java.io.tmpdir文件流操作;程序对文件的操作时:会生成临时文件,暂存在临时文件中;Linux系统的 tmpwatch 命令会删除10天未使用的临时文件;...

2020-03-18 10:35:22 1296

原创 42. 通俗易懂大数据实时计算Storm教程

目录前言Storm基础Storm到底是什么mysql,hadoop与storm关系自己搞一套storm?storm的特点Storm的集群架构以及核心概念Storm的集群架构Storm核心概念Storm的并行度以及流分组什么是并行度,什么是流分组流分组策略常用不常用storm 单词计数demo依赖代码测试storm集群部署storm集群storm集群运行拓扑作业前言接下来热数据的处理,缓存雪崩...

2020-03-16 23:42:38 482

原创 41. Java分布式系统、缓存架构以及Storm大数据实时计算之间的关系

商品详情页缓存架构,缓存预热问题和解决方案,缓存热点数据可能导致整个系统崩溃的问题,以及解决方案解决方案和架构设计中,会引入大数据的实时计算的技术,storm为什么要引入这个storm,难道必须是storm吗?大数据实时计算storm缓存架构和storm的关系缓存架构和storm的关系,因为有些热点数据相关的一些实时处理的一些方案,比如快速预热,热点数据的实时感知和快速降级,全部要...

2020-03-15 21:10:54 252

原创 40. 【实战】缓存数据生产服务zk分布式锁解决方案的代码实现

通过zookeeper java client api去封装连接zk,以及获取分布式锁,还有释放分布式锁的代码。zk分布式锁原理通过去创建zk的一个临时node,来模拟给摸一个商品id加锁zk保证只会创建一个临时node,其他请求过来如果再要创建临时node,就会报错,NodeExistsException所谓上锁,其实就是去创建某个product id对应的一个临时node如果临...

2020-03-12 22:53:31 194

原创 39. 分布式缓存重建并发冲突问题以及zookeeper分布式锁解决方案

目录分布式重建缓存并发冲突问题由来解决方案基于zookeeper分布式锁介绍方案流程上篇文章整个三级缓存的架构已经走通了;但是遇到一个问题,如果缓存服务在本地的ehcache中都读取不到数据,就意味着,需要重新到源头的服务数据库中去拉去数据,拉取到数据之后,先给nginx的请求返回,同时将数据写入ehcache和redis中。在多个服务下,就会有重建缓存的并发冲突问题!分布式重建缓存并发冲突...

2020-03-08 21:48:05 277

原创 38. 【实战】基于nginx+lua+java完成多级缓存架构的核心业务逻辑

目录nginx+lua+java多级缓存流程修改分发层nginx配置应用层nginx缓存服务Java代码测试总结分发层nginx,lua应用,会将商品id,商品店铺id,都转发到后端的应用nginxnginx+lua+java多级缓存流程修改分发层nginx分发层nginxeshop-cache03<192.168.0.108>,vi /usr/hello/hello.con...

2020-03-05 22:50:06 497 1

原创 37. 【实战】部署分发层nginx以及基于lua完成基于商品id的定向流量分发策略

目录流量分发策略设计思路实战流程流量分发策略流量分发策略:通俗讲使相同的商品id固定的请求到某一个nginx缓存上,提高缓存命中率。基于上一篇,在eshop-cache02和eshop-cache03部署OpenResty用eshop-cache01和eshop-cache02作为应用层nginx服务器;用eshop-cache03作为分发层nginx;在eshop-cach...

2020-03-03 22:55:35 294

原创 36. 【实战】基于OpenResty部署应用层nginx以及nginx+lua简单测试

目录OpenResty:nginx+lua部署第一个nginx,作为应用层部署openrestynginx+lua开发的hello world工程化nginx+lua项目结构OpenResty:nginx+lua因为需要自定义一些特殊的业务逻辑,全都会在nginx里去写lua脚本,比如说,流量分发,用lua去写分发的逻辑,在分发层nginx里去写的再比如说,要用lua去写多级缓存架构存取...

2020-03-02 23:06:39 346

原创 35. 基于【分发层+应用层】双层nginx架构提升缓存命中率方案分析

目录缓存命中率低如何提升缓存命中率缓存命中率低上篇文章中缓存数据生产服务相当于三层缓存架构中的本地堆缓存ehcache+redis分布式缓存都搞定了就要来做三级缓存中的nginx层缓存了。如果一般来说,默认会部署多个nginx,在里面都会放一些缓存,就默认情况下,此时缓存命中率是比较低的如何提升缓存命中率双层nginx:分发层+应用层分发层nginx,负责流量分发的逻...

2020-03-02 21:53:26 210

原创 34. 【实战】基于kafka+ehcache+redis完成缓存数据生产服务的开发与测试

目录spring boot整合kafka编写业务逻辑测试业务逻辑spring boot整合kafka项目地址参考:0. 【缓存高可用微服务实战】资料总结切换到相应分支:编写业务逻辑不同维度两种服务会发送来数据变更消息:商品信息服务,商品店铺信息服务,每个消息都包含服务名以及相应id接收到消息之后,根据商品id到对应的服务拉取数据,这一步,我们采取简化的模拟方式,就是在代码里面写死,...

2020-03-01 22:43:10 259

原创 0. 【缓存高可用微服务实战】资料总结

软件链接:https://pan.baidu.com/s/1QwveSOB8z2FtzQZcOoF2dA提取码:akwz或者扫描二维码项目my-eshop-inventorymy-eshop-cache

2020-03-01 17:31:50 209 1

原创 33. 【实战】zookeeper+kafka集群的安装部署以及简单使用

目录异步更新:消息队列消息队列:kafkazookeeper集群搭建scala搭建kafka集群搭建异步更新:消息队列多级缓存的架构,主要是用来解决时效性不高的数据,比如一些商品的基本信息,如果发生了变更,假设在5分钟之后再更新到页面中,供用户观察到,也是ok的;时效性要求不高的数据,那么我们采取的是异步更新缓存的策略;时效性要求很高的数据,比如库存,采取的是数据库+缓存双写的技术方案,也...

2020-03-01 17:15:33 278

原创 32. Redis的LRU缓存清除算法讲解以及相关配置

目录reids清除原因LRU算法概述常用设置缓存清理流程redis的LRU近似算法reids清除原因多级缓存架构,缓存数据生产服务,监听各个数据源服务的数据变更的消息,得到消息之后,然后调用接口拉去数据。将拉取到的数据,写入本地ehcache缓存一份,写入redis分布式缓存中一份,你不断的将数据写入redis,而redis的内存是有限的,每个redis实例最大一般也就是设置给10G。那...

2020-03-01 15:56:23 219

原创 31. 【实战】缓存数据生产服务的工作流程分析以及项目搭建

目录缓存数据生产服务缓存框架搭建spring boot整合ehcache多级缓存架构,从底往上做,先做缓存数据的生产这一块。缓存数据生产服务简单介绍一下整个缓存数据生产服务的一个工作流程。商品详情页缓存数据生产服务的工作流程分析监听多个kafka topic,每个kafka topic对应一个服务(简化一下,监听一个kafka topic)如果一个服务发生了数据变更,那么就发送...

2020-02-29 22:55:02 222

原创 30. 商品详情页结构分析、缓存全量更新问题以及缓存维度化解决方案

目录商品详情页分析大型缓存全量更新问题缓存维度化解决方案整个缓存的技术方案,分成两种类型将。实时性比较高数据,比如说库存,销量之类的这种数据,我们采取的实时的缓存+数据库双写的技术方案,双写一致性保障的方案实时性要求不高数据,比如说商品的基本信息,等等,我们采取的是三级缓存架构的技术方案,就是说由一个专门的数据生产的服务,去获取整个商品详情页需要的各种数据,经过处理后,将数据放入各级...

2020-02-29 21:54:16 497

原创 1. Java基础重点复习指南

目录1. Java 对象初始化详细过程整理记录方便查看1. Java 对象初始化详细过程Java 对象初始化详细过程//父类Animalclass Animal { /*8、执行初始化*/ private int i = 9; protected int j; /*7、调用构造方法,创建默认属性和方法,完成后发现自己没有父类*/ pub...

2020-02-28 10:30:28 279

原创 29. 【实战】库存服务代码调试以及打印日志观察服务的运行流程

目录日志代码测试流程紧接着上一篇27.【实战】在库存服务中实现缓存与数据库双写一致性保障方案的业务代码,打印普通测试日志,观察功能是否实现。日志代码项目地址:my-eshop-inventory,切换到该分支,进行调试测试:配置自己的mysql;配置自己的redis集群地址;测试流程测试场景模拟: * 1. 一个商品库存更新请求过来,先删除redis中的缓存,然后模拟...

2020-02-27 22:51:43 117

原创 28.【实战】在库存服务中实现缓存与数据库双写一致性保障方案

目录pom依赖库存服务框架搭建:spring boot+mybatis+jedis,pom依赖pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</a...

2020-02-25 23:18:54 820

原创 27. 在centos中安装部署MySQL数据库

基于mysql去做一些开发的,因为缓存的底层的数据存储肯定是数据库选择在eshop-cache04 中部署mysql:# 先用yum安装mysql serveryum install -y mysql-serverservice mysqld startchkconfig mysqld onyum install -y mysql-connector-java...

2020-02-21 22:16:41 115

原创 26. 高并发场景下的缓存+数据库双写不一致问题

目录高实时性服务缓存+数据库双写不一致最初级【删除缓存失败】复杂【数据库更新未完成】起因解决:串行化串行化方案注意问题读请求长时阻塞读请求并发量过高多服务实例部署的请求路由热点路由问题高实时性服务实时性比较高的数据缓存 – 库存服务库存会更新,每次修改都要去更新缓存数据;库存数据在缓存中一旦过期,或者是被清理掉了,前端的nginx服务就会发送请求给库存服务,去数据库中获取相应的数据。更新...

2020-02-21 21:44:30 284

原创 25. Cache Aside Pattern缓存+数据库读写模式

目录Cache Aside Pattern删除缓存,而不是更新缓存28法则最经典的缓存+数据库读写的模式:cache aside patternCache Aside Pattern读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应更新的时候,先删除缓存,然后再更新数据库删除缓存,而不是更新缓存更新的时候,为什么是删除缓存,而不是更新缓存呢...

2020-02-20 21:57:32 216

原创 24. 亿级流量商品详情页的多级缓存架构以及架构中每一层的意义

目录三级缓存多级缓存架构中每一层的意义nginx本地缓存redis分布式大规模缓存tomcat jvm堆内存缓存商品详情页系统,缓存架构,90%大量的业务代码(没有什么技术含量),10%的最优技术含量的就是架构,上亿流量,每秒QPS几万,上十万的,读并发,高可用缓存架构三级缓存上亿流量的商品详情页系统的多级缓存架构采用三级缓存:nginx本地缓存+redis分布式缓存+tomca...

2020-02-20 21:36:45 669

原创 23. redis总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用

目录redis作用redis高可用redis的第一套企业级的架构redis的第二套企业级架构redis作用topic:高并发、亿级流量、高性能、海量数据的场景,电商网站的商品详情页系统的缓存架构商品详情页系统,大型电商网站,会有很多部分组成,但是支撑高并发、亿级流量的,主要就是其中的大型的缓存架构在这个大型的缓存架构中,redis是最最基础的一层高并发,缓存架构中除了redis,还有其他...

2020-02-19 22:47:32 917

原创 22. redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)

目录fork耗时导致高并发请求延时现象优化思路AOF的阻塞问题优化思路主从复制延迟问题主从复制风暴问题linux -- vm.overcommit_memoryswapiness最大打开文件句柄tcp backlog可以用公司里的一些已有的数据,导入进去,几百万,一千万,进去做各种压力测试,性能,redis-benchmark,并发,QPS,高可用的演练,每台机器最大能存储多少数据量,横向扩容...

2020-02-19 22:36:27 139

原创 21. redis cluster核心:gossip通信、jedis smart定位、主备切换

目录通信机制核心通信方式对比集中式机制reids gossip协议优缺点10000端口交换的信息gossip协议ping消息深入jedis cluster实现原理redis-cli -c 重定向请求重定向计算hash slothash slot查找java客户端 smart jedis介绍工作原理hashslot迁移和ask重定向高可用性与主备切换原理判断节点宕机从节点过滤从节点选举与哨兵比较通...

2020-02-19 22:10:17 260

原创 20. 【实战】redis cluster通过master水平扩容来支撑更高的读写吞吐+海量数据

目录流程redis cluster master扩容增加新的master nodereshard 迁移slot到新的master增加新的slave node删除node流程redis cluster模式下,不建议做物理的读写分离;建议通过master的水平扩容,来横向扩展读写吞吐量,还有支撑更多的海量数据redis单机,假设读吞吐是5w/s,写吞吐2w/s,扩展redis更多mast...

2020-02-18 23:45:44 240

原创 19. 【实战】测试redis cluster多master写入、读写分离、高可用性

目录介绍测试redis cluster测试多master写入 -> 支撑海量数据的分布式存储测试不同master各自的slave读取 -> 读写分离测试主备自动故障切换 -> 高可用性思想redis cluster去掉主从架构,读写分离扩展思想--如何学习技术介绍redis cluster,提供了多个master,数据可以分布式存储在多个master;每个master都带...

2020-02-18 17:30:31 1071 1

原创 18. 【实战】重新搭建一套读写分离+高可用+多master的redis cluster集群

目录搭建redis-cluster重要配置在三台机器上启动6个redis实例准备生产环境的启动脚本创建集群redis cluster最最基础的一些知识redis cluster: 自动,master+slave复制和读写分离,master+slave高可用和主备切换,支持多个master的hash slot,支持数据分布式存储停止之前所有的测试实例,包括redis主从和哨兵集群。搭建re...

2020-02-18 10:26:51 253

原创 17.数据分布算法:hash + 一致性hash + redis cluster的hash slot

目录redis cluster介绍三大数据分布算法最老土的hash算法和弊端(大量缓存重建)一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)redis cluster的hash slot算法讲解分布式数据存储的核心算法,数据分布的算法hash算法 -> 一致性hash算法(memcached) -> redis cluster hash slot算法用不同的算法,就...

2020-02-16 23:17:21 277

原创 16. redis如何在保持读写分离+高可用的架构下,还能横向扩容支撑1T+海量数据

redis单机瓶颈单机redis在海量数据面前的瓶颈。怎么才能够突破单机瓶颈,让redis支撑海量数据?redis集群架构redis cluster 支撑N个redis master node,每个master node都可以挂载多个slave node读写分离的架构,对于每个master来说,写就写到master,然后读就从mater对应的slave去读高可用,因为每个ma...

2020-02-16 22:40:11 331

原创 15. 哨兵节点管理以及高可用redis集群的容灾演练

目录哨兵节点管理增加删除容灾演练故障恢复总结过程哨兵的生产环境部署哨兵节点管理增加增加sentinal,会自动发现,过程参考上一篇14. 【实战】在项目中重新搭建一套读写分离+高可用+多master的redis cluster集群删除删除sentinal的步骤停止master节点 sentinal进程SENTINEL RESET *,在所有sentinal上执行,清理所有的mast...

2020-02-16 22:24:03 165

原创 14. 【实战】在项目中重新搭建一套读写分离+高可用+多master的redis cluster集群

目录哨兵的配置文件搭建集群第三个redis节点部署哨兵集群配置哨兵配置文件启动哨兵进程检查哨兵状态动手实操,练习如何操作部署哨兵集群,如何基于哨兵进行故障转移,还有一些企业级的配置方案。哨兵的配置文件sentinel.conf最小的配置每一个哨兵都可以去监控多个maser-slaves的主从架构,因为可能你的公司里,为不同的项目,部署了多个master-slaves的red...

2020-02-16 16:01:02 205

转载 13. redis哨兵集群,数据丢失,核心原理

目录基础知识功能哨兵分布式哨兵核心点哨兵集群双节点集群缺陷经典的3节点哨兵集群数据丢失异步复制脑裂数据丢失解决减少异步复制的数据丢失减少脑裂的数据丢失核心原理sdown和odown转换机制quorum和majority哨兵集群的自动发现机制slave配置的自动纠正slave->master选举算法configuration epochconfiguraiton传播基础知识功能senti...

2020-02-15 22:28:15 371

转载 12. redis主从架构下如何才能做到99.99%的高可用性?

目录系统99.99%高可用redis不可用redis如何做到高可用?系统99.99%高可用系统的不可用架构上,99.99%(四个9)的高可用性99.99%(系统可用的时间 / 系统故障的时间),365天,在365天 * 99.99%的时间内,系统都是对外提供服务的,那就是高可用性。redis不可用redis不可用是什么?单实例不可用?主从架构不可用?不可用的后果是什么?...

2020-02-15 21:28:34 303

原创 11. 【实战】对项目的主从redis架构进行QPS压测&&水平扩容支撑更高QPS

目录redis-benchmark注意问题水平扩容对刚刚搭建好的redis做一个基准的压测,测一下redis的性能和QPS(query per second)redis-benchmarkredis自己提供的redis-benchmark压测工具,是最快捷最方便的,当然啦,这个工具比较简单,用一些简单的操作和场景去压测。对redis读写分离架构进行压测,单实例写QPS+单实例读QPS...

2020-02-15 11:24:55 395

原创 10. 【实战】部署redis的读写分离主从架构

搭建步骤一主一从,往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了,包含节点间认证口令启用复制,部署slave node在另外一台服务器上部署从节点;安装tcl8.6.1-src.tar.gzwget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztar -xzvf tcl8.6.1-src.tar...

2020-02-15 09:00:13 410

fontawesome-webfont.ttf

Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小、颜色、阴影或者其它任何支持的效果。

2019-01-11

空空如也

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

TA关注的人

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