分布式中间件
茴香豆的茴有六种写法
这个作者很懒,什么都没留下…
展开
-
RocketMQ专题
1、安装RocketMQ环境要求Linux 64位操作系统64bit JDK 1.8+1.1下载http://rocketmq.apache.org/release_notes/release-notes-4.4.0/1.2 安装RocketMQ解压完以后可以移动到/usr/local/mv rocketmq-all-4.4.0-bin-release /usr/local/rocketmq1.3 启动RocketMQ由于个人阿里云内存不大,编辑bin/runbroker.sh 和原创 2020-05-31 00:12:21 · 352 阅读 · 0 评论 -
几种限流算法
漏桶算法思路很简单,请求先进入到漏桶里,漏桶以固定的速度出水,也就是处理请求,当水加的过快,则会直接溢出,也就是拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。该算法很好的解决了时间边界处理不够平滑的问题,因为在每次请求进桶前都将执行“漏水”的操作,再无边界问题。但是对于很多场景来说,除了要求能够限制数据的平均传输速率外,还要求允许某种程度的突发传输。这时候漏桶算法可能就不合适了,令牌桶...转载 2020-03-11 21:19:50 · 385 阅读 · 0 评论 -
分布式事务中间件Seata的设计原理
分布式事务解决的方案有哪些?目前分布式事务解决的方案主要有对业务无入侵和有入侵的方案,无入侵方案主要有基于数据库 XA 协议的两段式提交(2PC)方案,它的优点是对业务代码无入侵,但是它的缺点也是很明显:必须要求数据库对 XA 协议的支持,且由于 XA 协议自身的特点,它会造成事务资源长时间得不到释放,锁定周期长,而且在应用层上面无法干预,因此它性能很差,它的存在相当于七伤拳那样“伤人七分,损己...转载 2020-03-11 15:27:04 · 390 阅读 · 0 评论 -
Kafka的零拷贝技术
kafka中的消费者在读取服务端的数据时,需要将服务端的磁盘文件通过网络发送到消费者进程,网络发送需要经过几种网络节点。如下图所示:传统的读取文件数据并发送到网络的步骤如下:(1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存;(2)应用程序将数据从内核空间读入用户空间缓冲区;(3)应用程序将读到数据写回内核空间并放入socket缓冲区;(4)操作系统将数据从socket缓冲区复制到...转载 2020-03-11 11:09:22 · 317 阅读 · 0 评论 -
脑裂是什么?Zookeeper是如何解决的?
什么是脑裂脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群,而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点,Z...转载 2020-03-08 21:03:16 · 376 阅读 · 0 评论 -
dubbo-原理-服务引用流程
这个dubbo:reference标签对应的是ReferenceBean。它实现了FactoryBean接口。我们看getObject方法-->get()-->init()-->ref = createProxy(map);debug启动,reference标签会去spring容器中拿UserService的实现,就会进入到ReferenceBean的getObje...转载 2017-11-21 14:05:15 · 383 阅读 · 0 评论 -
彻底搞清楚分布式数据库
首先,“分布式”:是从业务的角度的概念。"分布式”是从业务角度出发的:即当我们想着“注册”模块需要更新或者出问题了,那么我们不希望它影响存量用户的“登陆”和“下单”模块,这个时候,我们多希望他们不在一起多好,那么当我们真的这么做了,将各个业务模块都分开,ok,那这就是“分布式”了。从数据库的发展历程来看,像什么数据库冷备热备、主从、双活、多活、集群等等,都与“分布式”不相关,与业务不相关,都...原创 2019-09-23 15:11:53 · 560 阅读 · 0 评论 -
dubbo-原理-框架设计
business也就是service层,是用户编程所涉及的部分。以下的RPC和Remoting都是原理部分。Config层就是封装配置文件的信息,就是配置文件的内存表示。Config层下面是Proxy(服务代理层)。它会生成客户端的代理对象,生成服务端的代理对象。代理对象互相调用方法。Proxy下面是Registry(注册层)。消费者要到注册中心去订阅。服务的发现、服务的注册。...原创 2016-11-11 22:20:24 · 2658 阅读 · 0 评论 -
RabbitMQ的五种工作模式
1.简单队列生产者将消息发送到队列,消费者从队列中获取消息。2.work模式一个生产者、多个消费者。一个消息只能被一个消费者获取。应用场景,比如写数据库等操作。多个消费者能加快进度。不同的消费者消费能力可能不一样,可以用这样谁做的快谁就多消费一点,使得资源能够合理的利用消息的确认模式模式1:自动确认 只要消息从队列中获取,无论消费者获...原创 2019-04-10 21:32:46 · 3953 阅读 · 0 评论 -
Raft 协议
分布式一致性协议 Raft,自 2013 年论文发表之后就受到了技术领域的热捧,我认为相对于其他分布式一致性算法,Raft 有效的解决了分布式一致性算法过于复杂及难于实现的问题,这也是 Raft 能异军突起的主要因素。Raft 协议有效的借鉴了美国总统大选的策略,采用精英(Raft 称呼这个精英为 Leader)领导全局的方案,整个集群中只有 Leader 可以处理 client 发送过来的请...转载 2019-10-09 17:21:20 · 310 阅读 · 0 评论 -
dubbo-原理-标签解析
dubbo的配置都写在了spring的配置文件中。spring解析配置文件,都是通过接口BeanDefinitionParser来解析的。dubbo解析的实现类是DubboBeanDefinitionParser。spring容器一启动,parse方法就会执行。一个标签对应一个类。在BeanDefinitionParser的构造方法之前,会有dubbo的名称空间处理器。容...转载 2017-11-09 19:53:26 · 316 阅读 · 0 评论 -
dubbo-原理-服务暴露流程
分析:如何通过dubbo:service来把服务暴露出去。进入ServiceBean。它实现了两个重要的机制,一个是InitializingBean,当组件创建完对象以后会调用InitializingBean的唯一的方法afterPropertiesSet,也就是在属性设置完以后来回调这个方法。剩下的标签就不再举例。afterPropertiesSet就是把spring...转载 2017-09-12 15:14:09 · 1268 阅读 · 0 评论 -
MQ相关(优缺点,技术选型,高可用)
消息队列有什么优点和缺点优点:解耦异步削峰当不使用MQ时当使用MQ时缺点:1.系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,人ABCD四个系统好好的,没啥问题,你偏加个MQ进来,万一MQ挂了咋整?MQ挂了,整套系统崩溃了,你不就完了么。2.系统复杂性提高:硬生生加个MQ进来,你怎么保证消息没有...原创 2019-04-06 20:16:16 · 4419 阅读 · 2 评论 -
分布式锁简单入门以及三种实现方式介绍
很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车!学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。...转载 2019-05-22 10:47:26 · 3466 阅读 · 0 评论 -
定时任务 quartz
Quartz有四个核心接口Job、JobDetail、Trigger和Scheduler。Trigger主要有CronTrigger(表达式触发)和SimpleTrigger(简单触发)两个接口,表达式触发的功能更强大,在开发时使用比较广泛,Job是一个实现org.quartz.Job接口的java类。将需要完成的任务写在execute()方法中。一个job可以有多个trigger,一个trigg...原创 2019-07-04 23:40:37 · 3376 阅读 · 0 评论 -
分布式事物的几种解决方案
分布式事务之两阶段提交协议(2PC)两阶段提交协议(Two-phase Commit,2PC)经常被用来实现分布式事务。一般分为协调器C和若干事务执行者Si两种角色,这里的事务执行者就是具体的数据库,协调器可以和事务执行器在一台机器上。我们的应用程序(client)发起一个开始请求到TC; TC先将<prepare>消息写到本地日志,之后向所有的Si发起<prepa...转载 2019-07-10 17:11:18 · 3493 阅读 · 0 评论 -
Dubbo学习
RPC的概念:RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。RPC的原理图:由RPC的原理图可知RPC两个核心模块是通...原创 2019-01-09 23:47:13 · 3450 阅读 · 0 评论 -
SpringBoot与Dubbo整合的三种方式
前置条件(导入依赖)(1)、导入dubbo-starter <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> ...转载 2017-03-03 17:33:39 · 2849 阅读 · 0 评论 -
dubbo的负载均衡机制
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。以上是dubbo提供的四种负载均衡机制:Random LoadBalance随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。比如:上图中userService有三台服务提供者,权重分别为100、200、5...转载 2018-01-05 23:32:36 · 773 阅读 · 0 评论 -
dubbo高可用:服务降级
什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略向注册中心写入动态配置覆盖规则:RegistryFactory registryFactory = ExtensionLoader.getE...转载 2016-11-10 23:14:54 · 2114 阅读 · 0 评论 -
dubbo高可用:集群容错
在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。Failover Cluster失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)重试次数配置如下:<dubbo:service retries="2" />或<dubbo:refe...转载 2017-01-25 23:48:11 · 2430 阅读 · 0 评论 -
分布式架构相关
--------------------------------------------------------1.Dubbo入门---搭建一个最简单的Demo框架----------------------------------------------------------------------------------------------------------原创 2018-01-16 15:17:25 · 261 阅读 · 0 评论