`
javatracker
  • 浏览: 25302 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

互联网网站架构升级----分布式环境的构建

阅读更多

     随着网络流量爆发式增长,几百人维护一个项目将是一个可怕的噩梦,业务拆分势在必行。拆分的业务形成一个个独立的系统,系统间的协调又变成了一个棘手的问题,所以维护这些系统间协调关系的分布式环境组件将发挥至关重要的作用。

 

  由于拆分后的系统部署于不同机器的不同集群之中,系统间的协作要靠通信来解决,所以分布式环境组件必须解决数据流的问题。根据不同的场景,数据流又分构建于远程调用框架(如RMI、Hessian、ICE、JNDI实现等)之上的即时调用数据流,构建于消息中间件之上的异步消息(持久或非持久)数据流,构建于数据拆分组件(分库分表、读写分离等)之上的存储数据流,构建于集群系统控制(集群动态、配置推送,如PubSubHubBub)的集群协调数据流,以及构建于监控系统之上的日志及控制数据流。在这些数据流的传输过程中需要有负载均衡和容错的支持,这些数据流总的来说又分为业务数据流和控制数据流,业务数据流传输业务数据,控制数据流可以将一个个小的集群系统连接成一个大的集群系统,并使这个集群系统的运行状态直观的展示于眼前,同时还可以向这个集群系统发送控制指令直接干预它。

 

 数据流向图

 

 

 分布式环境总览

 

通信服务框架提供系统间即时的同步和异步调用,需要具备负载均衡和容错的机制,解决的是一个业务集群调用另一个业务集群的问题,根据不同的集群方案,业务集群内部各台机器内部的状态又分为可共享和不可共享两种,一般不建议集群内部直接通过通信来共享内部状态,最好通过集中式缓存或DB来共享状态。

 

消息中间件提供异步的持久和非持久消息的发布和订阅,持久消息理论上应当具备绝对的可靠性。此系统解决的是将网站业务流程中非核心的业务流程剥离出来,使用异步消息的形式将业务解耦,提高主业务流程的响应速度,同时解决的另一个问题是通过可靠的存储和传输,保证多个业务系统数据的最终一致。

 

分布式数据层提供分库分表、读写分离、Sql监控以及容灾容错的功能。这个组件不仅仅可以解决数据的拆分、读写分离问题,还可以解决数据的多写,多个Slave读取的负载均衡及容错,多机房的容灾,数据库异常的告警等多种功能,如果单独部署服务的话还可以控制数据库连接数。

 

中转枢纽提供服务的发布和调用关系以及消息的发布和订阅关系,连接通信服务框架和消息中间件的各个客户端和服务端,感知一个个业务集群中的每台机器及服务,组成一个大的集群,协调这个大集群中服务的对应关系。如果这个枢纽对业务开放的话还可以推送业务配置信息。

 

监控中心提供对前面四个组件各种数据的收集和分析,实时展示整个大集群各个集群和服务目前的运行状况和相互间的协调关系,并进行各种横向和纵向的对比为决策提供依据,并可以向集群内的机器或服务发出控制指令,直接干预集群间的协调关系。如果对业务开放的话还可以监控业务数据和进行业务控制干预。

 

先写这么多了,后续将会写业务和数据拆分方面的,以及通信框架、消息中间件、分布式数据层、中转枢纽和监控中心的具体实现。

分享到:
评论
53 楼 donglee 2011-02-21  
lirig 写道
楼主应该我们应该是同学,rpc原理比较深入。


光哥,曾经的同学哦,
这一套模式,缺点是很多的,有机会咱们多沟通~~:)
52 楼 lirig 2011-01-11  
楼主应该我们应该是同学,rpc原理比较深入。
51 楼 myreligion 2010-10-21  
“分布式数据层”这一块可以考虑下guzz,基本上都能满足你的需求。

“通信服务框架”期待开源,参考一下,呵呵。我们也在做,现在只用mina实现了一个tcp的通信框架,然后所有的Service基于此进行通信。
50 楼 xindeman 2010-10-21  
如何解决单点故障问题?
49 楼 javatracker 2010-10-14  
这几天比较忙,在做压力测试。后面考虑在xsocket上面再实现一套通信框架来开源。

框架的介绍在上一篇博客中 http://javatracker.iteye.com/blog/767285
被人投了隐藏!!!

支持四种序列化:hessian、jdk、protobuf、thrift
支持四种调用方式:同步、回调异步、future异步、oneway异步;
支持客户端负载均衡和容错;
配合后面的服务中心组成一个大集群;
使用简单,只需几行Spring配置;
后续在pb和thrift的支持下支持多语言;
配合后面的消息中间件支持持久异步,远程服务service只要加入一行配置将同时被发布为远程调用和异步消息服务;

自己后面实现的开源的还准备支持http协议,就是服务端发布的时候就自动支持http和tcp,客户端选择什么协议只要配置一下就可以了
48 楼 aabcc 2010-10-13  
LZ请一定持续更新本帖,我每天都来啊,跟你们混了
47 楼 booboofd 2010-10-13  
请问楼主,你们所要开发的分布式调用框架主要有哪些功能,与已有的开源框架有哪些不同?
46 楼 javatracker 2010-10-05  
niveko 写道
请问下楼主,对于你们的这个解决方案我有几个问题
1. 自动化部署你们是打算怎么去做呢?
2. 单机部署应用的容量的监控怎么实现的?
3. 像分布式调用框架是你们自己做的吗?
4. 分布式数据层的数据库切换你们是怎么实现的?
5. 容器是用的开源的还是你们自己实现的?


1、自动化部署是后期目标,无非是通过OSGI以及容器化来解决;
2、单机容量监控不知道这个容量指的是那些方面,load?连接数?吞吐量?还是综合指标?前期不会做太多监控,只做系统调用的监控;
3、分布式调用框架自己做;
4、这里还没上线,只是有了个原型,第一阶段通过配置,第二阶段通过自动切换读库,手动切换写库;
5、容器目前用开源的,后面可能修改开源;

这是个长期的过程,很多东西只是个原型和初步的规划。
45 楼 niveko 2010-10-04  
请问下楼主,对于你们的这个解决方案我有几个问题
1. 自动化部署你们是打算怎么去做呢?
2. 单机部署应用的容量的监控怎么实现的?
3. 像分布式调用框架是你们自己做的吗?
4. 分布式数据层的数据库切换你们是怎么实现的?
5. 容器是用的开源的还是你们自己实现的?
44 楼 Βobby 2010-10-02  
javatracker 写道
jinyanhui2008 写道
以前曾经做过楼主这样的类似规划,但是计划未能实施比较遗憾,不过看了楼主的方案也有茅塞顿开的感觉。
以前竟然没有考虑集群服务器的之间通信的问题。
然后数据库层面我在想是不是要提供统一数据接口,对底层数据进行统一管理。
我饥饿udeni的这种架构是不是比较适合saas服务啊?
有机会真想试试这种集群化大型系统。


呵呵,我这里也是参考了别人的



直觉告诉我,楼主肯定是做电子商务的,应该是各大B2C网站如京东、凡客什么的
43 楼 javatracker 2010-09-30  
jinyanhui2008 写道
以前曾经做过楼主这样的类似规划,但是计划未能实施比较遗憾,不过看了楼主的方案也有茅塞顿开的感觉。
以前竟然没有考虑集群服务器的之间通信的问题。
然后数据库层面我在想是不是要提供统一数据接口,对底层数据进行统一管理。
我饥饿udeni的这种架构是不是比较适合saas服务啊?
有机会真想试试这种集群化大型系统。


呵呵,我这里也是参考了别人的
42 楼 javatracker 2010-09-30  
srdrm 写道
hessian 会有问题吗?我们一直用着,还没发现问题


这个看你做什么,你没感觉到有问题就没问题,如果仅仅是通信一下没啥问题。
41 楼 jinyanhui2008 2010-09-30  
以前曾经做过楼主这样的类似规划,但是计划未能实施比较遗憾,不过看了楼主的方案也有茅塞顿开的感觉。
以前竟然没有考虑集群服务器的之间通信的问题。
然后数据库层面我在想是不是要提供统一数据接口,对底层数据进行统一管理。
我饥饿udeni的这种架构是不是比较适合saas服务啊?
有机会真想试试这种集群化大型系统。
40 楼 srdrm 2010-09-30  
hessian 会有问题吗?我们一直用着,还没发现问题
39 楼 PowerNTT 2010-09-30  
搂住考虑的好远啊;

同时贵公司能有这样的基础及需求来构建;羡慕。。。
38 楼 mercyblitz 2010-09-30  
javatracker 写道
mercyblitz 写道
javatracker 写道
J-catTeam 写道
javatracker 写道
J-catTeam 写道
javatracker 写道
dennis_zane 写道
楼主这一套东西,基本上是把淘宝内部的架构搬过去了,做大了面临的问题一样。不知道楼主现在在什么公司?



呵呵 是的,好的架构就是要推广嘛,淘宝当初也是很大程度上参考了ebay的架构。公司名就不说了,公司在快速膨胀,架构需要升级。公司短期内肯定达不到淘宝的流量,淘宝目前的问题一段时期内不会遇到,但不同的公司有不同的业务,基础框架就是为业务服务的,会根据业务和发展方向做出调整。

贵公司具体的应用情况是怎么样的呢?
系统的规模,机器的数量。pv,目前的瓶颈什么的。
就拿分布式数据层来说,应用场景是很有限的。


具体细节就不说了,牵涉到具体公司就不好了,分布式数据层这块看业务,不是一下子就把所有功能都用上的,比如刚开始可能分库分表的业务需求并不强烈,但读写分离需求还是比较明显的,那就先上这一块的,再后面多机房容灾也是需要做的,所以功能并不是一下就全部上去,主要根据业务,这个是一个长期的过程。

业务对数据一致性怎么要求的呢?


和交易和钱相关的肯定要强一致性的,其他的主要看具体业务,如果业务方可以容忍数据的短暂不一致性,那么就可以用异步来解偶。



呵呵,开始猜想就认为,确保最终一致性。不过怎么做流水线操作(也就是一些列的操作?)?


肯定不建议进行很长一串的操作,连调两层三层算多了,如果再多看业务能否接受,如果业务不能接受就修改业务流程,或者直接调后面那层


呵呵,那就是策诺性的咯,这种流水线操作还是有场景的,不过可以对应处理。
37 楼 javatracker 2010-09-30  
mercyblitz 写道
javatracker 写道
J-catTeam 写道
javatracker 写道
J-catTeam 写道
javatracker 写道
dennis_zane 写道
楼主这一套东西,基本上是把淘宝内部的架构搬过去了,做大了面临的问题一样。不知道楼主现在在什么公司?



呵呵 是的,好的架构就是要推广嘛,淘宝当初也是很大程度上参考了ebay的架构。公司名就不说了,公司在快速膨胀,架构需要升级。公司短期内肯定达不到淘宝的流量,淘宝目前的问题一段时期内不会遇到,但不同的公司有不同的业务,基础框架就是为业务服务的,会根据业务和发展方向做出调整。

贵公司具体的应用情况是怎么样的呢?
系统的规模,机器的数量。pv,目前的瓶颈什么的。
就拿分布式数据层来说,应用场景是很有限的。


具体细节就不说了,牵涉到具体公司就不好了,分布式数据层这块看业务,不是一下子就把所有功能都用上的,比如刚开始可能分库分表的业务需求并不强烈,但读写分离需求还是比较明显的,那就先上这一块的,再后面多机房容灾也是需要做的,所以功能并不是一下就全部上去,主要根据业务,这个是一个长期的过程。

业务对数据一致性怎么要求的呢?


和交易和钱相关的肯定要强一致性的,其他的主要看具体业务,如果业务方可以容忍数据的短暂不一致性,那么就可以用异步来解偶。



呵呵,开始猜想就认为,确保最终一致性。不过怎么做流水线操作(也就是一些列的操作?)?


肯定不建议进行很长一串的操作,连调两层三层算多了,如果再多看业务能否接受,如果业务不能接受就修改业务流程,或者直接调后面那层
36 楼 mercyblitz 2010-09-30  
javatracker 写道
J-catTeam 写道
javatracker 写道
J-catTeam 写道
javatracker 写道
dennis_zane 写道
楼主这一套东西,基本上是把淘宝内部的架构搬过去了,做大了面临的问题一样。不知道楼主现在在什么公司?



呵呵 是的,好的架构就是要推广嘛,淘宝当初也是很大程度上参考了ebay的架构。公司名就不说了,公司在快速膨胀,架构需要升级。公司短期内肯定达不到淘宝的流量,淘宝目前的问题一段时期内不会遇到,但不同的公司有不同的业务,基础框架就是为业务服务的,会根据业务和发展方向做出调整。

贵公司具体的应用情况是怎么样的呢?
系统的规模,机器的数量。pv,目前的瓶颈什么的。
就拿分布式数据层来说,应用场景是很有限的。


具体细节就不说了,牵涉到具体公司就不好了,分布式数据层这块看业务,不是一下子就把所有功能都用上的,比如刚开始可能分库分表的业务需求并不强烈,但读写分离需求还是比较明显的,那就先上这一块的,再后面多机房容灾也是需要做的,所以功能并不是一下就全部上去,主要根据业务,这个是一个长期的过程。

业务对数据一致性怎么要求的呢?


和交易和钱相关的肯定要强一致性的,其他的主要看具体业务,如果业务方可以容忍数据的短暂不一致性,那么就可以用异步来解偶。



呵呵,开始猜想就认为,确保最终一致性。不过怎么做流水线操作(也就是一些列的操作?)?
35 楼 weiyufeng 2010-09-30  
J-catTeam 写道
weiyufeng 写道
javatracker 写道
weiyufeng 写道
楼主考虑过使用corba中间件来实现吗


corba 那是很多年前的事了


Corba主要有哪些弊端呢  Hessian是更加轻量级还是?

Hessian在使用过程中出现过很奇怪的问题,比如传输字节减少什么的。
所以有些公司就自己开发了远程调用框架


对比ICE,Hessian的效率应该不怎么样吧
34 楼 J-catTeam 2010-09-30  
weiyufeng 写道
javatracker 写道
weiyufeng 写道
楼主考虑过使用corba中间件来实现吗


corba 那是很多年前的事了


Corba主要有哪些弊端呢  Hessian是更加轻量级还是?

Hessian在使用过程中出现过很奇怪的问题,比如传输字节减少什么的。
所以有些公司就自己开发了远程调用框架

相关推荐

    Java-ssm-基于互联网分布式架构.zip

    Java SSM(Spring、SpringMVC、MyBatis)框架是Java开发中常见的企业级应用架构,主要用于构建大型、高性能的互联网分布式系统。这个压缩包文件"Java-ssm-基于互联网分布式架构.zip"很可能包含了关于如何使用SSM框架...

    商业银行分布式业务核心系统架构研究.pdf

    这包括了分布式架构设计、系统开发、测试验证、部署实施、监控运维等全周期的建设流程,确保在持续演进的过程中,能够快速构建新服务组件,并对关键、成熟业务进行无缝迁移与升级,同时保持业务连续性和数据一致性。...

    阿里金融云对银行分布式架构转型的探索与实践.pdf

    传统的IT架构是基于确定性流程的自动化,而互联网架构则注重于快速响应市场变化和不确定性。在新型架构下,以核心能力服务化和数据为中心,金融企业能够更好地实现创新并快速应对市场变化。 大数据在未来金融行业的...

    基于Dubbo框架的分布式视频网站架构设计.pdf

    通过视频网站案例的实验结果表明,使用Dubbo框架构建的分布式视频网站架构具有更优的性能与扩展性。具体来说,这种架构可以在多个服务器节点之间实现负载均衡,避免了单点故障和性能瓶颈的问题,提高了网站的稳定性...

    论文研究-全分布式P2P-CDN系统架构的实验研究 .pdf

    综上所述,全分布式P2P-CDN系统架构的实验研究涉及了互联网、P2P、CDN、全分布式等多个技术领域。通过对这些技术的融合与创新,P2P-CDN系统有望成为下一代互联网媒体服务的关键技术,特别是在大规模、高动态的IPTV...

    分布式架构实践与案例分析-课件-v2.pdf

    微服务架构能够支持敏捷开发、快速验证和持续交付,因此在需求频繁变更的互联网环境中表现优异。然而,微服务架构也有其缺点,例如需要更高级别的运维支持、服务间通信可能导致网络延迟和容错问题、分布式事务的处理...

    大型网站技术架构核心-原理与案例分析.mobi.epub多格式打包资源

    《大型网站技术架构核心-原理与案例分析》这本书深入探讨了构建和优化大型网站所需的关键技术架构知识。作为一本涵盖多种格式(.mobi和.epub)的资源,它为读者提供了灵活的阅读选择,无论是在移动设备还是电子阅读...

    java毕业设计&课设-分布式互联网商城(视频+源码).doc

    本项目旨在通过实践开发一款分布式互联网商城系统,不仅能够满足当前市场的需求,还能为后续系统的升级和扩展提供便利。 #### 1.2 项目意义 - **提高用户体验**:通过优化前端页面设计和后台数据处理流程,确保...

    数据中心分布式架构转型思考1

    总结来说,数据中心分布式架构的转型是银行业应对新时代挑战的重要举措,它需要银行IT部门从理念到实践全面升级,以更开放、更灵活的架构支持金融业务的创新和发展。这一过程既充满了机遇,也伴随着挑战,但只有通过...

    分布式架构.docx

    总结起来,Jeesz是一个全面的分布式Java EE开发平台,结合了众多成熟的技术和最佳实践,旨在为互联网企业提供高效、安全、可扩展的解决方案。其模块化设计、服务化架构以及强大的功能组件,使其成为构建大型企业级...

    大规模分布式环境下的企业架构治理.docx

    传统单一的应用架构难以满足这些需求,因此企业转向构建多应用、多系统、多环境、多主机、多机房的分布式架构。然而,这种架构的复杂性也显著增加,这就要求企业必须在架构治理上下足功夫。 以苏宁易购为例,随着...

    基于“互联网 ”的分布式能源智慧云平台构建研究 (2).pdf

    本研究论文详细探讨了在信息化变革时代背景下,如何借助“互联网+”技术构建基于分布式能源的智慧云平台,并分析了该平台的总体方案设计、架构、部署方案、能源数据管理及系统特点等多个方面。以下是对文档中提及...

    鲁班分布式电商项目-luban-mall-cluster.zip

    《鲁班分布式电商项目——构建高可用的在线购物平台》 在现代互联网行业中,电商平台的稳定性和可扩展性是至关重要的。"鲁班分布式电商项目-luban-mall-cluster"便是一个旨在解决这些问题的解决方案,它通过分布式...

    基于WCF和Web架构构建分布式前兆数据分析处理系统.pdf

    这篇文章探讨了如何基于WCF和Web架构构建一个分布式前兆数据分析处理系统。该系统的实现技术途径能够为在线前兆数据分析处理提供功能,并且已经构建了一个原型实验程序SODEws。系统应用模式主要分为两种:客户端/...

    基于Spring Cloud架构的“分布式微服务”课程开发研究.pdf

    分布式微服务架构主要指的是将复杂的单体应用拆分成一系列小的服务,这些服务能够独立部署、扩展和升级,每个服务由一个小型团队负责。分布式微服务课程的开发研究,其目的在于培养计算机网络技术专业的学生具备Java...

    \"鹰眼下的淘宝-分布式调用跟踪系统介绍\"分享总结

    对于从事分布式系统开发的工程师来说,了解和掌握这样的工具至关重要,它能提升我们的故障排查效率,保障系统的稳定运行,同时也有助于推动微服务架构的优化和升级。通过阅读和学习,我们可以借鉴淘宝的经验,将这些...

    集中式与分布式相融合的银行核心系统架构转型策略分析.docx

    ### 集中式与分布式相融合的银行核心系统架构转型策略分析 #### 一、引言 随着《中国金融业信息技术发展规划》的指引,金融机构正在积极探索系统架构的优化升级,特别是数据中心“双活”或多活模式的应用。在此...

    毕业设计-分布式快递系统-门户(代替了crm前台).zip

    在这个快递系统中,分布式设计可以提高系统的可扩展性、容错性和性能,确保在高并发环境下仍能稳定运行。 2. **微服务架构**:微服务是一种将大型应用拆分成一组小型、独立的服务,每个服务都负责特定业务功能的...

    分布式架构在银行系统的应用分析.docx

    在此背景下,分布式架构凭借其开放性、成本效益、扩展性和灵活性,逐渐成为银行系统架构升级的重要选择。 分布式架构的核心优势在于其能够通过将服务分散在不同的节点上来实现负载均衡,从而分散风险并提升系统的...

Global site tag (gtag.js) - Google Analytics