自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dubbo源码研究(一)

dubbo的中文手册:http://dubbo.apache.org/zh-cn/docs/dev/design.html从配置开始:dubbo主要的作用就是进行服务治理。dubbo的配置方式分为三种1、基于xml配置服务提供者配置:<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:...

2019-05-10 21:45:30 179

原创 LCN框架

LCN框架什么是LCN框架LCN分布式事务框架v3.0 https://www.txlcn.org框架特点支持各种基于spring的db框架兼容SpringCloud、Dubbo使用简单,低依赖,代码完全开源基于切面的强一致性事务框架高可用,模块可以依赖Dubbo或SpringCloud的集群方式做集群化,TxManager也可以做集群化支持本地事务和分布式...

2019-04-16 21:27:21 370

原创 分布式事物解决方案

分布式事物解决方案常见解决方案分布式事物解决方案可以使用全局事物2pc(两段提交协议)、3pc(三段提交协议),tcc补偿机制、提供回滚接口、分布式数据库 LCN 核心采用3PC+TCC补偿机制什么是XA接口XA–eXtended Architecture 在事务中意为分布式事务XA由协调者(coordinator,一般为transaction manager)和参与...

2019-04-14 21:54:32 170

原创 分布式事物(二)

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。分布式理论CPA理论CAP由Eric B...

2019-04-13 21:24:55 173

原创 分布式事物

事物特性(acid)原子性(A)所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。一致性(C)事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后...

2019-04-09 21:45:27 98

原创 NIO(一)缓冲

缓冲区是包在一个对象内的基本数据元素数组,其有四个重要属性    容量( Capacity):缓冲区能够容纳的数据元素的最大数量,容量在缓冲区创建时被设定,并且永远不能被改变。    上界(Limit):缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。    位置(Position):下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更...

2019-04-03 22:27:04 105

原创 分布式情况下定时任务会出现哪些问题

分布式情况下定时任务会出现哪些问题?分布式集群的情况下,怎么保证定时任务不被重复执行分布式定时任务解决方案①使用zookeeper实现分布式锁 缺点(需要创建临时节点、和事件通知不易于扩展)②使用配置文件做一个开关 缺点发布后,需要重启③数据库唯一约束,缺点效率低④使用分布式任务调度平台XXLJOBXXLJOB介绍1、简单:支持通过Web页面对任务进行CRUD操作...

2019-04-02 22:05:35 1372

原创 集群情况下Session共享解决方案

集群情况下session会产生什么原因?因为Session存放在JVM内存中,集群的话多个JVM不会共享Session共享解决方案nginx或者haproxy做的负载均衡)用Nginx 做的负载均衡可以添加ip_hash这个配置,用haproxy做的负载均衡可以用 balance source这个配置。从而使同一个ip的请求发到同一台服务器。...

2019-04-01 22:20:44 185

原创 nginx实现负载均衡

nginx实现负载均衡什么是负载均衡负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负...

2019-03-28 22:21:44 91

原创 HashMap 源码分析

HashMap 在JDK1.8之前呢主要是数组加链表的形式 在1.8之后是数组+链表+红黑树的形式。 以下为HashMap主要属性: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable,...

2019-03-27 22:46:32 118

原创 nginx实现反向代理

nginx实现反向代理什么是反向代理?反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。启动一个Tomcat 127.0.0.1:8080使用nginx反向代理8080.itmayie...

2019-03-26 21:52:06 119

原创 Windows环境下安装Nginx

Windows环境下安装Nginx解压:nginx-windows双击:nginx.exe能看到nginx欢迎界面说明,nginx安装成功演示下nginx做静态服务器windows常用命令nginx.exe -s stop –停止nginx优缺点占内存小,可以实现高并发连接、处理响应快。可以实现http服务器、虚拟主机、反向代理、负载均衡。n...

2019-03-26 21:14:35 325

原创 LinkedList源码剖析

1、LinkedList底层双向链表2、类属性: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable { ...

2019-03-24 22:45:01 104

原创 ArrayList扩容机制。

1)直接new 一个ArrayList对象时(未指定初始容量大小)是一个空的数组,容量大小为零。 public ArrayList() { // DEFAULTCAPACITY_EMPTY_ELEMENTDATA 变量为一个空的数组 private static final Object[] DEFAULTCAPACITY_EMPTY...

2019-03-23 22:02:38 644 1

原创 nginx入门

nginx入门什么是nginx?nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx。反向代理服务器Nginx、lvs、F5(硬件)、haproxy...

2019-03-22 21:45:24 84

原创 MQ产品的分类

RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。Redis是一个Key-V...

2019-03-21 21:44:38 666

原创 消息中间件

1.1消息中间件产生的背景在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常点对点通信:客户的一次调用只发送给某个单独的目标对象。1.2 什么是消息中间件 面向消息的中间件(Messag...

2019-03-20 21:52:52 87

原创 使用Zookeeper实现选举策略

场景有一个向外提供的服务,服务必须7*24小时提供服务,不能有单点故障。所以采用集群的方式,采用master、slave的结构。一台主机多台备机。主机向外提供服务,备机负责监听主机的状态,一旦主机宕机,备机要迅速接代主机继续向外提供服务。从备机选择一台作为主机,就是master选举。原理分析右边三台主机会尝试创建master节点,谁创建成功了,就是master,向外提...

2019-03-19 22:05:00 1538

原创 SpringBoot集成Redis

SpringBoot集成RedisMaven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3....

2019-03-18 21:30:41 101

原创 Redis

Java缓存机制Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下:要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定引用对象的缓存,最简单也最不实用,首要的问题就是保存对象的有效性以及周期无法控制,这样很容易就导致内存急剧上升,周期无法控制可以采用SoftReference,WeakRe...

2019-03-17 21:34:24 101

原创 Zookeeper 环境搭建

Zookeeper windows环境安装环境要求:必须要有jdk环境,本次讲课使用jdk1.81.安装jdk2.安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本。解压zookeeper-3.4.6至D:\machine\zookeeper-3.4.6.在D:\ma...

2019-03-16 21:40:54 155

原创 Zookeeper应用场景(三)

集群管理与Master选举1. 集群机器监控:这通常用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。这样的场景中,往往有一个监控系统,实时检测集群机器是否存活。过去的做法通常是:监控系统通过某种手段(比如ping)定时检测每个机器,或者每个机器自己定时向监控系统汇报“我还活着”。 这种做法可行,但是存在两个比较明显的问题:1. 集群中机器有变动的时候...

2019-03-15 21:30:26 80

原创 Zookeeper应用场景(二)

分布式通知/协调ZooKeeper中特有watcher注册与异步通知机制,能够很好的实现分布式环境下不同系统之间的通知与协调,实现对数据变更的实时处理。使用方法通常是不同系统都对ZK上同一个znode进行注册,监听znode的变化(包括znode本身内容及子节点的),其中一个系统update了znode,那么另一个系统能够收到通知,并作出相应处理1. 另一种心跳检测机制:检测系统和被检测系...

2019-03-14 21:20:40 84

原创 Zookeeper应用场景(一)

数据发布与订阅(配置中心)发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。负载均衡这里说的负载均衡是指软负载均衡。在分布式环境中,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。而消费者就须要在这些...

2019-03-13 22:00:52 75

原创 Zookeeper概述

什么ZookeeperZookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过...

2019-03-12 22:00:59 73

原创 RPC远程调用

RPC远程调用RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一...

2019-03-11 21:50:19 154

原创 分布式项目架构

分布式项目架构根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程通讯技术。优点:1.把模块拆分,使用接口通信,降低模块之间的耦合度。2.把项目拆分成若干个子项目,不同的团队负责不同的子项目。3.增加功能时只需要再增加一个子项目,调用其它系统的接口就可以。4.可以灵活的进行分布式部署。有优点就有缺点,缺点如下:1.系统之间...

2019-03-10 21:20:14 4330

原创 服务消费者(Feign)

服务消费者(Feign)什么是FeignFeign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。简而言之:Feign 采用的是基于...

2019-03-09 21:37:17 91

原创 实现服务注册

实现服务注册创建EureKaserver项目Maven依赖 &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;vers...

2019-03-08 21:30:44 254

原创 微服务架构

微服务架构什么是微服务架构架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行SOA到微服务架构的演进过程作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想)SOA架构与微服务架构区别SOA架构主要针对企业级、采用ESB服务(ESB...

2019-03-07 21:12:40 81

原创 常见Dubbo面试题

什么是Dubbo?Duubbo是一个RPC远程调用框架, 分布式服务治理框架什么是Dubbo服务治理?服务与服务之间会有很多个Url、依赖关系、负载均衡、容错、自动注册服务。Dubbo有哪些协议?默认用的dubbo协议、Http、RMI、HessianDubbo整个架构流程分为四大模块生产者、消费者、注册中心、监控中心生产者:提供服务消费者: 调用服务注册中...

2019-03-06 21:03:56 1114

原创 Dubbo环境搭建

1、启动zookeeper 使用zookeeper 作为服务注册中心 2、创建itmayiedu-interface工程提供会员接口 创建itmayiedu-interface工程提供服务接口 3、创建itmayiedu-member-provider工程生产者 创建itmayiedu-member-provider 工程提供服务接口,生产者主要发布服务...

2019-03-05 20:45:08 77

原创 Dubbo

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用,说白了就是个远程服务调用的分布式框架。告别Web Service模式中的wsdl,以服务者与消费者的方式在dubbo 上注册)。其核...

2019-03-04 21:13:38 94

原创 Actuator监控应用

Actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况.特别对于微服务管理十分有意义.缺点:没有可视化界面。Maven依赖: &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt...

2019-03-03 20:10:15 295

原创 热部署

热部署原理: spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。 其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个Clas...

2019-03-02 20:18:42 692

转载 注解配置与EhCache使用

pom文件引入&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-cache&lt;/artifactId&gt;&lt;/dependency&gt;&lt;?xml version="1.0" en

2019-03-01 20:38:11 220

原创 Spring Boot集成lombok

添加lombok依赖&lt;dependency&gt; &lt;groupId&gt;org.projectlombok&lt;/groupId&gt; &lt;artifactId&gt;lombok&lt;/artifactId&gt;&lt;/dependency&gt;示例:@Slf4j@Datapublic class UserEntity { /...

2019-02-28 21:24:05 113

原创 AbstractController

public abstract class AbstractController{ /** 日志 */ private static final Logger LOG = LoggerFactory.getLogger(AbstractController.class); /** 加密策略(md5) */ private static final Encry e...

2019-02-27 20:46:09 1279

原创 aop统一日志拦截

@Before("webLog()")public void doBefore(JoinPoint joinPoint) throws Throwable {// 接收到请求,记录请求内容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttr...

2019-02-26 21:05:14 536

原创 几个比较常见的eclipse快捷键

ctrl+shift+r:搜索工作区的任何文件alt+shift+r:重命名属性和方法Alt+方向键:当前行内容上下移动ctrl+.及ctrl+1:下一个错误及快速修改for + Control-Space:自动遍历集合Ctrl+Alt+H: 选中的方法在哪里被调用Ctrl+T:查看一个类的继承关系树,是自顶向下的,再多按一次Ctrl+T, 会换成自底向上的显示结构。全...

2019-02-25 21:21:43 132

空空如也

空空如也

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

TA关注的人

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