《大型网站系统与Java中间件实现》有感
头一次只用了一周的时间就看完一本书《大型网站系统与Java中间件实现》,这本书是关于设计方面的,提到了服务框架,消息中间件,数据访问层,以及如何解决应用之间的调用,解耦,以及应用和存储之间的访问问题。作者用了很简单的单机电脑的结构作例子,很形象的说明了多服务器环境下的结构,需要应对的问题,看了第一章就爱不释手。
回想代码人生至今,都是写c/s架构的,跨机器调用不是大问题,不过从未涉及过多服务器的场合,中间件也只是听说过,一直没搞清楚到底中间件起到了什么作用。当系统规模大到需要多服务器,甚至多数据库时,怎样的设计才是合理的?
中间件的引入,使得系统的复杂性对于客户端透明,(如果客户端还需要考虑怎么路由到目的服务器,那这个中间件就需要再设计了),这样客户端的代码就可以简化很多,更容易维护。但同时,对于中间件的设计也有很高的要求,至少要满足可扩展性,稳定性就更不用提了。如果说此时的客户端代码是UI界面的话,那么中间件就相当于dll部分,屏蔽中间的复杂性,让UI可以方便的访问数据。
.net这里消息中间件出名的似乎只有msmq,被推荐是.net的最好伙伴很大原因估计是有WCF加持,如果单挑估计和RabbitMQ有一定差距,而RabbitMQ还有人抱怨,可是msmq就一片太平,所以.net的世界和Java有不小的差距。
幸好设计不分语言,虽然很难再跑到Java那边,不过那边的很多设计还是可以借鉴的,比如Spring的很多东西。
《大型网站系统与Java中间件实现》有感的更多相关文章
- 《Google想出了一个决定人员晋升的算法,然后就没有然后了......》有感
Prasad Setty 是 Google People Analytics 团队的副总裁.7 年前 Google 成立的这支团队的职责是收集和利用数据来支撑公司的管理实践.其使命很简单,即基于数据和 ...
- Google想出了一个决定人员晋升的算法,然后就没有然后了......
Google 有点跑偏了,逗死我了~实践一下也好~ Prasad Setty 是 Google People Analytics 团队的副总裁.7 年前 Google 成立的这支团队的职责是收集和利用 ...
- 【团队冲刺总结】一个编码人员的反(tu)思(cao)
消失了半个多月了啊,算算时间,好像确实有近个把月没有好好的写博客来了.我一直很想写博客的,之前有老师问过写博客的动力是什么.我想了想,我觉得可能是我比较喜欢看书吧,不管是专业书还是小说(好吧,我承认, ...
- Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...
- AngularJS下拉列表select在option动态变化之后多出了一个错误项的问题
场景: Select初始化之后,选中select的某个选项 通过AngularJS更新select的选项 错误写法: HTML(使用ng-repeat) <div ng-app="Te ...
- 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?
单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...
- 每一个开发人员都应该有一款自己的App
[谋哥每天一干货] 这篇文章不是鸡汤,是谋哥自己的感悟了. 谋哥近期每日一干货,坚持每天写,才发现这个事情你要是能坚持一年超级难.365天无论刮风下雨.心情好或不好.生病或生气.每天 ...
- VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)
发生情况: 由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...
- 如何在一个div标签里显示出另一个网页? <iframe src=" http://www.baidu.com " width="800px" height="200px" scrolling="no" frameborder="0"> </iframe>
如何在一个div标签里显示出另一个网页? 用在div里用iframe,就像下面的代码 <iframe src=" http://www.baidu.com " width=& ...
- 第三章 用SDK编译出第一个在Linux下的软件界面
第三章 用SDK编译出第一个在Linux下的软件界面 先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下: 代码内容暂时可以先不理解,先让程序跑起来再 ...
随机推荐
- 辗转相除法(GCD)求左旋转字符串
本文写于2017-01-18,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6297874.html 今天在牛客网上做了一道题,题意就是 ...
- MySQL行转列、列转行
一.行转列 有如图所示的表,现在希望查询的结果将行转成列 建表语句如下: CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCRE ...
- json元素顶部插入unshift、尾部插入push、顶部获取shift、尾部获取pop
1)json元素插入 var json=[ //顶部位置 {id:1,name:'B'}, {id:2,name:'C'}, {id:3,name:'D'}, //尾部位置 ] 顶部位置)json.u ...
- SVG路径path的贝塞尔曲线指令
深度好文分享: http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/ ...
- hibernate基本的配置与验证
导入jar包与mysql驱动包 javaBean src/com/crazyit/app/domain/News.java package com.crazyit.app.domain; import ...
- 18.Canny边缘检测
Canny边缘检测算法以Canny的名字命名,其中Canny的目标是找到一个最优的边缘检测算法,其有三种衡量标准: 低错误率:标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报 高定位性:标识出 ...
- java web的MVC框架,el表达式,servlet,jstl表达式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- jQuery中有关each方法的使用
概述: each() 方法规定为每个匹配元素规定运行的函数. 返回 false 可用于及早停止循环,相当于break. 返回 true 可以结束本次循环,相当于continue. 语法: $(sele ...
- 后台List里的数据传到前台表格和下拉列表为什么不显示
传到前台表格和下拉列表我是用<c:forEach做的,百度了很久,仔仔细细对我的代码没有问题,那么到底是为什么不显示呢?! 找了很久啊,最后发现是我没有引入jstl的标签库!居然是因为这个…… ...
- 黑客常用dos-cmd命令
黑客常用命令大全net user heibai lovechina /add 加一个heibai的用户密码为lovechina net localgroup Administrators heibai ...