
微服务
文章平均质量分 92
微服务
爪蛙毁一生
6
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
微服务--一篇入门kubernets
传统部署:互联网早期,会直接将应用程序部署在物理机上优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境优点:程序环境不会相互产生影响,提供了一定程度的安全性缺点:增加了操作系统,浪费了部分资源容器化部署:与虚拟化类似,但是共享了操作系统优点:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等。原创 2023-12-04 21:24:20 · 1211 阅读 · 0 评论 -
java面试题-RabbitMQ面试题
嗯!我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的,这里面就要求了消息的高可用性,我们要保证消息的不丢失。主要从三个层面考虑第一个是开启生产者确认机制,确保生产者的消息能到达队列,如果报错可以先记录到日志中,再去修复数据第二个是开启持久化功能,确保消息未消费前在队列中不会丢失,其中的交换机、队列、和消息都要做持久化。原创 2023-09-10 17:02:47 · 559 阅读 · 0 评论 -
java面试题-Redis相关面试题
候选人嗯~~,我想一下缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它面试官候选人嗯,是这样~布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。原创 2023-09-04 20:40:15 · 1209 阅读 · 0 评论 -
微服务实战项目-学成在线-项目部署
DevOps兴起于2009年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现了一大批优秀的工具,这些工具包括开发、测试、运维的各各领域,例如:GitHub、Docker、Jenkins、Hudson、K8S、Ant/Maven/Gradle、Selenium、QUnit、JMeter等。在持续交付的基础上由开发人员或运维人员自助式的定期向生产环境部署稳定的构建版本,持续部署的目标是代码在任何时刻都是可部署的,并可自动进入到生产环境。使用CI/CD后通过自动化的工具去完成。原创 2023-08-12 19:09:00 · 1534 阅读 · 1 评论 -
微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用java阻塞队列对秒杀进行异步优化)
在这六步操作中,又有很多操作是要去操作数据库的,而且还是一个线程串行执行, 这样就会导致我们的程序执行的很慢,所以我们需要异步程序执行,那么如何加速呢?在这里笔者想给大家分享一下课程内没有的思路,看看有没有小伙伴这么想,比如,我们可以不可以使用异步编排来做,或者说我开启N多线程,N多个线程,一个线程执行查询优惠卷,一个执行判断扣减库存,一个去创建订单等等,然后再统一做返回,这种做法和课程中有哪种好呢?答案是课程中的好,因为如果你采用我刚说的方式,如果访问的人很多,那么线程池中的线程可能一下子就被消耗完了原创 2023-05-14 18:30:19 · 941 阅读 · 0 评论 -
微服务---分布式缓存redis进阶-redis集群部署
基于Redis集群解决单机Redis存在的问题。原创 2023-05-03 02:05:53 · 1092 阅读 · 0 评论 -
微服务实战项目-学成在线-课程发布模块
课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课、支付、在线学习。下边是课程编辑与发布的整体流程:为了课程内容没有违规信息、课程内容安排合理,在课程发布之前运营方会进行课程审核,审核通过后课程方可发布。作为课程制作方即教学机构,在课程发布前通过课程预览功能可以看到课程发布后的效果,哪里的课程信息存在问题方便查看,及时修改。下图是课程预览的效果图,也是课程正式发布后的课程详情界面:教学机构确认课程内容无误,提交审核,平台运营人员原创 2023-06-27 00:38:21 · 2558 阅读 · 1 评论 -
微服务实战项目-学成在线-项目介绍以及环境搭建
在线教育行业是一个有着极强的广度和深度的行业,从校内到校外;从早幼教到职业培训;从教育工具到全信息化平台等等。2020年的新冠疫情外生冲击,让在线教育再次站在聚光灯下。疫情下教育领域获融资最多,而其中在线教育最受资本青睐。据艾瑞咨询统计,2020年教育行业累计融资1164亿元,其中在线教育融资金额1034亿元,占比89%。与此同时,在行业处于困境的情况下,会加速洗牌,资源向好的企业集中原创 2023-05-24 01:12:05 · 2201 阅读 · 0 评论 -
微服务实战项目-学成在线-项目优化(redis缓存优化)
造成缓存雪崩问题的原因是是大量key拥有了相同的过期时间,比如对课程信息设置缓存过期时间为10分钟,在大量请求同时查询大量的课程信息时,此时就会有大量的课程存在相同的过期时间,一旦失效将同时失效,造成雪崩问题。第一种情况:在一个分布式环境下,假如一个线程获得锁后,突然服务器宕机了,那么这个时候在一定时间后这个锁会自动释放,你也可以设置锁的有效时间(当不设置默认30秒时),这样的目的主要是防止死锁的发生。去访问一个数据库不存在的数据无法将数据进行缓存,导致查询数据库,当并发较大就会对数据库造成压力。原创 2023-08-13 20:57:26 · 1501 阅读 · 1 评论 -
微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用redis分布式锁实现)
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路那么分布式锁他应该满足一些什么样的条件呢?可见性:多个线程都能看到相同的结果,注意:这个地方说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的意思互斥:互斥是分布式锁的最基本的条件,使得程序串行执行高可用:程序不易崩溃,时时刻刻都保证较高的可用性。原创 2023-05-14 01:23:51 · 391 阅读 · 0 评论 -
微服务实战项目-学成在线-媒资管理模块(有项目实战实现)
媒资管理系统是每个在线教育平台所必须具备的,查阅百度百科对它的定义如下:媒体资源管理(Media AssetManagement,MAM)系统是建立在多媒体、网络、数据库和数字存储等先进技术基础上的一个对各种媒体及内容(如视/音频资料、文本文件、图表等)进行数字化存储、管理以及应用的总体解决方案,包括数字媒体的采集、编目、管理、传输和编码转换等所有环节。其主要是满足媒体资源拥有者收集、保存、查找、编辑、发布各种信息的要求,为媒体资源的使用者提供访问内容的便捷方法,实现对媒体资源的高效管理,大幅度提高媒体资原创 2023-06-04 16:55:46 · 4475 阅读 · 2 评论 -
微服务---RabbitMQ进阶(消息可靠性,延迟队列,惰性队列,集群部署)
## 1.1.生产者消息确认RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。返回结果有两种方式:- publisher-confirm,发送者确认 - 消息成功投递到交换机,返回ack - 消息未投递到交换机,返回nack- publisher-return,发送者回执 - 消息投递到交换机了,但是没有路由到队列。返回ACK,及路由失原创 2023-05-06 01:52:01 · 1379 阅读 · 0 评论 -
微服务实战项目-学成在线-选课学习(支付与学习中心)模块
本模块实现了学生选课、下单支付、学习的整体流程。网站的课程有免费和收费两种,对于免费课程学生选课后可直接学习,对于收费课程学生需要下单且支付成功方可选课、学习。选课:是将课程加入我的课程表的过程。我的课程表:记录我在网站学习的课程,我的课程表中有免费课程和收费课程两种,对于免费课程可直接添加到我的课程表,对于收费课程需要下单、支付成功后自动加入我的课程表。模块整体流程如下:用户通过搜索课程、课程推荐等信息进入课程详情页面,点击"马上学习"引导进入学习界面去学习。流程如下:1、进入课程详情点击马上学习2、课原创 2023-08-02 11:37:44 · 4522 阅读 · 3 评论 -
微服务—Redis实用篇-黑马头条项目用户签到功能(使用bitmap实现)与UV统计
我们针对签到功能完全可以通过mysql来完成,比如说以下这张表用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则最多需要600多字节我们如何能够简化一点呢?其实可以考虑小时候一个挺常见的方案,就是小时候,咱们准备一张小小的卡片,你只要签到就打上一个勾,我最后判断你是否签到,其实只需要到小卡片上看一看就知道了。原创 2023-05-20 01:29:48 · 943 阅读 · 0 评论 -
微服务实战项目-学成在线-认证授权模块(有项目实战实现)
截至目前,项目已经完成了课程发布功能,课程发布后用户通过在线学习页面点播视频进行学习。如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程,如果用户要购买课程也需要知道用户的身份信息。所以,去管理学生的学习过程最基本的要实现用户的身份认证。认证授权模块实现平台所有用户的身份认证与用户授权功能。什么是用户身份认证?用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证的表现形式有:用户名密码登录,微信扫码原创 2023-07-22 17:05:16 · 5155 阅读 · 0 评论 -
微服务---Redis实用篇-黑马头条项目-商户查询缓存功能(缓存穿透,缓存雪崩,缓存击穿问题及解决思路)
前言什么是缓存?就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据。原创 2023-05-10 21:55:05 · 980 阅读 · 0 评论 -
微服务---Redis入门篇-Redis的常见命令和客户端使用
Redis是一种键值型的NoSql数据库,这里有两个关键字:- 键值型- NoSql其中**键值型**,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:而NoSql则是相对于传统关系型数据库而言,有很大原创 2023-05-07 01:19:27 · 1773 阅读 · 0 评论 -
微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用redisson分布式锁实现及原理分析)
重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。原创 2023-05-14 01:27:47 · 399 阅读 · 0 评论 -
微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用redis的消息队列对秒杀进行异步优化)
什么是消息队列:字面意思就是存放消息的队列。使用队列的好处在于 **解耦:**所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。原创 2023-05-15 00:05:29 · 441 阅读 · 0 评论 -
微服务---Docker的基本使用
*数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。原创 2023-04-20 01:59:54 · 748 阅读 · 0 评论 -
微服务---Redis实用篇-黑马头条项目-登录功能(短信验证缓存,用户信息缓存)
用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户**短信验证码登录、注册:**用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然后和用户输入的验证码进行校验,如果不一致,则无法通过校验,如果一致,则后台根据手机号查询用户,如果用户不存在,则为用户创建账号信息,保存到数据库,无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信原创 2023-05-08 00:17:00 · 1211 阅读 · 0 评论 -
微服务---分布式事务Seata(XA,AT,TCC,SAGA模式基本使用)
**分布式事务**,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:- 跨数据源的分布式事务- 跨服务的分布式事务- 综合情况在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:- 创建新订单- 扣减商品库存- 从用户账户余额扣除金额原创 2023-04-28 02:00:24 · 1474 阅读 · 0 评论 -
微服务---分布式多级缓存集群实现方案(Caffeine+redis+nginx本地缓存+Canal数据同步)
多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能:- 浏览器访问静态资源时,优先读取浏览器本地缓存- 访问非静态资源(ajax查询数据)时,访问服务端- 请求到达Nginx后,优先读取Nginx本地缓存- 如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)- 如果Redis查询未命中,则查询Tomcat- 请求进入Tomcat后,优先查询JVM进程缓存- 如果JVM进程缓存未命中,则查询数据库原创 2023-05-04 22:38:51 · 3087 阅读 · 3 评论 -
解决spring cloud 中使用spring security全局异常处理器失效
写auth认证模块实现忘记密码与注册功能时,用异常抛出,全局异常处理器无法捕获。\原创 2023-07-22 16:40:36 · 1017 阅读 · 0 评论 -
微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用乐观锁与synchronized 锁 单机实现)
每个店铺都可以发布优惠券:场景分析:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。场景分析二:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, 于是乎我们需要保证id的唯一性。原创 2023-05-13 01:14:32 · 328 阅读 · 1 评论 -
微服务—Redis实用篇-黑马头条项目-达人探店功能(使用set与zset实现)
发布探店笔记探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个:tb_blog:探店笔记表,包含笔记中的标题、文字、图片等tb_blog_comments:其他用户对探店笔记的评价上传接口注意:同学们在操作时,需要修改SystemConstants.IMAGE_UPLOAD_DIR 自己图片所在的地址,在实际开发中图片一般会放在nginx上或者是云存储上。原创 2023-05-16 00:14:11 · 542 阅读 · 0 评论 -
微服务---分布式搜索引擎 elasticsearch基础
elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容例如:在GitHub搜索代码在电商网站搜索商品在百度搜索答案在打车软件搜索附近的车elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。elasticsearch底层是基于lucene来实现的。Lu原创 2023-04-26 01:25:05 · 1358 阅读 · 0 评论 -
微服务—Redis实用篇-黑马头条项目-附近商户功能(使用GEO实现)
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。原创 2023-05-19 00:44:30 · 493 阅读 · 0 评论 -
微服务---RabbitMQ与SpringAMQP基本使用
基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息。原创 2023-04-20 23:08:19 · 619 阅读 · 0 评论 -
微服务---一篇学完SpringCloud
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。原创 2023-04-19 02:18:40 · 450 阅读 · 0 评论 -
微服务实战项目-学成在线-内容管理模块(有项目实战实现)
下边从查询条件、查询列表两个方面分析数据模型1、查询条件:包括:课程名称、课程审核状态、课程发布状态课程名称:可以模糊搜索课程审核状态:未提交、已提交、审核通过、审核未通过课程发布状态:未发布、已发布、已下线因为是分页查询所以查询条件中还要包括当前页码、每页显示记录数。原创 2023-05-30 00:40:42 · 3584 阅读 · 8 评论 -
微服务---微服务保护Sentinel基本使用
什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.htmlSentinel 具有以下特征:•丰富的应用场景。原创 2023-04-27 00:11:22 · 748 阅读 · 0 评论