分布式服务架构
文章平均质量分 83
小弟季义钦
好东西要大家分享!
展开
-
Java IO:BIO和NIO区别及各自应用场景
引言BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。下面通过一个例子解释两者区别:假设当前服务原创 2016-04-20 22:57:29 · 18087 阅读 · 0 评论 -
Curator源码解析(四)ZooKeeper存在的连接问题
都说Curator的连接机制比较牛逼,所以在分析Curator的连接和重试机制之前,我想先搞清楚原生的ZooKeeper的连接存在哪些问题。下面是我查阅资料总结的结果,转载请注明出处: jiq•钦's technical BlogCurator虽然提供所谓的高层抽象API来简化了ZooKeeper的使用,但更重要的是封装了管理到ZooKeeper集群的连接以及重试机制的复杂性,原创 2015-01-06 22:04:05 · 5806 阅读 · 1 评论 -
客户端代理架构图分享
下面是我设计的一个客户端代理的架构图,主要完成以下功能:1、异步消息通知;2、耗时任务处理;在这个架构中包括注册中心,用于服务的动态注册和发现,以及配置信息的管理。原创 2014-09-21 20:36:04 · 3339 阅读 · 0 评论 -
Curator源码解析(二)初始化和启动分析
上一篇文章这里已经列出了Curator的一个使用的例子,这篇文章将详细分析其初始化和启动部分。测试程序分析1 初始化和启动(1) newClient方法返回CuratorFramework接口对象: public staticCuratorFramework newClient(String connectString, int sessionTimeou原创 2015-01-04 23:13:21 · 3338 阅读 · 0 评论 -
Curator源码解析(一)源码结构和测试程序
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情, 于是在它的基础上包装了一下, 提供了一套更好用的客户端框架. Netflix在用ZooKeeper的过程中遇到的问题, 我们也遇到了, 所以开始研究一下, 首先从他在github上的源码, w原创 2015-01-04 23:08:44 · 3798 阅读 · 0 评论 -
Curator源码解析(三)访问接口分析
接着上一篇,将分析测试程序中的访问接口部分。2调用ZooKeeper访问接口初始化和启动分析完了,操作接口调用代码如下:String path = ZKPaths.makePath(PATH, name);byte[] bytes =args[1].getBytes();try{ client.setData().forPath(path,bytes);}原创 2015-01-04 23:17:02 · 5114 阅读 · 0 评论 -
ZooKeeperNet源码解析
转载请注明出处:jiq•钦's technical BlogZooKeeperNet是ZooKeeper的.NET客户端,下载地址:https://github.com/ewhauser/zookeeper测试程序ZooKeeper zkClient = new ZooKeeper(URL,new TimeSpan(0, 0, 0, 10000), watcher);原创 2015-02-08 17:41:44 · 2670 阅读 · 0 评论 -
ZooKeeper典型应用场景一览
转zi查看PDF版本ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。值得注意的是,ZK并非天生就是为这些应用场景设计的,都转载 2014-05-22 22:40:31 · 1060 阅读 · 0 评论 -
Zookeeper客户端库ZkClient
在使用ZooKeeper过程中发现,用原生方法实现某些业务功能很麻烦例如:1)如何实现持久的Watcher注册ZooKeeper的Watcher是一次性的,用过了需要再注册;2)如何解决session的超时问题生产环境中如果网络出现不稳定情况,那么这种情况出现的更加明显;3)如何实现领导选举集群情况下可能需要实现stand by,一个服务挂了,另一个需要接替的效果;转载 2014-04-05 22:11:31 · 3720 阅读 · 0 评论 -
分布式注册中心Overview
转载请注明出处:jiq•钦's technical Blog 版权所有 author by 季义钦一、 动机当前我们已经全面进入到分布式应用时代,后端已经开始全面服务化,根据职责拆分为多个子系统,并且以廉价服务器集群进行支撑。 但是在这样一种架构下: 1、 减轻配置灾难:服务、网站、FTP服务器、数据库、公共组件等资源的配置信息,以及一些全局的系统配置参数原创 2015-02-10 13:37:45 · 5409 阅读 · 5 评论 -
Zookeeper异常ConnectionLossException解决
今天安装了CentOS虚拟机,然后写了一个Zookeeper测试程序,这个测试程序连接到运行在本机的Zookeeper服务能够正常运行。但是当连接到远端的CentOS虚拟机上的Zookeeper服务之后,出现了下面异常:Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossExceptio原创 2014-12-09 00:16:54 · 57865 阅读 · 12 评论 -
分布式环境下配置中心实现思考【推荐】
最近在考虑分布式环境下配置中心实现。对于配置中心很难设计。光用Zookeeper吧,发现一是跨语言支持不好,需要大量跨语言支持的开发,而且没办法在上面增加大量的算法和逻辑。如果在Zookeeper前面加一层服务的话,又怕成为单点压力。下面是我画的一个架构图,希望大家帮忙看看,踊跃讨论。原创 2014-07-31 23:56:15 · 8337 阅读 · 5 评论 -
RHEL7安装部署Tomcat7
文章说明:分布式注册中心(链接)需要安装的组件包含两个部分:1、注册中心服务(Zookeeper)2、网站(Tomcat服务器) 此文档摘自分布式注册中心安装部署的Part-2安装环境:[root@localhost etc]# cat/etc/redhat-release RedHat Enterprise Linux Server release 7.0 (Maipo)[root@localh原创 2016-04-20 20:49:13 · 8352 阅读 · 0 评论 -
RHEL7安装部署ZooKeeper
安装环境:[root@localhost etc]# cat/etc/redhat-release RedHat Enterprise Linux Server release 7.0 (Maipo)[root@localhost etc]# uname -aLinuxlocalhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:1原创 2016-04-20 20:42:35 · 7644 阅读 · 0 评论 -
关于HTTP1.1的长连接
HTTP是一个构建在传输层的TCP协议之上的应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范。 HTTP1.0的短连接HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。这个过程大概可以描述为:1、建立连接:首先DNS解析过程。如把域名变成一个ip,如原创 2016-01-11 22:52:24 · 10240 阅读 · 0 评论 -
Java IO:SocketChannel和Selector在ZooKeeper中应用
转载请注明出处:jiq•钦's technical Blog 如果不了解SocketChannel和Selector,请先阅读我的另一篇博文:http://blog.csdn.net/jiyiqinlovexx/article/details/46780555 ZooKeeper的启动从QuorumPeerMain类的main函数开始: 调用顺序是: Main -> initializeAndRu原创 2016-01-20 22:57:03 · 1898 阅读 · 0 评论 -
Thrift学习(1)C#调用Java开发步骤详解
1 下载Thrift下载地址:http://thrift.apache.org/downloadthrift-0.9.3.exe 用于编译Thrift中间文件生成对应语言代码的工具thrift-0.9.3.tar.gz 包含Thrift各个语言的源码库,以及一些测试程序代码等 2 编译生成.NET库(DLL)和Java库(Jar)解压thrift-0.9.3.tar.gz文件原创 2016-01-07 20:07:42 · 3048 阅读 · 0 评论 -
Thrift学习(2)Thrift优缺点讨论
其实还有一些问题在困惑我。比如:1. Thrift主要的有点是不是跨语言?2. Facebook有很多跨语言调用的场景么?为什么要开发Thrift这个东东?3. 下载国内外各大互联网公司针对Thrift应用规模如何?一般都是在什么场景下应用?4. Thrift优缺点?所以专门开这篇博文,随着时间推移遇到的较好的关于Thrift的观点和想法都记录在这里!!!=====================原创 2016-01-07 20:26:36 · 8925 阅读 · 0 评论 -
关于部门后端全部转向java前初步设想
Java服务有些什么形式?目前来看主要是以下几类:1、 运行在Web应用服务器的Servlet2、 Thrift、PB、Avro等类似框架写的java服务3、 WebService(JAX-WS、JAX-RS)现在我们服务端要全面转向java。若后端子系统全部用Servlet写,将无法实现跨语言,我们现在客户端大部分还是.NET平台。如果用Thrift等框架,现在满足了.NET调用Java服原创 2016-01-06 00:27:27 · 2331 阅读 · 1 评论 -
关于广域网环境TCP是否适用的问题
1. 前言突然想起来很久以前听部门一位同事说过,Http协议适用于广域网,而TCP协议就不适用于广域网,因为Http协议是短连接,而TCP协议是长连接,开销比较大! 其实仔细分析就知道这种说话不成立。Http协议本身就是基于TCP协议的,发起一次Http请求之前客户端需要同服务端通过三次握手建立TCP连接。 以下几段内容摘自网络,最后给出自己总结的结论。 2. 长连接与短连接二、长连接与短连接的操原创 2016-01-07 00:05:45 · 3089 阅读 · 0 评论 -
Windows 2003-32bit上RabbitMQ不定期崩溃
转载请注明出处: jiq•钦's technical Blog - 季义钦现象:最近一个系统用到了RabbitMQ消息中心,这个系统又必须用于替换旧的系统,所以就有了必须运行在Windows 2003 32bit机器上面的限制。因为需求获取原因,所以可以说到了集成测试阶段才知道这个限制,当系统跑起来的时候,发现一个致命性问题:RabbitMQ Broker(NT服务)不定期崩溃。打开windows原创 2015-10-07 23:12:22 · 2801 阅读 · 1 评论 -
ZooKeeper运维之部署方案设计
转自:@ni掌柜nileader@gmail.com 地址部署方案的设计我们常说的ZooKeeper能够提供高可用分布式协调服务,是要基于以下两个条件: 1. 集群中只有少部分的机器不可用。这里说的不可用是指这些机器或者是本身down掉了,或者是因为网络原因,有一部分机器无法和集群中其它绝大部分的机器通信。例如,如果ZK集群是跨机房部署的,那么有可能一些机器所在的机房被隔离了。转载 2015-01-13 22:33:21 · 1402 阅读 · 0 评论 -
ZooKeeper的“会话终止”是这么出现的
转载请注明出处: jiq•钦's technical Blog经过我的测试,得出关于会话终止的下列结论:客户端创建ZooKeeper实例连接到ZooKeeper服务端,设置会话超时时间为10s。(1)若强制关闭ZooKeeper服务端(模拟其崩溃),客户端立马收到Disconnected连接断开事件,等待半个小时,再次启动ZooKeeper服务端,客户端收到SyncConnec原创 2015-01-12 21:21:58 · 5404 阅读 · 0 评论 -
ZooKeeper运维之数据文件和事务日志
1、面临问题:最近在基于Zookeeper开发一个分布式注册中心,包括两大功能: 配置信息的集中管理;服务的动态注册和发现。这里面会面临一个问题: 平时在公司开发系统肯定都利用可视化配置界面将所有配置信息配置好了,如果要将这些配置信息部署到新的环境,或者更新已经存在的另一个环境的配置信息,该怎么办呢? 肯定不能把整个Zookeeper集群的文件夹都拷贝过去,删掉原有的完全替换为现在的新的这转载 2015-01-13 22:47:47 · 7774 阅读 · 0 评论 -
分析分布式服务框架
from BlueDavy之技术Bolg技术是为需求而服务的,分布式服务框架也同样如此,它不是凭空诞生的,也是因为有这样的需求才会有分布式服务框架这么样的东西诞生,在这篇blog中来详细的分析分布式服务框架诞生的原因(其实也是需要用分布式服务框架的应用场景,这里隐含的意思就是并不是什么应用都需要分布式服务框架的)、分布式服务框架需要提供的feature以及实现这些feature可选的技术方案。转载 2014-03-19 22:59:49 · 940 阅读 · 0 评论 -
关于HSF(高性能服务框架)方案的疑问
小弟刚开始接触HSF,老大让我调研一下,但是我最近遇到一个非常大的疑问,想请各位讨论一下,希望大家踊跃啊:对于我们公司(非大型IT公司)来讲,想要实现一个高性能的服务框架。我们目前其实没有太实际的需求,主要就是想在HSF高性能服务框架方面有所成就,或者说有所进展,一步步慢慢发展嘛,未来可以结合分布式存储,推出属于自己的一套高性能服务调用以及存储的解决方案。 我的疑问主要是觉得下面两原创 2014-02-25 22:01:14 · 2406 阅读 · 0 评论 -
高性能分布式服务框架Dubbo背景与需求
背景(#)随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。垂直应用架构当访问量逐渐增大转载 2014-02-26 08:57:48 · 1657 阅读 · 0 评论 -
支持多序列化的RPC框架avro-rpc
avro-rpc http://code.google.com/p/avro-rpc/ 1.开发背景 公司的运营管理平台建立在J2EE平台之上,采用多层分布式的架构体系。分布式服务节点之间需要通讯和交互(业务节点和资源节点之间),服务端和客户端需要交互(终端客户端需要调用服务端的远程服务,客户端有C实现的,也有Java等其他语言实现的)。因此基础平台需要提供一个稳定、高效的、可伸转载 2013-12-19 18:49:32 · 1998 阅读 · 0 评论 -
Hessian学习之(一):简单测试 + C#调用Java服务
1 下载Eclipse IDE for JavaEE Developer(http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/keplersr1)2 下载hessian-4.0.37.jar (http://hessian.caucho.com/index.xtp#IntroductiontoHess原创 2013-12-12 16:39:14 · 3245 阅读 · 0 评论 -
Hessian学习之(二):Hessian集成到Spring
1 为什么集成Hessian到Spring中?2 开发步骤:(1) 下载spring(包含hessian)下载地址:http://sourceforge.net/projects/springframework/files/springframework-2/2.5.5/(2) 创建动态web工程注意选择tomcat服务器,以及选择生成web.xml这是原创 2013-12-15 23:08:44 · 1416 阅读 · 0 评论 -
Hessian学习之(三):Hessian+Apache+Tomcat在windows上实现负载均衡
开发环境:windows8操作系统。框架描述:前端为普通的java程序(当然也可以是C#),通过Hessian请求Apache服务器,Apache服务器将请求负载均衡到两个Tomcat服务器真正处理请求。为什么选择Windows平台呢?答案只有一个,我现在正在调研高性能分布式服务框架,为了快速用起来一些技术,就选择了简单的windows部署方式,最终生产环境肯定是稳定的Linu原创 2013-12-16 23:03:48 · 3106 阅读 · 0 评论 -
跨语言RPC框架Hessian、Thrift、Protocol Buffer之间的选择
总结在几者之间选择的考量:1. 如果你不需要很多语言相互调用, 希望保持清晰的java接口代码(无任何业务不相关的接口继承和方法,属性定义),减少开放工作量,推荐Hessian。2. 如果你的系统之间传输的数据量不是很大(3. 如果需要支持大数据量的传输,多语言调用,极高的并发支持,推荐使用thrift/protocol buffer。 通常我们并发很难超过1000 r转载 2013-12-17 21:03:46 · 15286 阅读 · 6 评论 -
远程调用服务(RPC)和基于消息的通信(Message Queue)对比
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://oldratlee.com/post/2013-02-01/synchronous-rpc-vs-asynchronous-message在阿里的平台技术部参与开发了Dubbo(远程调用服务)和Napoli(消息解决方案),又给网站应用支持这2个产品2年,了解了这2个产品的实转载 2013-09-11 16:55:41 · 2647 阅读 · 1 评论 -
Windows上单点ZooKeeper部署(开发用)
只需要在conf目录下新建一个 zoo.cfg即可。内容如下:#initLimit=10#syncLimit=5tickTime=2000dataDir=E:/zookeeper/zookeeper-3.4.5/dataclientPort=2181原创 2014-04-22 20:57:26 · 858 阅读 · 0 评论 -
HessianRuntimeException: java.io.FileNotFoundException
Exception in thread "main" com.caucho.hessian.client.HessianRuntimeException: java.io.FileNotFoundException: http://localhost:8087/HessianDSF/HelloServiceat com.caucho.hessian.client.HessianProxy.in原创 2014-04-13 23:18:18 · 4402 阅读 · 0 评论 -
ZooKeeper客户端地址列表的随机原理
查看PDF版本 转自:@ni掌柜nileader@gmail.com http://nileader.blog.51cto.com/1381108/932948在之前一个文章《ZooKeeper Java API 使用样例》中提到,客户端使用ZooKeeper的时候,首先会建立与ZooKeeper的连接,方法是通过调用下面这个构造方法来实现的。public ZooKeeper(St转载 2015-01-13 22:00:44 · 1486 阅读 · 0 评论 -
Zookeeper源码编译为Eclipse工程(win7下Ant编译)
1、什么是Ant???Apache Ant™Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each othe原创 2014-11-16 22:08:34 · 4641 阅读 · 0 评论 -
Curator源码解析(五)连接和重试机制分析
转载请注明出处: jiq•钦's technical Blog本文将主要关注Curator是如何处理连接丢失和会话终止这两个关键问题的。1. 连接丢失的处理Curator中利用类ConnectionState来管理客户端到ZooKeeper集群的连接状态,其中用到原子布尔型变量来标识当前连接是否已经建立:private finalAtomicBoolean isCo原创 2015-01-10 23:36:48 · 6151 阅读 · 1 评论 -
服务化基础设施
bei服务化,也可以叫SOA,但在我们还是尽量避免用这个词, 因为它被炒得太热,一味的套SOA的概念,容易迷失原有的方向。 要向服务化推进,当然就需要搭建一些基础设施,来协助这个过程的实现, 那都有哪个方面的工作要做呢,这里把我暂时想到的列一列。 1. 服务的定义 服务提供者要怎么暴露一个服务?服务消费者要怎么引用一个服务? 肯定需要一个声明式服务定义框架,转载 2014-10-08 22:26:07 · 1223 阅读 · 0 评论 -
Etcd学习(二)集群搭建Clustering
1、单个etcd节点(测试开发用)之前我一直开发测试一直是用的一个Etcd节点,然后启动命令一直都是直接打一个etcd(我已经将etcd安装目录的bin目录加入到PATH环境变量中),然后启动信息显示etcd server监听在默认的4001端口,peer server监听在默认的7001端口。2、三个Etcd节点组成Clustering然后今天想测试一下集群功能,就按照gut原创 2014-08-26 23:07:06 · 9467 阅读 · 0 评论