Dubbo分析Serialize层

Dubbo整体设计 关于Dubbo的整体设计可以查看官方文档,下图可以清晰的表达Dubbo的整体设计: 1.图例说明 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口; 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系; 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类; 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法; 2.各层说明 config 配置层:对外配置接口…

阅读全文 »

基于Netty+Zookeeper+Quartz调度分析

前言 前几篇文章分别从使用和源码层面对Quartz做了简单的分析,在分析的过程中也发现了Quartz不足的地方;比如底层调度依赖数据库的悲观锁,谁先抢到谁调度,这样会导致节点负载不均衡;还有调度和执行耦合在一起,导致调度器会受到业务的影响;下面看看如何来解决这几个问题; 思路 调度器和执行器拆成不同的进程,调度器还是依赖Quartz本身的调度方式,但是调度的并不是具体业务的QuartzJobBean,而是统一的一个RemoteQuartzJobBean,在此Bean中通过Netty远程调用执行器去执行具体业务Bean;具体的执行器在启动时注册到Zookeeper中,调度器可以在Zookeepe…

阅读全文 »

JMS消息确认和事务

保证消息传送 保证消息传送有3个主要部分:消息自主性,存储并转发以及底层消息确认,下面具体看一下这些概念; 1.消息自主性 消息是自包含的自主性实体,在设计分布式消息应用程序时,要将此作为头条法则;当JMS客户端发送一条消息时,它就完成了它的所有工作,一旦该数据被传送出去,它就被认为是”安全的”, 而且不在受该客户端的控制,类似JDBC客户端和数据库直接的约定; 2.保存并转发消息传送 可以将消息标记为持久化的,这样JMS服务器负责保存消息,以确保在提供者发生故障或消费客户端发生故障的情况下,消息可以恢复正常;消息可以集中存储或本地存储; 3.消息确认 JMS规定了多种…

阅读全文 »

Spring-Cloud-Config消息总线和高可用

前言 上文中简单的介绍了Spring-Cloud-Config如何使用,如何手动更新配置文件,并且在文末提出了几个疑问,其中包括多个Client节点如何更新,Server端如何保证高可用性等;本文将重点介绍通过使用Spring Cloud Bus来批量更新客户端,以及Server如何保证高可用; Spring Cloud Bus消息总线 Spring Cloud Bus使用轻量级消息代理链接分布式系统的节点,可以用于广播状态改变(例如,配置改变)或其他管理指令;目前唯一实现的方式是用AMQP消息代理作为通道,其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和Rab…

阅读全文 »

Spring-Cloud-Config快速开始

Spring-Cloud-Config简介 Spring-Cloud-Config是Sping-Cloud下用于分布式配置管理的组件,分成了两个角色Config-Server和Config-Client;Config-Server端集中式存储/管理配置文件,并对外提供接口方便Config-Client访问,接口使用HTTP的方式对外提供访问;Config-Client通过接口获取配置文件,然后可以在应用中使用;Config-Server存储/管理的配置文件可以来自本地文件,远程Git仓库以及远程Svn仓库; Config-Server端 1.Config-Server依赖 注:2.0以后的版本…

阅读全文 »

Spring-session基于redis管理session

前言 在上文Tomcat Session管理分析介绍了使用tomcat-redis-session-manager来集中式管理session,其中一个局限性就是必须使用tomcat容器;本文介绍的spring-session也能实现session的集中式管理,并且不局限于某种容器; spring-session管理session实战 1.maven依赖的jar 2.准备spring-session.xml配置文件 session同样是使用redis来做集中式存储,为了方便测试使用本地的6379端口redis,LettuceConnectionFactory是redis连接工厂类; RedisH…

阅读全文 »

Tomcat Session管理分析

前言 在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager介绍 上文中在Tomcat的context.xml中配置了Session管理器RedisSessionManager,实现了通过redis来存储session的功能;Tomcat本身提供了多种Session管理器,如下类图: 1.Manager接口类 定义了用来管理session的基本接口,包括:createSession,fi…

阅读全文 »

Nginx+Tomcat关于Session的管理

前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式。 nginx安装配置 1.安装nginx 提示报如下错误: 解决办法安装epel:EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目; 安装完之后,即可成功安装nginx; 2.启…

阅读全文 »