Dubbo+zookeeper

阿里巴巴Dubbo实现的源码分析[转]

早过忘川 提交于 2019-12-06 11:17:42
1. Dubbo概述 Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及作为 SOA 服务治理的方案。它的核心功能包括: #remoting:远程通讯基础,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。 #Cluster: 服务框架核心,提供基于接口方法的远程过程调用,包括多协议支持,并提供软负载均衡和容错机制的集群支持。 #registry: 服务注册中心,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 由于Dubbo团队的文档和代码都非常优秀,所以更多关于dubbo的方方面面请参考网站 http://code.alibabatech.com/wiki/display/dubbo/Home-zh 。 这里我们只是补充一下从源码具体实现角度来看的某些细节方面,包括Invoker、ExtensionLoader等方面。任何官方已经介绍过的细节,我们不做画蛇添足,官方文档已经足够详实了,这篇文档的定位是补充实现的相关细节,是基于我在往Dubbo添加web service协议过程中,所碰到过的一些困难。 2. 服务提供者暴露一个服务的详细过程 上图是服务提供者暴露服务的主过程: 首先ServiceConfig类拿到对外提供服务的实际类ref(如

基于Dubbo框架构建分布式服务 (二)

你。 提交于 2019-12-06 04:18:16
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的Forking Cluster模式配置,就可以对一个调用请求并行发送到多台对等的提供方(Provider)服务所在的节点上,只选择最快一个返回响应的,然后将调用结果返回给服务消费方(Consumer),显然这种方式是以冗余服务为基础的,需要消耗更多的资源,但是能够满足高实时应用的需求。 有关Dubbo服务框架的简单使用,可以参考我的其他两篇文章(《基于Dubbo的Hessian协议实现远程调用》,《Dubbo实现RPC调用使用入门》,后面参考链接中已给出链接),这里主要围绕Dubbo分布式服务相关配置的使用来说明与实践。 Dubbo服务集群容错 假设我们使用的是单机模式的Dubbo服务,如果在服务提供方(Provider)发布服务以后,服务消费方(Consumer)发出一次调用请求,恰好这次由于网络问题调用失败,那么我们可以配置服务消费方重试策略

基于Dubbo框架构建分布式服务 (二) 【转】

笑着哭i 提交于 2019-12-06 04:18:02
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的Forking Cluster模式配置,就可以对一个调用请求并行发送到多台对等的提供方(Provider)服务所在的节点上,只选择最快一个返回响应的,然后将调用结果返回给服务消费方(Consumer),显然这种方式是以冗余服务为基础的,需要消耗更多的资源,但是能够满足高实时应用的需求。 有关Dubbo服务框架的简单使用,可以参考我的其他两篇文章(《基于Dubbo的Hessian协议实现远程调用》,《Dubbo实现RPC调用使用入门》,后面参考链接中已给出链接),这里主要围绕Dubbo分布式服务相关配置的使用来说明与实践。 Dubbo服务集群容错 假设我们使用的是单机模式的Dubbo服务,如果在服务提供方(Provider)发布服务以后,服务消费方(Consumer)发出一次调用请求,恰好这次由于网络问题调用失败,那么我们可以配置服务消费方重试策略

基于Dubbo框架构建分布式服务 (二)

拜拜、爱过 提交于 2019-12-05 08:25:40
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的Forking Cluster模式配置,就可以对一个调用请求并行发送到多台对等的提供方(Provider)服务所在的节点上,只选择最快一个返回响应的,然后将调用结果返回给服务消费方(Consumer),显然这种方式是以冗余服务为基础的,需要消耗更多的资源,但是能够满足高实时应用的需求。 有关Dubbo服务框架的简单使用,可以参考我的其他两篇文章(《基于Dubbo的Hessian协议实现远程调用》,《Dubbo实现RPC调用使用入门》,后面参考链接中已给出链接),这里主要围绕Dubbo分布式服务相关配置的使用来说明与实践。 Dubbo服务集群容错 假设我们使用的是单机模式的Dubbo服务,如果在服务提供方(Provider)发布服务以后,服务消费方(Consumer)发出一次调用请求,恰好这次由于网络问题调用失败,那么我们可以配置服务消费方重试策略

shiro在springmvc里面的集成使用【转】

落爺英雄遲暮 提交于 2019-12-05 01:11:12
<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.9</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-quartz</artifactId>

shiro在springmvc里面的集成使用【转】

我的梦境 提交于 2019-12-05 01:10:56
<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.9</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-quartz</artifactId>

Maven创建web项目:SpringMVC+Mybatis

拥有回忆 提交于 2019-12-04 05:09:05
IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1、File->New->Project 勾选Create from archetype 点击Next 2、输入GroupId、ArtifactId 点击Next 3、继续点击Next,输入Project name 点击Finish,完成基本项目创建 4、在src/main下添加java目录作为源文件目录 在main上右键new Directory并命名为java; 同时在Project Structure中,将java目录设置为Sources,然后Apply,点击OK。 5、配置pom.xml 可以在maven仓库进行相关依赖搜索:http://www.mvnrepository.com/ 利用<dependency>元素进行项目所依赖的jar包配置,maven通过对pom.xml的配置使得不再需要导入jar包那么麻烦 6、配置tomcat 7、资源文件编译时一起打包到输出目录 IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。 项目中可能包含一些静态资源如:mapping/*.xml,又或者一些spring的配置文件:spring.xml、spring-mvc.xml等等

Maven创建web项目:SpringMVC+Mybatis 【转】

六眼飞鱼酱① 提交于 2019-12-04 05:08:47
IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1、File->New->Project 勾选Create from archetype 点击Next 2、输入GroupId、ArtifactId 点击Next 3、继续点击Next,输入Project name 点击Finish,完成基本项目创建 4、在src/main下添加java目录作为源文件目录 在main上右键new Directory并命名为java; 同时在Project Structure中,将java目录设置为Sources,然后Apply,点击OK。 5、配置pom.xml 可以在maven仓库进行相关依赖搜索:http://www.mvnrepository.com/ 利用<dependency>元素进行项目所依赖的jar包配置,maven通过对pom.xml的配置使得不再需要导入jar包那么麻烦 6、配置tomcat 7、资源文件编译时一起打包到输出目录 IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。 项目中可能包含一些静态资源如:mapping/*.xml,又或者一些spring的配置文件:spring.xml、spring-mvc.xml等等

maven+springMVC+mybatis+junit详细搭建过程

ⅰ亾dé卋堺 提交于 2019-12-03 09:48:51
首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容。。) 1. 工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口), cn.springmvc.service(service接口), cn.springmvc.service.impl(service接口的实现), cn.springmvc.controller(存放控制层controller) 在src/main/resource文件夹中,新建包conf(存放配置文件), mapper(mybatis的mapper文件) 在src/test/java文件夹中,新建包cn.springmvc.test(存放测试文件) 在WEB-INF文件夹下新建jsp文件夹(存放jsp文件) 这样项目结构基本完成了 2. 引入依赖包 打开maven的pom文件,对本次开发所需使用的架包依次导入(maven项目管理的优势) 查找依赖结构有个不错的网站 只要输入包名即可查找引来关系 pom.xml(包依赖) <project xmlns="http://maven.apache.org/POM/4.0

Maven创建web项目:SpringMVC+Mybatis 【转】

孤者浪人 提交于 2019-12-03 02:10:37
IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1、File->New->Project 勾选Create from archetype 点击Next 2、输入GroupId、ArtifactId 点击Next 3、继续点击Next,输入Project name 点击Finish,完成基本项目创建 4、在src/main下添加java目录作为源文件目录 在main上右键new Directory并命名为java; 同时在Project Structure中,将java目录设置为Sources,然后Apply,点击OK。 5、配置pom.xml 可以在maven仓库进行相关依赖搜索:http://www.mvnrepository.com/ 利用<dependency>元素进行项目所依赖的jar包配置,maven通过对pom.xml的配置使得不再需要导入jar包那么麻烦 6、配置tomcat 7、资源文件编译时一起打包到输出目录 IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。 项目中可能包含一些静态资源如:mapping/*.xml,又或者一些spring的配置文件:spring.xml、spring-mvc.xml等等