1 什么是幂等性用户对于同一操作发起的一次请求或者多次请求的结果是一致的。比如数据库的乐观锁,在执行更新操作前,先去数据库查询version,然后执行更新语句,以version作为条件,如果执行更新时有其他人先更新了这张表的数据,那么这个条件就不生效了,也就不会执行操作了,通过这种乐观锁的机制来保障幂等性.2 Con幂等性2.1 什么是Con幂等性消费端实现幂等性,就意味着,我们的消息永远不会消费多次,即使我们收到了多条一样的消息。在业务高峰期最容易产生消息重复消费问题,当Con消费完消息时,
1 单点(不推荐)优点除了配置简单没什么优点,适合个人学习使用。缺点不可靠,该机器重启或宕机,将导致整个服务不可用。无 HA,测试环境玩玩就行。2 主从主节点可收发消息,从节点不能接收消息。具备 HA。不支持主从切换。3 双主(不推荐)多个 master 节点组成集群,单个 master 节点宕机或者重启对应用没有影响。优点所有模式中性能最高缺点单个 master 节点宕机期间,未被消费的消息在节点恢复之前不可用,消息的实时性就受到影响。注意:使用同步刷盘可以保证消息不丢
1 什么是Confirm机制消息的确认Pro投递消息后,若Broker收到消息,则会给Pro一个应答Pro接收应答用来确定该消息是否正常地发送到Broker,这种方式也是消息可靠性投递的核心保障2 Confirm机制流程图Pro发送消息到Broker,Broker接收到消息后,产生回送响应Pro中有一个Confirm Listener异步监听响应应答3 如何实现Confirm确认消息?在channel上开启确认模式:channel.confirmSelect()在channel上
tcp_ listerners设置rabbimq的监听端口,默认为[5672]disk_ free_ limit磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative,1.0},即与内存相关联1: 1, 也可定制为多少bytevm_ memory_ high_ watermark设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%hipe_ compile将部分rabbimq代码用High Performance Erlang c.
1 什么是Return机制Return Listener 用于处理一些不可路由的消息。正常情况下,Pro通过指定一个Exchange和Routingkey,把消息送到某队列,然后Con监听队列,进行消费处理操作。但是,如果我们在发送消息时,当前Exchange不存在或Routingkey路由不到,若要监听这种不可达的消息,就要用到Return Listener2 Return机制示意图5.3 Return机制的实现添加return监听:addReturnListener,生产端去监听这些不可达
最开始我们都是编写while循环,通过consumer.nextDelivery方法获取下一条消息,然后进行消费处理。其实还有另一种选择,使用自定义的Consumer,它更方便,解耦性更强,也是在实际工作中最常用的使用方式。自定义Con实现只需要继承 DefaultConsumer 类,重写 handleDelivery 方法即可。代码实现自定义ConConPro启动Con后,查看管控台启动Pro,Con接收消息...
在eclipse下建工程,默认webContent目录是web根目录在myeclipse下建工程,默认webRoot是web根目录有时自己写更经常直接采用web作根目录。tomcat如何知道哪一个目录是web根目录,从而找到classes呢?这两者真的有关系吗?web工程完成之后还不是要发布,放到tomcat的webapp下面去webRoot只是给developer用的,就像eclipse里的src文件夹一样...
conf/tomcat-users.xml添加如下内容:默认是没有任何用户有权限的,需要手动加入<role rolename="admin-gui"/><role rolename="manager-gui"/><role rolename="manager-jmx"/><role rolename="manager-script"/><role rolename="manager-status"/><user usern
1 配置文件tomcat8 更贴心,给出明确已启动的提示输出。tomcat72 请求的响应状态值tomcat8下请求成功时,响应值为 successtomcat7下为ok
何时使用FactoryBean?FactoryBean是一个工厂Bean,可生成某一个类型的Bean实例。最大作用:让我们能够自定义Bean的创建过程。而在BeanFactory中可创建和管理Spring容器中的Bean,它对Bean的创建有一个统一的流程。1 FactoryBean定义泛型接口API返回Bean对象实例Bean类型是否单例。true是单例,false是非单例 。在Spring5.x利用Java8新特性变成default方法,返回true2 使
FactoryBean是怎么让Spring容器管理调用它的getObject所生成的Bean的。从getBean方法开始说起。场景:beanName:factoryBeanLearnClass类型:FactoryBeanService.classgetBean(beanName, requiredType, args)方法,这个方法又调用doGetBea。只关注和FactoryBean相关的内容。getBean(beanName, requiredType, args)public &l
1 Spring简介轻量级容器,提供集中式,自动配置与装配应用业务对象功能提供统一的事务管理抽象,基于插件式的事务管理(声明性事务管理)能够很容易的实现事务层管理,而无需了解底层事务实现提供统一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率(大大减少了开发的代码量)并且减少了可能的错误Spring的数据访问层集成了Toplink,Hibernate,JDO,and iBATIS SQL Maps等O/R mapping解决方案,其目的是提供统一的DAO支持类实现和事务管理策略S
缓存、降级和限流是开发高并发系统的三把利器。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹降级是当服务出现问题或者影响到核心流程的性能则需要暂时屏蔽,待高峰或者问题解决后再打开而有些场景并不能用缓存和降级来解决,比如稀缺资源、写服务、频繁的复杂查询,因此需有一种手段来限制这些场景的并发/请求量,即限流。限流的目的是通过对并发访问/请求进行限速,或对一个时间窗口内的请求进行限速来保护系统。一旦达到限制速率则可以拒绝服务、排队或等待、降级。一般开发高并发系统常见的限流
1 大厂面试题请描述synchrnoized和reentrantlock的底层实现及重入的底层原理- 百度阿里请描述锁的四种状态和升级过程-百度阿里CAS的ABA问题如何解决-百度请谈一下AQS,为什么AQS的底层 是CAS + volatile-百度请谈一下你对volatile的理
如果你在公司里开发共享libraries,或者正在开发一个开源或商业library,你可能想开发自己的自动配置(auto-configuration)。自动配置类可以打包到外部jars,并且依旧可以被Spring Boot识别。自动配置可以关联一个"start
1 查看IP地址在Windows上是ipconfig在Linux上是ifconfig那你知道在Linux上还有什么其他命令可以查看IP地址吗?— ip addr那你知道ifconfig和ip addr的区别吗?这是一个有关net-tools和iproute2的“历史”故事,你刚来到第三节,暂时不用了解这么细,但这也是一个常考的知识点。想象你登录进入一个非常小的Linux系统,发现既...
人用纸和笔来做运算,都是用十进制,直接用十进制和我们最熟悉的符号不是最简单么?为什么计算机里我们最终要选择二进制呢?来看看,计算机在硬件层面究竟是怎么表示二进制的,你就会明白,为什么计算机会选择二进制。1 怎么做到“千里传书”马拉松的故事相信你听说过。公元前490年,在雅典附近的马拉松海边,发生了波斯和希腊之间的希波战争。雅典和斯巴达领导的希腊联军胜利之后,雅典飞毛腿菲迪皮德斯跑了历史...
下面这些门电路的标识,你需要非常熟悉,后续的电路都是由这些门电路组合起来的。这些基本的门电路,是我们计算机硬件端的最基本的“积木”包含十亿级别晶体管的现代CPU,都是由这样一个一个的门电路组合而成的。1 异或门和半加器基础门电路输入都是两个单独的bit输出是一个单独的bit2个8 位(bit)数的与/或/非逻辑运算连续摆放8个开关,代表一个8位数这样的两组开关,从左到右...
Linux容器中用来实现“隔离”的技术手段:Namespace。Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。在之前虚拟机与容器技术的对比图里,不应该把Docker Engine或者任何
一天天的,PaaS深入人心,Cloud Foundry为首的传统PaaS,开始蓄力基础设施领域的平台化和PaaS化,于是发现了PaaS中的问题1 如何给应用打包Cloud Foundry/OpenShift/Clodify都没给出答案,走向碎片化歪路此时,名不见经传的PaaS创业公司dotCloud,却选择了开源自研的容器项目Docker谁也不会料到,就这样一个平淡无奇古天乐一般的技术...
Docker公司为什么在Docker项目已经取得巨大成功之后,执意走回已经让无数先驱折戟的PaaS路呢?实际上,Docker项目一直伴随着公司管理层和股东们的阵阵担忧。他们心里明白,虽然Docker项目备受追捧,但用户们最终要部署的,还是他们的网站、服务、数据库,甚至是云计算业务。这就意味着,只有那些能够为用户提供平台层能力的工具,才会真正成为开发者们关心和愿意付费的产品而Docker项目这...
Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。如果不想使用 Spring 配置,可以通过 API 的方式 进行调用。1 Provider完整安装步骤,请参见:示例提供者安装1.1 定义服务接口DemoService.java ...
1 API网关1.1 API网关示意图API网关有点类似于设计模式中的Facade模式API|网关一般都是微服务 系统中的面1.2 API网关的作用身份验证和安全审查和监测动态路由Dubbo不需要,SpringCloud需要压力测试负载均衡静态相应处理1.3 实战中的作用2 Guns环境构建...
基于Springboot和Dubbo的结合,进行用户模块业务开发,并且会学习注册发现、负载均衡、路由策略等多项Dubbo核心特性。除此以外,会进一步了解API网关与业务模块的结合和开发。0 概要学会API网关权限验证和其他服务交互学会开发Springboot的自定义配置学会Dubbo负载均衡策略选择和使用用户表结构4-2 接口文档和sql语句见面会4-3 用户服务与网关交互4-...
0 概要进一步了解Gateway的功能聚合的开发、异步调用等Dubbo特性;同时,会引入Lombok框架,并将详细讲解Dubbo的通信、线程模型等特性,以及相应的业务实现。掌握API网关服务聚合功能实现◆ 服务聚合就是将多个服务调用封装◆ 服务聚合可以简化前端调用方式◆服务聚合提供更好的安全性、可扩展性掌握Mybatis-plus自定乂SQL突現掌握Dubbo昇歩凋用表结构业务功...
前两文中,讲了Linux容器最基础的两种技术Namespace作用是“隔离”,它让应用进程只能看到该Namespace内的“世界”Cgroups作用是“限制”,它给这个“世界”围上了一圈看不见的墙这么一搞,进程就真的被“装”在了一个与世隔绝的房间里,而这些房间就是PaaS项目赖以生存的应用“沙盒”。还有一个问题是:墙外的我们知道他的处境了,墙内的他呢?换句话说容器里的进程看到的...
1. 命令行界面利用了起步依赖和自动配置,让人专注于代码本身能检测到使用了哪些类,要向Classpath添加哪些起步依赖才能运转起来,接着一系列自动配置就会接踵而来,确保启用springMVC和DispatherServlet,控制器就能响应HTTP请求了,是SpringBoot的非必要组成部分2. 最直接的方法:手工安装(WIN用户唯一安装方式)下载地址: https://do
New->Project SDK:基本就是这个项目要用的javaSDK了 Web服务位置,除非使用自己的Initializr,否则应该不做任何修改 直接点Next按钮,进入下图 在Spring Boot初始化向导里指定项目信息 直接点Next按钮,进入下图 要往项目添加什么依赖了 选完之后,直接点Next按钮,进入下图 项目名字以及在哪里创建项目 准备就绪后,点击F
s
,保证秒杀和商品详情页的动态请求才打到后端服务集群。使用CDN网络,分担本集群压力。恶意请求拦截服务网关识别非法攻击请求并进行拦截。流量削峰
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号