自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Java NIO4:Socket通道

Socket通道上文讲述了通道、文件通道,这篇文章来讲述一下Socket通道,Socket通道与文件通道有着不一样的特征,分三点说:     1、NIO的Socket通道类可以运行于非阻塞模式并且是可选择的,这两个性能可以激活大程序(如网络服务器和中间件组件)巨大的可伸缩性和灵活性,因此,再也没有为每个Socket连接使用一个线程的必要了。这一特性避免了管理大量线程所需的上下文交换总开销,...

2019-01-31 16:45:37 283

原创 Java NIO3:通道和文件通道

通道是什么       通道式(Channel)是java.nio的第二个主要创新。通道既不是一个扩展也不是一项增强,而是全新的、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。     通常情况下,通道与操作系统的文件描述符(FileDescriptor)和文件句柄(FileHand...

2019-01-31 16:17:23 191

原创 Java NIO2:缓冲区

什么是缓冲区      一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可以再后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的。         缓冲区的工作...

2019-01-31 15:37:24 97

原创 Java NIO1:I/O模型概述

I/O模型       在开始NIO的学习之前,先对I/O的模型有一个理解,这对NIO的学习是绝对有好处的。我画一张图,简单表示一下数据从外部磁盘向运行中进程的内存区域移动的过程:这张图片明显忽略了很多细节,只涉及了基本操作,下面分析一下这张图。用户空间和内核空间         一个计算机通常有一定大小的内存空间,如一台计算机有4GB的地址空间,但是程序并不能完全使用这些地址...

2019-01-31 11:03:58 175

原创 ActiveMQ Topic消息持久化订阅

一、持久化到文件(默认)第一步:在${activemq.base}/conf/activemq.xml文件中配置持久化适配器第二步:在java代码中发送消息时第三步:消息订阅方创建消费对象时代码示例:public class TopicPersistentTest { //编写消息的发送方---消息的生产者 @Test public voi...

2019-01-29 15:50:22 1931

原创 ActiveMQ Topic消息失败重发

       消息失败重发指的是当消息的接收方没有成功的消费消息,我们需要重发消息,让消息的接收方成功消费这个消息,保证事务的完整性和消息的一致性。一、JMS消息确认机制    在session接口中定义的几个常量:   AUTO_ACKNOWLEDGE =  1    自动确认  CLIENT_ACKNOWEDGE =  2    客户端手动确认  DUPS_OK_ACKNO...

2019-01-28 21:11:30 1323

原创 JMS(Java Message Service)消息模型

一、P2P(Piont to Point)点对点模式    P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。    每一个消息都被发送到特定的队列,接收者从队列获取消息。队列保留着消息,直到他们被消费或者超时。    P2P的特点:   每一个消息只有一个消费者(Consumer)(即一旦被消费消息就不在队列中)    发送者和...

2019-01-28 16:47:30 179

原创 MQ(Message Queue)应用场景分析

      消息队列中间件是分布式系统中的重要组件,主要解决异步消息,应用解耦,流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的架构。   使用较多的消息队列有:ActiveMQ,RabbitMQ,Kafka,MetaMQ等。一、异步处理       场景说明:用户注册后需要发送注册邮件和注册短信。传统的做法如下:       将注册的信息写入数据库成功后,发送注册邮件...

2019-01-28 15:48:41 223

原创 Dubbo简介

一、Dubbo背景     所谓背景介绍,就是“我们在什么情况下,基于什么原因开发了这样一个中间件”就博主来看,简而言之,总结如下:    (1) 随着服务的不断增多,服务的URL配置管理变得非常困难。此时,我们需要找一个中介替我们管理。    (2) 服务间的依赖关系变得错踪复杂,相互调用混乱。此时,我们需要厘清谁是服务提供方,谁是服务的消费方。    (3) 服务间的调用量...

2019-01-25 15:14:11 152

原创 HSF简介

     阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被很多技术爱好者所熟知,目前已经支撑着近 2000 多个应用的运行。     其对应早期的开源项目 Dubbo(因为某些原因,Dubbo 项目在 2012 年年底,阿里巴巴就停止了对此开源项目的更新),则更是在互联网领域有着非常高的知名度和广泛的使用。     本文通...

2019-01-25 11:03:20 46880 7

原创 Redis分布式锁的正确实现方式(二)

前言       分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。...

2019-01-22 17:56:07 701

原创 Redis实现分布式锁(一)

分布式锁注意事项1.互斥性(独享锁):在任意时刻只有一个客户端可以获取2.防死锁:即使有一个客户端持有锁期间而没有主动释放锁,也能保证后续其他客户端能加锁3.持锁人解锁:加锁和解锁必须是一个客户端,客户端自己不能把别人加的锁给解了4.可重入:当一个客户端获取对象锁之后,这个客户端可以再次获取本对象上的锁(防止死锁,死等待)。redis分布式锁可能缺陷:在业务方法未执行结束,...

2019-01-22 16:42:45 129

原创 Redis数据库入门教程

【本教程目录】1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希1...

2019-01-17 16:18:34 167

原创 dubbo教程-11-我深入研究了下tcc-transaction

本地查看代码我们把fork后的代码下载到本地这个不用说了git clone https://github.com/ibywind/tcc-transaction然后导入到我们的IDE我们导入到 IDEA之后就需要干一件事情了我们查看他的 提交历史也就是 通过 git 历史 来查看这个项目的 一个 进化过程感谢 git 大神 .我们使用 version control...

2019-01-15 18:19:16 319

原创 dubbo教程-10-分布式事务框架tcc-transaction

dubbo的作者 对于dubbo实现分布式事务的一些观点他自己本人 不主张在 dubbo 这个框架本身 去实现分布式事务而是 dubbo 和 任何 业务框架一样都可以被事务管理器 事务切面 甚至是 事务框架集成因为 事务 不是 dubbo 该考虑的事情同时 dubbo 开发者 们也在官网建议 尽可能的 把 一个 服务的范围扩大通过 模块 功能设计 来 回避 分布式事务的问题但是我自...

2019-01-15 14:16:38 2472

原创 dubbo教程-09-dubbo分布式事务

引用以下所有内容都引用自 dubbo作者的博客他自己其实在 7 年以前就已经公开阐述过自己对于 dubbo的分布式事务理解我们一起来看他的描述 !关于Dubbo服务框架的分布式事务,虽然现在不急着做,但可以讨论一下。我觉得事务的管理不应该属于Dubbo框架,Dubbo只需实现可被事务管理即可,像JDBC和JMS都是可被事务管理的分布式资源,Dubbo只要实现相同的可被事务管...

2019-01-14 20:37:27 413

原创 dubbo教程-08-来自dubbo官方的服务化最优实践

服务化最佳实践分包        建议将服务接口、服务模型、服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。      如果需要,也可以考虑在 API 包中放置一份 Spring 的引用配置,这样使用方只需在 Spring 加载过程中引用此配置即可。配置建议放在模块的包目录下,以免冲突,...

2019-01-14 16:17:00 148

原创 dubbo教程-07-如何正确的配置dubbo

配置方式通常一个框架 如何给你开放了很多的配置项那么这个框架肯定是一个优秀的开放的框架可以配置的东西就没有必要自己去代码写了这一点 我觉得dubbo做的很好我们来到他的官网http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html看到这样一个界面可以配置的方式 总共有 四个 方式- XML 配置- 属性...

2019-01-11 17:20:39 183

原创 dubbo教程-06-dubbo-admin 控制台的搭建过程

dubbo-admin 是用来干嘛的?dubbo-admin 是dubbo的控制台web程序可以利用浏览器 来 进行 dubbo的一些性能监控服务治理 降级 分组还有就是一些参数的设置整个服务平台的管理功能他是一个 dubbo 中的 子 项目打包以后是一个 war 包可以部署到 tomcat等容器大概长这个样子我本来想去 github 下载这个源码的不过遗憾的时候 没有...

2019-01-11 15:18:20 2593

原创 dubbo教程-05-SSM和dubbo集成

集成SSM如何集成我给大家来个例子吧- dubbo-ssm-api 公共API 和 model.这是一个jar项目- dubbo-ssm-consumer 消费者 (controller , 或者是接口项目).war项目- dubbo-ssm-provider 服务提供者 service实现都在这里 , mybatis CRUD 都在这里.war项目maven添加依赖 d...

2019-01-11 10:54:09 261

原创 Dubbo教程-04-手写一个RPC

为什么要手写? 主要是 为了 理解下 RPC 的一个具体编程模型和他实现的一些细节其实就是一个编程模型的 理解 和 实践 过程基于netty框架我们之前 学过netty框架的一个 编程模型server client基于事件驱动的模式。上一个例子我们 把 数据传递到服务器然后 服务器给我们返回数据中间通过 netty的网络连接 实现打通那么我们就会想 是否可以 把 传递过...

2019-01-10 20:26:12 449 1

原创 使用Spring容器

        Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean。      Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean...

2019-01-10 19:46:24 250

原创 Dubbo教程-03-netty框架

什么是netty?1)本质:JBoss做的一个Jar包2)目的:快速开发高性能、高可靠性的网络服务器和客户端程序3)优点:提供异步的、事件驱动的网络应用程序框架和工具通俗的说:一个好使的处理Socket的东东如果没有Netty?远古:java.net + java.io近代:java.nio其他:Mina,Grizzlynetty为什么性能高?高性能的三...

2019-01-08 12:33:34 233

原创 Zookeeper介绍(三)——Zookeeper中的基本概念

角色     在Zookeeper概述中也提到过,Zookeeper的Follower在接到客户端请求之后会把请求转发到Leader,这里提到的Follower和Leader就是ZK中的角色,ZK中有以下角色:领导者(leader)负责进行投票的发起和决议,更新系统状态。为客户端提供读和写服务。跟随者(follower)用于接受客户端请求并想客户端返回结果,在选主过程中参与...

2019-01-04 16:39:37 150

原创 Zookeeper介绍(二)——Zookeeper的安装

Zookeeper有三种安装方式:单机模式、集群模式、伪集群模式。单机模式单机模式表示只运行在一台服务器上,适合测试环境; 安装步骤如下:一、下载ZooKeeper二、解压三、在conf目录下创建一个配置文件zoo.cfgtickTime=2000 dataDir=/Users/zdandljb/zookeeper/data dataLogDir=/Users/zdan...

2019-01-04 15:28:17 127

原创 Zookeeper介绍(一)——Zookeeper概述

什么是Zookeeper     Zookeeper是一个开放源码的分布式服务协调组件,是Google Chubby的开源实现。是一个高性能的分布式数据一致性解决方案。他将那些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并提供一系列简单易用的接口给用户使用。Zookeeper提供了哪些特性他解决的分布式数据一致性问题,提供了顺序一致性、原子性、单一视图、可靠性...

2019-01-04 11:25:36 344

原创 Dubbo教程-02-zookeeper简介,一些API,分布式锁

zookeeper介绍我们需要下载 zk目前官网的一个稳定版本 zookeeper-3.4.12.tar.gzhttp://mirrors.hust.edu.cn/apache/zookeeper/stable/      ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一...

2019-01-03 17:25:01 220

原创 Dubbo教程-01-简单介绍和springboot集成

分布式系统分布式系统是若干个独立计算机的集合,这些计算机对于用户来说就像单个相关系统随着互联网的发展单体应用已经不能支撑瞬间暴涨的用户涌入因此 分布式系统 流式计算框架 势在必行我们急需一个 分布式服务 治理框架 确保系统的 稳定有条不紊dubbo 是什么?dubbo 最初由 阿里开源 现在是 Apache 顶级项目主要作为一个 RPC框架 高性能...

2019-01-02 14:10:09 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除