问题描述
本期的社区问答(5月19日—5月25日)我们请来了《大型网站系统与Java中间件实践》一书的作者曾宪杰(华黎)为大家解答关于大型网站和支撑大型网站架构的Java中间件、分布式系统方面的问题。曾宪杰,淘宝花名华黎,现任淘宝技术部总监。2002年毕业于浙江大学计算机系。2007年加入淘宝网平台架构团队,负责构建淘宝自主的消息中间件系统,同期主导了淘宝数据层的创建,这两个产品也是淘宝中间件中较为重要的两个。2010年下半年起开始负责整个淘宝中间件团队,帮助团队成为业内知名的Java技术团队。2012年开始从中间件走向应用系统的研发工作,2013年初负责新组建的淘宝技术部。熟悉C++和Java,在多线程、并发、网络通信及支撑大型网站的中间件领域有较多经验,对新技术有浓厚的兴趣。致力于带领团队在无线、数据、业务平台和组件化开发方面取得突破。曾宪杰专访:问答结束后,曾宪杰老师会在所有提问者中抽取三名用户,赠送《大型网站系统与Java中间件实践》一书。为了营造更好的问答氛围,我们不欢迎一切与主题无关的讨论、灌水和无脑喷子。下面欢迎大家踊跃提问,在本帖回复即可,参与活动并提出问题即可获得100可用分。本期获奖用户:moshanghuakaizpxu012268904yhjj0108请尽快私信hjkNet,告知您的邮寄地址、联系方式。
解决方案
本帖最后由 hjknet 于 2014-05-29 10:57:40 编辑
解决方案二:
曾老师好,欢迎来Java版指点;不太清楚中间件,可以通俗的理解为web的服务器吗?
解决方案三:
曾老师,如何实现负载均衡?
解决方案四:
解决方案五:
中间件什么意思。。。没理解是指的架构嘛
解决方案六:
曾老师好:对于工作中没有接触过大数据处理,高并发的项目。自己私下去学习,但是还是没有实际经验。像是纸上谈兵。请问,如何可以在这方面提示自己的水平?
解决方案七:
曾老师好:能否通俗易懂的解释一下中间件?
解决方案八:
曾老师好:能否介绍下中间件这边的流控是怎么设计的?
解决方案九:
曾老师,从前排留言看,还是有很多人不知道什么是中间件的啊。中间件到底是个什么技术,应用场景是什么?虽然做过一些跟着做过一些项目,但到底都没有用过、没有接触过中间件这个东西。作为新手,到底该从哪里着手,入门对中间件的学习和使用啊?谢谢。
解决方案十:
您好,老師,感覺很高深的知識點呢,特意google了一下:《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建Java中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的Java中间件系统的设计和实践。希望读者通过《大型网站系统与Java中间件实践》可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的Java中间件的实践经验。对于有一定网站开发、设计经验,并想了解大型网站架构和支撑这种架构的系统的开发、测试等的相关工程人员,《大型网站系统与Java中间件实践》有很大的参考意义;对于没有网站开发设计经验的人员,通过《大型网站系统与Java中间件实践》也能宏观了解大型网站的架构及相关问题的解决思路和方案。對這方面實在外行了,以爲大型网站系统就是一般發行版的Linux呢
解决方案十一:
该回复于2014-05-19 14:04:05被版主删除
解决方案十二:
曾老师,如何实现负载均衡和分流下载呢
解决方案十三:
项目中只用过的一种中间件,属于消息代理中间件,ActiveMQ,不知道小伙伴们有没有用过,可以一起探讨一下ActiveMQ的优缺点,哈
解决方案十四:
Java中间件是不是就是Servicemix这类产品,负责多平台或多服务间进行数据通信、事件广播等解耦作用的呢
解决方案十五:
很想知道平常用的中间件在大型网站上面有什么瓶颈、缺陷之类,还有中间件在分布式系统中要如何使用?
解决方案:
引用13楼zyb134506的回复:
Java中间件是不是就是Servicemix这类产品,负责多平台或多服务间进行数据通信、事件广播等解耦作用的呢
觉得应该基本这意思
解决方案:
正在阅读《大型网站系统与Java中间件实践》,当读到“解决应用服务器变成集群后的Session问题”,曾老师提出了几个解决办法,其中将“session数据集中存储”,我觉得是最适合目前我们公司的项目的,而具体实现上我想到的就是用Reids这类KV数据库或传统的关系数据库(mysql)来集中存储,不知道在曾老师的实践中,用的是那种技术来做这个,能指点下方向吗?
解决方案:
引用12楼baohuan_love的回复:
项目中只用过的一种中间件,属于消息代理中间件,ActiveMQ,不知道小伙伴们有没有用过,可以一起探讨一下ActiveMQ的优缺点,哈
我之前也用过,要说缺点吧,在循环发送大数据消息的压力测试下,ActiveMQ会因为频繁发送大数据消息而偶尔出现崩溃的情况。RabbitMQ在性能和稳定等方面比较不错。
解决方案:
曾老师好:书中有讲到一直让我思考的问题,虽然目前项目还没到这情况。问题是:在同一业务数据水平分库后,一些查询需要从两个数据库中取数据,如果数据量大需要分页,比较难处理。真的存在这问题时,怎样较好解决
解决方案:
什么样的系统需要使用中间件呢?
解决方案:
JAVA中间件Oracle或其他公司有很多了,也很不错,我们还需要自己设计开发中间件么?
解决方案:
现在公司的项目正需要由集中方式重构为可水平扩展的,书中提到过的例如服务框架,数据访问层,消息中间件等都是正需要,但团队没资源去实现这些基础功能,其实也没必要去重复开发轮子,有那些行业领先的解决方案可以提供参考?比如消息中间件,了解到RabbitMQ好像不错。
解决方案:
请问,你工作时间也不算太长,你是如何成长为对这么我领域都精通,在淘宝hold住的?
解决方案:
曾老师好,我是网新恒天这边的员工,我现在从事ESB方面的工作.问题1:ESB也算是大型网站中的中间件吧,做ESB有前途么,大公司使用这项技术么?问题2:.感觉一直做中间件会不会很无聊,怎样会有意思一点.问题3:中间件中对并发访问有什么帮助么?
解决方案:
在华为听过你的淘宝架构的讲座,我想请问在java这一块怎么把技术提升到你那样的高度??需要从哪些方面学习,请指点,谢谢!
解决方案:
想请问下中间件和前台有关吗?比如ajax什么的???
解决方案:
对于大型网站而言,最重要的是不是就是中间件的选择呢
解决方案:
引用1楼u012724379的回复:
曾老师好,欢迎来Java版指点;不太清楚中间件,可以通俗的理解为web的服务器吗?
中间件的范畴确实比较广,在这里谈到的主要是支撑大型网站架构的一些基础的组件和服务,因为这些组件/服务介于应用与应用,以及应用与底层数据库之间,所以称为中间件了。
解决方案:
书看完了第一遍,有以下疑问:1.第四章中提到ESB与服务框架的区别,我们现在的系统基于SOA搭建,将相对独立的功能(比如监控模块、云计算资源管理层)做成SOA模块。选择ESB还是服务框架,该如何选型。2.客户端通过路由进行调用,集群的负载均衡是会自己实现调度代码,还是基于LVS、HAProxy等软件来实现。3.实际项目中消息中间件的实现是基于JMS的软件(比如ActiveMQ)的扩展,还是完全自己实现逻辑。4.书中的每章是否对应有阿里开源软件。数据访问层篇是否与TDDL有内容对应,还有消息中间件篇与Notify。想结合实际代码看书中内容。5.书中第174页提到分库分表后要避免排序后分页,但没有提及如何避免。
解决方案:
引用2楼DBA_Huangzj的回复:
曾老师,如何实现负载均衡?
这个部分其实有很多的讨论和介绍。完全随机、轮询、根据连接数以及根据权重都是比较常见的做法,我们默认的实现是比较简单的随机。
解决方案:
引用4楼u012373523的回复:
中间件什么意思。。。没理解是指的架构嘛
中间件的范畴确实比较广,在这里谈到的主要是支撑大型网站架构的一些基础的组件和服务,因为这些组件/服务介于应用与应用,以及应用与底层数据库之间,所以称为中间件了。
解决方案:
引用5楼u011278496的回复:
曾老师好:对于工作中没有接触过大数据处理,高并发的项目。自己私下去学习,但是还是没有实际经验。像是纸上谈兵。请问,如何可以在这方面提示自己的水平?
这个确实是个很现实的问题,我个人的建议,多去了解些业内关于具体问题的分享,另外有些基础理论的知识也需要看看,不过我觉得最重要的还是要努力去到有这样场景的团队,只有自己去实际面对这些问题并且去处理,才会得到更大提高。
解决方案:
接分,常用的中间件有哪些啊,都有些什么用,直接出了一点tibco
解决方案:
中间件,类似轻量级Server
解决方案:
在淘宝那么多用户并发访问的情况下,中间件主要承载了哪些功用?
解决方案:
曾老师!问一下怎么处理并发大数据、数据分流、分布式处理、数据迁移等系列问题?
解决方案:
解决方案:
接分,中间件,类似轻量级Server
解决方案:
马克以后再看
解决方案:
曾老师你好,J2EE提供了一整套的企业级开发的解决方案,通过SSH能够从数据持久化、业务逻辑处理、Spring管理实体Bean和SessionBean,从底层到前端提供了完善的机制,为什么还需要中间件呢,中间件和Spring又是什么关系呢?
解决方案:
中间键是不是就是应用了java的AOP思想?
解决方案:
大牛啊像淘宝这么大的数据量请问数据安全方面怎么保证的?
解决方案:
曾总,结婚了没有啊,
解决方案:
我在做消息推送时,借用了ActiveMQ,利用JMS这个架构还是挺成熟的!
解决方案:
在Web开发时,大家熟悉SSH,然而在具体的项目实践中涉及到具体模块时必然需具体分析具体对待,引入java中间件是一个好方法。上面我写到自己在写消息推送模块时用到了ActiveMQ,其实在用的过程中,有个疑问,对于消息队列,是什么机制保证队列可以接受数量级的消息呢,是垃圾回收还是什么机制吗?作为一名学生,同时作为一名程序猿,我在努力探索中。对于JAVA这块,我还在摸索中,也希望得到曾老师的指导哈!
解决方案:
曾老师,我是来领书的,请送我一本,谢谢
解决方案:
1.这里的大型网站,推荐的编程语言是什么?(JSP,PHP,PYTHON......)如何进行桥接?2.数据库选哪一种?(mysql,nosql......)3.此外,如果是云服务器的话,如何合理配置APC,数据库,java文件?(内存分配)4.上面许多楼提到的负载均衡问题。谢谢。
解决方案:
引用7楼lvsrp2009的回复:
曾老师好:能否介绍下中间件这边的流控是怎么设计的?
流控主要几个点:1流控本身的配置管理,这个我们是集中管理的,就是在我们的配置管理中心2流控启用的地方,对于没有中心的方式,我们在调用和服务端都会提供这个功能,而有中心的方式,则中心上也会做控制3在我们的中间件实践中,对于降级都做了比较多的考虑,您可以具体参考下书中相关部分的内容。
解决方案:
引用8楼tang19880721的回复:
曾老师,从前排留言看,还是有很多人不知道什么是中间件的啊。中间件到底是个什么技术,应用场景是什么?虽然做过一些跟着做过一些项目,但到底都没有用过、没有接触过中间件这个东西。作为新手,到底该从哪里着手,入门对中间件的学习和使用啊?谢谢。
其实中间件的范畴非常的广,我书中的中间件主要讲的是支撑我们自己网站架构的一些组件和服务,从我个人的感觉,我这这本书在介绍中间件的部分还是比较平实的,不知道您是否看过本书相关部分?我个人感觉是比较容易理解的,然后一些相关基础的知识,比如Java并发编程等,有其他的书籍和资料介绍。此外,您可以关注下包括淘宝等多家公司的一些技术人员的分享和博客。
解决方案:
引用9楼Rocloud的回复:
您好,老師,感覺很高深的知識點呢,特意google了一下:《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建Java中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的Java中间件系统的设计和实践.......對這方面實在外行了,以爲大型网站系统就是一般發行版的Linux呢
呵呵,Linux这个只是解决了大型系统的单节点的OS的选型,还有很多其他的部分。欢迎交流。