消息队列-ActiveMQ
消息队列和其作用消息队列是一种业务处理方案,目的是减轻同步业务的压力,缓解突发流量和提高系统可利用率的一种常见处理方式。消息队列中间件是该方案的具体实现和具体产品。
作用: (解耦、消峰、异步)
抵御洪峰流量,(吞吐量)达到保护主业务的目的,消息都给中间件(消峰)
消息给中间件后,等通知,不用一直等着(异步)
消息给了中间件,与消息多少没关系,也就是新模块进来,代码改动最小(解耦
目前比较常见和可靠的MQ的产品具体有:kafka、RabbitMQ、RocketMQ、ActiveMQ
基于产品要求的特点,上面的产品必须要解决以下问题:
技术维度
专业名词
消息中间件
有api发送和接收
不能宕机
高可用性
需要多而不是单机版
集群和容错配置
不能断不能丢
持久化
取消撤回
延时发送/定时投递
有无收到
签收机制
如果没有引入MQ,生产者和消费者互相调用,在大型分布式应用中,系统间的RPC交互繁杂,即每增加一个消费者,生产者都要修改(系统之间的接口耦合比较严重);等待同步消息性存在问题(RPC接口基本上是同步调用,类似“木桶理论”);面对消 ...
消息队列-RabbitMQ
2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
优点:由于 erlang 语言的高并发特性,性能较好;吞吐量到万级,MQ 功能比较完备,健壮、稳定、易用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持 AJAX 文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高 https://www.rabbitmq.com/news.html
缺点:商业版需要收费,学习成本较高
结合erlang 语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。
主要概念生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个 ...
消息队列-rocketMQ
官网
概念RocketMQ 的基本概念1 消息(Message)
消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。
2 主题(Topic)
Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 topic:message 1:n message:topic 1:1一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。 producer:topic 1:n consumer:topic 1:1
3 标签(Tag)
为消息设置的标签,用于同一主题下区分不同类型的消息。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。标签能够有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统。消费者可以根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性。Topic是消息的一级分类,Tag是消息的二级分类。Topic:货物tag=上海tag=江苏tag& ...
demopost
这是一篇测试文章
spring-cloud 文档(更新中)
Spring Cloud 优缺点其主要优点有:
1、 集大成者,SpringCloud包含了微服务架构的方方面面;2、 约定优于配置,基于注解,没有配置文件;3、 轻量级组件,SpringCloud整合的组件大多比较轻量级,且都是各自领域的佼佼者;4、 开发简便,SpringCloud对各个组件进行了大量的封装,从而简化了开发;5、 开发灵活,SpringCloud的组件都是解耦的,开发人员可以灵活按需选择组件;
它的缺点:
1、 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目;2、 部署门槛高,项目部署需要配合Docker等容器技术进行集群部署,而要想深入了解Docker,学习成本高;
spring security 快速使用 (1)
重写默认配置通过之前的学习,我们已经知道了第一个项目的默认配置,接下来我们就来尝试替换它们。在本节中,我们将介绍如何配置UserDetailsService和PasswordEncoder.这两个组件参与身份验证的处理,大多数应用程序都会根据其 需求对它们进行自定义,但是关于这两个组件的细节我们仍然是放到后面细讲,目前我们只需了解如何插入自定义实现。
重写UserDetailsService组件前文里我们就提到过,UserDetailsService我们可以选择创建自己的实现,或者使用Spring Security提供的预定义实现。但是本节并不打算详细介绍前两者,而是使用Spring Security提供的一个名为InMemoryUserDetailsManager的实现。通过这个示例,我们将了解如何将这类对象插入架构中。
紧接着之前第一个Spring Security的程序示例,我们对其进行修改,让其改成拥有自己管理的凭据并将其用于身份验证。所以在此我们并不会实现UserDeatilsService,但需要使用Spring Security提供的实现类。
InMemoryUserDe ...
spring security 快速使用 (2) OAUTH2
Oauth2 概念和授权码模式鸽了很久,其实也因为自己确实比较忙,加之自己在造demo的时候也遇到了很多问题,并且网上这方面的解答非常之少,不过也正是因为少,才更加让我想写这样的知识分享,最终,在一篇博客的解答下解决了问题,本节我们就开始Oauth2的学习。在之前的学习中,我们可以说SpringSecurity本身的基础学习差不多告一段落,大家已经可以通过自己的能力去搭建一个SpringSecurity的安全应用。
那么接下来我们就接着学习OAuth2这样一个庞大的主题,我们在这一章主要介绍一个概要,即OAuth2是什么,然后将会把它应用到一个关注使用单点登录(SSO)进行身份验证的应用程序上。这里之所以选用SSO,是因为其非常简单,也非常有用。
OAuth2框架在大多数情况下,OAuth2被称为授权框架(或规范框架),其主要目的是允许第三方网站或应用程序访问资源。有时人们也把OAuth2称为一项委托协议。无论如何称呼它,重要的是要记住OAuth2不是一个特定的实现或库。也可以将OAuth2流程定义应用于其他平台、工具或语言。这里将介绍如何实现OAuth2与SpringBoot和Spr ...
spring-boot 常用配置(更新中)
设计的目标
为所有使用 Spring 的开发者提供一个更简单,快速的入门体验
提供一些常见的功能、如监控、WEB容器,健康,安全等功能
干掉XML,遵循规范,开箱即用
Spring Initializr(官方的构建插件,需要联网)
常用配置详解12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>
提供配置项自动提示功能。
自定义配置文件
定义一个名为 my2.properties 的资源文件,自定义配置文件的命名不强制 application 开头
123my2.age=22my2.name=Levinmy2.email=1837307557@qq.com
其次定义 MyProperties2.jav ...
springMVC 源码分析
springMvc 架构流程和各个组件
用户发送请求至前端控制器DispatcherServlet。
DispatcherServlet收到请求调用HandlerMapping处理器映射器。
处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
DispatcherServlet调用HandlerAdapter处理器适配器。
HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
Controller执行完成返回ModelAndView。
HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
ViewReslover解析后返回具体View。
DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
DispatcherServlet ...
springMVC 文档手册
Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。处理器是你的应用中注解了@Controller和@RequestMapping的类和方法,Spring为处理器方法提供了极其多样灵活的配置。Spring 3.0以后提供了@Controller注解机制、@PathVariable注解以及一些其他的特性,你可以使用它们来进行RESTful web站点和应用的开发。
DispatcherServletSpring MVC框架,与其他很多web的MVC框架一样:请求驱动;所有设计都围绕着一个中央Servlet来展开,它负责把所有请求分发到控制器;同时提供其他web应用开发所需要的功能。不过Spring的中央处理器,DispatcherServlet,能做的比这更多。它与Spring IoC容器做到了无缝集成,这意味着,Spring提供的任何特性,在Spring MVC中你都可以使用。
下图展示了Spring Web M ...