Architecture

分布式系统的监控

关于分布式系统的监控,转自jppf的文档: "Management and monitoring are important parts of a grid platform. With these features it is possible to observe the health and status of the grid components, and directly or remotely transform their behavior."

分布式架构中系统间使用异步通信的好处

1.性能 a. 降低平均响应时间,提高总体吞量。     这是因为异步通信时,一个系统向另一个系统发出请求后不必等待对方返回即可继续干自己的事。详细的推导可见 http://www.cnblogs.com/chenjianjx/archive/2012/03/27/2420262.html (待续) 2.高可用   a. 单个系统的故障不会立即导致另一个系统的某些功能不可用      同步通信时,如果Provider当机,则Consumer的调用就会立即失败,既而造成Consumer系统中的某些功能不可用;换成异步通信时,如果Provider不可用,Consumer不受影响,因为Consumer只是把消息丢进了消息队列,并没有跟Provider直接交互。 消息队列一般有消息持久化的功能,当Provider恢复时,会收到队列发过来的消息。      当然,如果Provider一直当机,Consumer发出的请求一直得不到处理,Consumer本身的功能可能终究也会出问题,并最终导致不可用。 具体情况取决于具体的业务逻辑。 (待续) 3.软件发布    a. Provider发布重启时,Consumer在短期内不受影响      原因与上面的2.a相同。这里 (待续)

应该研究一下Spring Batch了

这不正是我想要的吗? Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced technical services and features that will enable extremely high-volume and high performance batch jobs through optimization and partitioning techniques. …… The Infrastructure …

应该研究一下Spring Batch了 Read More »

分布式应用 VS 分布式系统

Springsource有个人这样区别了一下:   这种叫法或许也只是他的一家之言。重要的不是究竟应该叫什么,而是我们要意识到这种区别,因为两者在设计上的区别会非常大。

为什么说SOA环境下Service Registry很重要?

为什么说SOA环境下Service Registry很重要? 有了Service Registry,consumer不必通过IP找到provider,而只需通过服务名。但这又有什么好处呢? 个人观点:     开发人员和运维人员不必互相询问和通知了。开发人员不必向运维人员打听某服务器的IP,运维人员如果把某服务转移到了另一台机上,也不必通知开发人员。  也就是说,基于名字的耦合(connascence)会弱于基于网络地址的耦合 另一个好处是方便依赖关系的监控。Service Registry集中地保存了consumer/provider之间的逻辑依赖关系,以及consumer机器和provider机器之间的物理依赖关系。 如果有一个界面,就可以一目了然地监控这些依赖。

模块化及组件化的一些概念

模块化是什么:       In software design, modularity refers to a logical partitioning of the "software design" that allows complex software to be manageable for the purpose of implementation and maintenance. The logic of partitioning may be based on related functions, implementation considerations, data links, or other criteria.    模块化编程的好处:    Modular programming improve maintainability by enforcing …

模块化及组件化的一些概念 Read More »

如何理解“每个组件只应提供单一的API调用入口”

每个组件只应提供单一的API调用入口,这句话的意思是什么? 我的看法: 1. 正解:组件中的每个操作都应该只有一个入口;应用层不能既调用BeanService.getBean(),又调用BeanDAO.getBean(). 原因可见这里。 2. 误解:每个模块只能使用一个类作为API. 像bean-biz.jar这种组件,可以同时提供BeanService作为CRUD、业务逻辑入口,以及BeanSearchService作为搜索查询入口;否则,如果把所有操作都丢给单一的BeanService,那 BeanService 这个类本身的内聚性就很差。 其实,关于“组件中的每个操作都应该只有一个入口”也可以有例外情况。 比如一个缓存客户端 cache-client.jar中,可以同时提供CommonCacheTemplate作为通用的、灵活性高的API,以及SimpleCacheOperations作为最常用的、极其易用(比如可以少传几个参数)的的API。不过,后者必须建立在前者基础上,只作为前者的易用版本来使用,不准附加任何与前者冲突的业务逻辑