集群
集群相关原理、技术的文章
超人汪小建(seaboat)
公众号:【远洋号】,笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢编程、绘画、看书、写作和运动,擅长素描、篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。
展开
-
tomcat集群实现源码级别剖析
随着互联网快速发展,各种各样供外部访问的系统越来越多且访问量越来越大,以前Web容器可以包揽接收-逻辑处理-响应整个请求生命周期的工作,现在为了构建让更多用户访问更强大的系统,人们通过不断地业务解耦、架构解耦将web容器的逻辑处理抽离交由其他中间件处理,例如缓存中间件、消息队列中间件、数据存储中间件等等。Web容器负责的工作可能越来越少,但是它确实必不可少的部分,它负责接收用户请求并分别调用各个服原创 2016-02-25 09:07:46 · 4735 阅读 · 2 评论 -
分布式内存网格Hazelcast源码导读
Node是节点的抽象,里面包含节点引擎、客户端引擎、分区服务、集群服务、组播服务、连接管理、命令管理、组播属性、节点配置、本地成员、tcp地址、组播地址、连接者、节点初始化器、管理中心、安全上下文、Config类,包含GroupConfig、NetworkConfig、MapConfig、TopicConfig、QueueConfig、MultiMapConfig、ListConfig、SetCo原创 2016-06-01 08:09:34 · 14188 阅读 · 1 评论 -
tomcat集群机制剖析及其生产部署选型
为什么要使用集群?为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群;另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升。集群难点在哪?如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各原创 2016-01-31 19:57:36 · 11612 阅读 · 13 评论 -
集群RPC通信
RPC即远程过程调用,它的提出旨在消除通信细节、屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络、硬件、系统的异构复杂环境。先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用,①先将待传递的数据放到NIO集群通信框架(这里使用的是tribes框架)中;②由于使用的是NIO模式,线程无需阻塞直接返回;③由于与集群其他原创 2015-11-20 13:39:20 · 6687 阅读 · 1 评论 -
从单机到集群会话的管理之集群模式二(更大的集群)
《从单机到集群会话的管理之集群模式一》中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群。下面看看这种方式具体的工作机制,集群原创 2015-11-05 08:41:08 · 4164 阅读 · 0 评论 -
从单机到集群会话的管理之集群模式一
为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群;另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升。如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各个节点无需互相通信,只需要将各个原创 2015-10-30 11:17:08 · 3928 阅读 · 2 评论 -
从单机到集群会话的管理之单机模式
单机时代对会话的管理主要有两种方式——非持久化方式和持久化方式。非持久化方式指会话直接由tomcat管理并保存在机器内存上,它是最简单的方式,如下图,所有的会话集合都保存在内存上,客户端访问时根据自己的会话id直接在服务器内存中寻找,查找简单且速度快,但同时也存在两个缺点:一是容量比较小,当数据量大时容易导致内存不足;一是机器意外停止会导致会话数据丢失缺点。为了解决上面非持久化方式存在的缺陷,我们原创 2015-10-25 12:30:22 · 2695 阅读 · 0 评论 -
内存数据网格hazelcast的一些机制原理
hazelcast使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一下。原创 2015-08-03 16:53:51 · 6189 阅读 · 1 评论 -
集群通信组件tribes之使用方法
上面已经对tribes的内部实现机制及原理进行了深入的剖析,在理解它的设计原理后看看如何使用tribes,整个使用相当简单便捷,只需要四步:① 定义一个消息对象,由于这个消息对象是要在网络之间传递的,网络传输涉及到序列化,所以需要实现Serializable接口。public class MyMessage implements Serializable { private String mess原创 2015-08-15 18:25:27 · 3038 阅读 · 2 评论 -
集群通信组件tribes之应用程序处理入口
Tribes为了更清晰更好地划分职责,它被设计成用IO层和应用层,IO层专心负责网络传输方面的逻辑处理,把接收到的数据往应用层传送,当然应用层发送的数据也是通过此IO层发送,数据传往应用层后必须要留一些处理入口供应用层进行逻辑处理,而考虑系统解耦,这个入口最好的方式是使用监听器模式,在底层发生各种事件时触发所有安装好的监听器,使之执行监听器里面的处理逻辑。这些事件主要包含了集群成员的加入和退出、消原创 2015-08-09 15:05:38 · 2799 阅读 · 2 评论 -
集群通信组件tribes之通道拦截器
拦截器应该可以说是一个很经典的设计模式,它有点类似于过滤器,当某信息从一个地方流向目的地的过程中,可能需要统一对信息进行处理,如果考虑到系统的可扩展性和灵活性通常就会使用拦截器模式,它就像一个个关卡被设置在信息流动的通道中,并且可以按照实际需要添加和减少关卡。Tribes为了在应用层提供对源消息统一处理的渠道引入通道拦截器,用户在应用层只需要根据自己需要添加拦截器即可,例如,压缩解压拦截器、消息输原创 2015-08-01 17:26:30 · 2693 阅读 · 1 评论 -
集群通信组件tribes之集群的消息接收通道
与消息发送通道对应,发送的消息需要一个接收端接收消息,它就是ChannelReceiver。接收端负责接收处理其他节点从消息发送通道发送过来的消息,实际情况如图每个节点都有一个ChannelSender和ChannelReceiver,ChannelSender向其他节点的ChannelReceiver发送消息。本质是每个节点暴露一个端口作为服务端监听客户端,而每个节点又充当客户端连接其他节点的服原创 2015-07-25 20:34:55 · 2911 阅读 · 1 评论 -
集群通信组件tribes之集群的平行通信
前面的集群成员维护服务为我们提供了集群内所有成员的地址端口等信息,可以通过MembershipService可以轻易从节点本地的成员列表获取集群所有的成员信息,有了这些成员信息后就可以使用可靠的TCP/IP协议进行通信了。这节讨论的正是实际中真正用于消息传送通道的相关机制及实现细节。如下图,四个节点本地都拥有了一张集群成员的信息列表,这时节点1有这么一个需求:为了保证数据的安全可靠,在往自己的内存原创 2015-07-18 21:07:23 · 3027 阅读 · 1 评论 -
集群通信组件Tribes之如何维护集群成员信息
一个集群包含若干成员,要对这些成员进行管理就必须要有一张包含所有成员的列表,当要对某个节点做操作时通过这个列表可以准确找到该节点的地址进而对该节点发送操作消息。如何维护这张包含所有成员的列表是本节要讨论的主题。成员维护是集群的基础功能,一般划分一个独立模块或层完成此功能,它提供成员列表查询、成员维护、成员列表改变事件通知等能力。由于tribes定位于基于同等节点之间的通信,所以并不存在主节点选举的原创 2015-07-12 14:10:51 · 2743 阅读 · 1 评论 -
java组播MulticastSocket
在单播模式中有服务器端和客户端之分,而组播模式与单播模式不同,每个端都是以路由器或交换机做为中转广播站,任意一端向路由器或交换机发送消息,路由或交换机负责发送其他节点,每个节点都是同等的。所以在编程模式上用同一个类表示即可——MulticastSocket。 MulticastSocket属于jdk提供的类,类路径为java.net.MulticastSocket,利用此类可以很方便地实现组原创 2015-05-31 21:43:37 · 6584 阅读 · 3 评论 -
集群通信组件Tribes之整体介绍
接下来一系列文章会对集群通信框架tribes进行源码级别的分析,欢迎讨论。把若干机器组合成一个集群,集群为了能协同工作,成员之间的通信是必不可少的,当然可以说这也是集群实现中重点需要解决的核心问题,一个强大的通信协同机制是集群的基础。简约地说,Tribes是一个具备让你通过网络向组成员发送和接收信息、动态检测发现其他节点的组通信能力的高扩展性的独立的消息框架。在组成员之间进行信息复制及成员维护是一原创 2015-07-04 15:35:11 · 3577 阅读 · 1 评论 -
集群
集群现在如果要构造一个真正在生产环境上可使用的可靠的系统,基本都离不开集群的概念,总的来说集群是指由若干互相独立的机器通过高速网络组成的一个整体服务,整个集群的内部实现相对外部是透明的,对外部而言它就像一个独立的服务器。要使若干机器协同工作不是一件简单的事,其核心是如何在多机器之间进行通信及各种任务调度使之协同工作。在工程上常见的两种集群是——负载均衡集群和高可用集群。负载均衡集群(Load原创 2015-06-27 18:35:19 · 2565 阅读 · 1 评论