
SpringBoot/Cloud
文章平均质量分 87
boot/cloud
第七个香粽
学无止境~
展开
-
直播弹幕系统(六)- SpringBoot + STOMP + RabbitMQ(使用MQ替代Spring代理)
上一篇文章整合Stomp替换原生WebSocket方案探究中,完成了STOMP对原生WebSocket写法的一个平移架构替换。这篇文章则在其基础上做一些优化和操作。在设计原生WebSocket架构的时候,我们用本地缓存来存储对应的WebSocket。在进行消息交互的时候,还需要自己去拿到对应的Session信息,然后发送。如果是群发消息,还得借助for循环进行遍历发送。但是我们在整合STOMP的时候,这种群发、对于Session的管理,框架都帮我们做好了。我们只需要关注业务上的操作即可。原创 2022-12-23 19:50:22 · 1520 阅读 · 0 评论 -
直播弹幕系统(五)- 整合Stomp替换原生WebSocket方案探究
本篇文章是基于SpringBoot - WebSocket的使用和聊天室练习来讲解的。在设计弹幕系统(目前还是从设计聊天室开始入手,弹幕的React实现后面会开始写)这块,我还是用最原生的WebSocket来进行的。对于服务端而言。无非就是添加注解修饰,通过@OnOpen进行监听等操作。但是最最最重要的一点是,这种设计系统,WebSocket信息是存储于本地缓存的。而且,在分布式架构下,还需要考虑到消息的一致性。因此本篇文章,先简单了解下Stomp以及它的聊天室替代方案实现。,即简单文本定向消息协议。原创 2022-12-23 15:13:46 · 2572 阅读 · 7 评论 -
直播弹幕系统(三)- 直播在线人数统计
上一篇文章整合RabbitMQ进行消息广播和异步处理写完了消息的广播、削峰、异步处理业务逻辑等操作。完成了实时共享功能。不过写到后面发现在线人数统计这块的功能还没实现,因此在这篇补上。目前的WebSocket写法实现只是一种方案,显然并不是最优解,也可能有更好的写法。后期准备尝试用Netty来平移替换。原创 2022-12-15 22:02:22 · 2647 阅读 · 0 评论 -
直播弹幕系统(一)- SpringCloud网关对WebSocket链接进行负载均衡
创建一个项目:。1.依赖:2.:3.:4.:1.2 网关配置1.1.3 负载均衡配置1.核心负载均衡逻辑:2.获取权重的工具类:3.配置类:4.类:5.网关启动类(网关一般不需要数据源,所以记得排除掉)注意:创建一个项目:。1.依赖:2.文件:3.文件:2.配置:3.启动类:2.2 WebSocket监听先写一个简略的缓存工具类,用来缓存信息。创建类。最终的项目架构:启动好之后可以去上观看对应的服务写这个标题就是提醒大家拷贝一份上面的项目,只需要改变端口号即可。记得原创 2022-12-13 16:18:31 · 2765 阅读 · 6 评论 -
SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig
我写了一套网关服务,一模一样的代码在自己电脑和公司电脑都写了一份。公司电脑:启动报错。自己电脑:正常运行。代码一模一样,最终发现,有一处不同:公司电脑:包名以com为开头。自己电脑:包名不是以com为开头。最终启动报错如下:再说结果之前,先说一下我从网上找过的各种解决方案。因为网上大多都是这几种方案,但是具体问题得具体分析。这里先排个雷(仅针对于包名为com的情况)原创 2022-12-13 11:59:28 · 1733 阅读 · 2 评论 -
SpringBoot - 整合WebSocket时@ServerEndpoint修饰的类属性注入为null问题
最近在做一个直播弹幕系统,前期准备先用WebSocket来试试水。我们都知道,使用WebSocket只需要给对应的类加上注解即可。这个类中我还引用了一个MQ的服务类,结果调用的时候发现NPE。因此写下本篇文章做个记录。原创 2022-12-10 13:43:06 · 3385 阅读 · 5 评论 -
RabbitMQ - 安装和使用
消息传递的时候,并不是直接将信息发送到队列中,而是发送给交换机。交换机相当于一个交通枢纽,决定了将接收到的消息发送到哪个队列中。相当于直连交换机的一种升华模式。直连交换机里面一般是指定一个唯一的。运行之后,效果如下:找不到之后它会自动去拉镜像并且运行。而主题交换机则可以选取带有一定匹配规则的。到这里一个简单的生产消费过程就结束了。,都会接收对应的消息。,添加一个绑定关系。,发送弹幕的时候顺便发了个Q)例如,主题交换机绑定了以下。:交换机的类型,有四种。测试如下:(我这里整合了。原创 2022-12-10 12:35:23 · 1335 阅读 · 0 评论 -
SpringBoot - WebSocket的使用和聊天室练习
近期准备在我的个人云直播项目中,编写弹幕模块。前期我写的功能全都是在Egg当中完成的(整合了Socket功能),也留下了不少问题。后期准备对这块内容做一个系统性地升级。还是准备把后端逻辑写到Java里面,拓展性和相关的API比NodeJs要好一点。每一个聊天室打开,就相当于Egg服务器和Java服务器之间建立了一条长链接WebSocket。(可能后续也有所更改)Java这里,对弹幕数据丢到MQ中,做到削峰处理。消费对应的Q,做持久化、缓存处理。并将结果进行封装,分发给对应直播间的所有用户,原创 2022-12-09 16:37:41 · 1337 阅读 · 1 评论 -
Java - 利用Nacos做一个动态开关配置功能
我公司里有一个Config配置功能(我相信这是很普遍的一个功能)。将相关的键值对放到这个Config配置系统里面。代码里通过这个Config配置系统的相关API,根据对应的Key拿到配置的值。在进行逻辑操作。那么这个有啥好处呢?我们将我们的代码发布到生产环境,往往是需要一定的流程的。可能耗时比较长。而Config配置系统的发布则非常简单。页面上点一下即可。假如我们有一个场景:一个新老接口的替换。那么我们可以在代码里面加一个“开关”,如果为T,走新接口,如果为F,则走老接口。原创 2022-11-26 17:55:18 · 2652 阅读 · 1 评论 -
Java - 微服务整合Shiro和JWT解决OpenFeign携带Token问题
一般情况下,我们微服务之间的服务调用可以通过OpenFeign来完成,但是它默认情况下,是不会把当前请求的相关请求头带过去的。解决,我们可以写一个拦截器。的情况下,服务调用就会出现这个问题。在发送请求之前都会调用该接口的。那这种情况下,在整合。原创 2022-11-26 14:43:30 · 2004 阅读 · 0 评论 -
Java - SpringBoot整合Shiro之缓存功能
在上一篇文章主要讲了Shiro权限授权和认证跳过。本篇文章就主要讲解如何整合Shiro和Redis。这样就避免携带同一个Token的时候,每次取查询数据库了。可以利用一个缓存,减轻DB的压力。原创 2022-11-15 18:14:10 · 497 阅读 · 0 评论 -
Java - SpringBoot整合Shiro之二(权限授权和认证跳过)
再看这篇文章之前,可以先过一遍SpringBoot整合Shiro,附带源码。这篇文章为该篇文章的进阶内容。目前为止,我在整合Shirojwt:自定义的JwtFilter过滤器,拦截所有的请求/**。anno:默认实现,。无需认证也可以访问。/login。logout:默认实现,。就是登出的时候的配置。/logout。本文没做相关的实现。不管他。我们在本环节只关注第二个。实际开发中,肯定是有一些接口是不需要经过登录认证的。我举个例子,你在看斗鱼直播的时候,在没登录的情况下,菜单数据也能出来、直播也能看。原创 2022-11-14 18:58:36 · 5186 阅读 · 0 评论 -
Java - SpringBoot整合Shiro(附源码地址)
是 下的一个安全框架。主要用于认证、授权、加密、会话管理等功能。这是摘自官网的一个截图:针对授权,说明一点: 不会去维护用户以及维护权限。因此这些需要我们自己去设计和提供。通过相应的接口注入给 即可。这里同样摘自官网的一个架构图:其中,指的是我们的应用程序。也就是说,Shiro 架构中,有三个主要的组成部分:上文说到过我们自己去设计和提供用户的权限并注入给。而本质上是一个特定于安全的。封装了一些底层的数据操作。然后我们再看看里面又有哪些东西:先来说下大概的架构设计,由于这个项目是前后端分离的一个微原创 2022-11-12 15:07:41 · 746 阅读 · 2 评论 -
Java - SpringBoot整合JWT
Java - JWT的简单介绍和使用。原创 2022-11-10 20:43:24 · 1336 阅读 · 0 评论 -
如何一次性启动多个SpringBoot项目
在做微服务这块的架构设计的时候,当微服务数量越来越多的时候,本地启动各个服务的时候,可能得手动启动每个启动类。这样就很麻烦,因此记录一下如何在idea里面一键启动所有的项目。原创 2022-10-29 14:49:28 · 3074 阅读 · 1 评论 -
Spring - 常见编程错误之Bean的定义
Springboot中的启动类,切记要放到项目架构的最外层。因为默认会根据你启动类所在的包路径去扫描。项目中没有事不要在声明Bean的时候害带有参构造,如果用了请注意传参问题。否则就会报错。另外,如果有多个有参构造,Spring会默认使用无参构造。它并不知道你使用的究竟是哪一个。使用@Autowired引入的bean是个单例,哪怕你对其设置了原型prototype也没有用。因为它做了后处理操作,通过反射机制来进行赋值,这个过程只执行一次,因此使用@Autowired引入的bean是固定不变的。...原创 2022-08-15 21:08:53 · 803 阅读 · 0 评论 -
SpringBoot/Cloud系列文章导航
SpringBoot/Cloud系列文章导航SpringBoot导航:SpringCloud导航:SpringBoot导航:SpringBoot自动装配原理SpringBoot自动装配-@Conditional条件装配和自定义StarterSpringCloud导航:SpringCloud-Nacos注册中心实现原理SpringCloud-Nacos-Config使用SpringCloud-Nacos配置中心实现原理SpringCloud-服务降级/熔断和SentinelSpring原创 2021-01-29 16:13:39 · 383 阅读 · 0 评论 -
SpringCloud-Sentinel实现原理
SpringCloud-Sentinel实现原理一. Sentinel工作原理二. SpringCloud-Sentinel工作原理分析2.1 限流的源码实现小总结12.2 实时指标数据统计的源码实现小总结2一. Sentinel工作原理Sentinel的核心分为三个部分:工作流程。数据结构。限流算法。其工作原理图如下:可以看出来,调用链路是Sentinel的工作主流程,由各个slot插槽组成,将不同的Slot按照顺序串在一起(责任链模式),从而将不同的功能,例如限流、降级、系统保护组合原创 2021-01-29 16:08:37 · 2293 阅读 · 0 评论 -
SpringCloud-服务降级/熔断和Sentinel
SpringCloud-Sentinel的使用原创 2021-01-27 17:23:26 · 719 阅读 · 2 评论 -
SpringCloud-Nacos配置中心实现原理
SpringCloud-Nacos配置中心实现原理一. Nacos Config实现原理解析1.1 配置的CRUD操作1.2 配置的动态监听二. Nacos配置中心源码分析2.1 Config实现配置的加载环境的准备环境的加载案例1:通过Debug来理解Config的配置加载小总结2.2 Config配置加载的核心代码分析一. Nacos Config实现原理解析首先,Nacos Config针对配置的管理提供了4种操作):获取配置,从Nacos Config Server中读取配置。监听配置:订原创 2021-01-25 19:52:07 · 6160 阅读 · 13 评论 -
SpringCloud-Nacos-Config使用
SpringCloud-Nacos-Config使用一. Nacos配置中心介绍二. SpringCloud-Alibaba-NacosConfig的使用案例1:获取配置中心上的配置案例2:动态更新配置基于DataID配置Yaml的文件扩展名三. 配置中心几个基础概念案例3:指定Namespace和Group获取配置文件信息一. Nacos配置中心介绍我们在使用SpringBoot的时候,默认会提供一个application.properties或者application.yml文件,我们会把一些全局性原创 2021-01-24 14:08:34 · 9454 阅读 · 1 评论 -
SpringCloud-Nacos注册中心实现原理
SpringCloud-Nacos的实现原理一. Nacos介绍二. Nacos注册中心实现原理分析2.1 Nacos架构图2.2 注册中心的原理三. Nacos源码分析3.1 Nacos服务注册案例1:用Debug来理解Nacos服务注册流程服务注册小总结☆:3.2 Nacos服务发现案例2:用Debug来理解Nacos服务发现流程服务发现小总结☆:一. Nacos介绍再讲Nacos之前,先来讲一下服务注册和发现。我们知道,现在微服务架构是目前开发的一个趋势。服务消费者要去调用多个服务提供者组成的集群原创 2021-01-23 19:31:16 · 15742 阅读 · 10 评论 -
SpringBoot自动装配-@Conditional条件装配和自定义Starter
SpringBoot自动装配-@Conditional条件装配和自定义Starter一. @Conditional1.1 @Conditional案例1:@Conditional实现条件装配1.2 SpringBoot中的@Conditional案例2:@Conditional扩展1.3 spring-autoconfigure-metadata二. Starter案例3:自定义实现一个基于Redis的Starter一. @Conditional@Conditional主要用来提供自动装配的条件约束,一原创 2021-01-21 21:18:07 · 1890 阅读 · 4 评论 -
SpringBoot自动装配原理
SpringBoot自动装配原理一. @SpringBootApplication注解1.1 @Target注解1.2 @Retention注解1.3 @Documented注解二. @EnableAutoConfiguration2.1 @AutoConfigurationPackage注解案例1:Registrar的注册2.2 AutoConfigurationImportSelector类案例2:ImportSelector的使用2.2 小总结三. 自动装配原理分析案例3:RedisAutoConfi原创 2021-01-21 17:56:26 · 555 阅读 · 0 评论